第一部分 Telegraf 部署和配置
Telegraf 是實現 數據采集 的工具。Telegraf 具有內存占用小的特點,通過插件系統開發人員可輕松添加支持其他服務的擴展。
在平台監控系統中,可以使用 Telegraf 采集多種組件的運行信息,而不需要自己手寫腳本定時采集,大大降低數據獲取的難度;且 Telegraf 配置極為簡單,只要有基本的 Linux 基礎即可快速上手。Telegraf 按照時間序列采集數據,數據結構中包含時序信息,借助 Influxdb 可以針采集得到的數據完成各種分析計算操作。
Step 1 下載RPM文件
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.8.3-1.x86_64.rpm
Step 2 yum 安裝已下載的RPM文件
yum localinstall telegraf-1.8.3-1.x86_64.rpm
Step 3 啟動服務
service telegraf start
補充說明:
1.數據的收集項的定義和收集后數據保存到什么地方都是通過conf文件決定。用戶可修改Telegraf配置文件進行采集項的配置,配置文件默認位於/etc/telegraf/telegraf.conf
。
2.Telegraf有四種類型的插件
插件類型 | 功能描述 |
輸入插件(Inputs) | 收集各種時間序列性指標,包含各種系統信息和應用信息的插件。 |
處理插件(Process) | 當收集到的指標數據流要進行一些簡單處理時,比如給所有指標添加、刪除、修改一個Tag。只是針對當前的指標數據進行。 |
聚合插件(Aggregate) | 聚合插件有別於處理插件,就在於它要處理的對象是某段時間流經該插件的所有數據(所以,每個聚合插件都有一個設置,只會處理時間段內的數據),比如取最大值、最小值、平均值等操作。 |
輸出插件(Outputs) | 收集到的數據,經過處理和聚合后,輸出到數據存儲系統,可以是各種地方,如:文件、InfluxDB、各種消息隊列服務等等。 |
3.https://github.com/influxdata/telegraf 中 Input Plugins 部分 有對各個系統、應用、服務的監控項配置,我們可以直接添加到既有的conf文件中。
Output Plugins部分是對收集數據存放地址的設置。
4.可以同時將數據保存到多種類型的數據庫中。下面是將收集的數據保存到InfluxDB中的設置。
5.根據需要(服務器的角色/監控需要)重新生成 telegraf.conf 文件,例如,監控項為cpu,輸出的數據為influxdb. (再次強調telegraf服務默認的配置文件在/etc/telegraf/下)
telegraf --input-filter cpu --output-filter influxdb config > telegraf.conf
6.telegraf收集mysql數據庫的信息,需要 Select、SUPER、PROCESS ,否則提示以下錯誤。
2019-06-26T05:56:50Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation 2019-06-26T05:57:00Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation 2019-06-26T05:57:10Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation 2019-06-26T05:57:20Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation 2019-06-26T05:57:30Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation 2019-06-26T05:57:40Z E! [inputs.mysql]: Error in plugin: Error 1227: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation
第二部分 InfluxDB的安裝與部署
InfluxDB 是實現 數據存儲 的工具。InfluxDB是一款優秀的時間序列數據庫,適合存儲設備性能、日志、物聯網傳感器等帶有時間戳的數據,可以輕松處理高寫入和高查詢負載(數據采集與數據可視化非常常見的場景)。
InfluxDB有三大特性:
-
時序性(Time Series):與時間相關的函數的靈活使用(例如最大、最小、求和等);
-
度量(Metrics):對實時大量數據進行計算;
-
事件(Event):支持任意的事件數據,換句話說,任意事件的數據我們都可以做操作。
具體的安裝過程如下:
Step 1 下載InfluxDB的RPM文件
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm
Step 2 安裝已下載的文件
yum localinstall influxdb-1.7.6.x86_64.rpm
Step 3 啟動服務
systemctl start influxdb ----啟動服務 systemctl status influxdb ----查看服務狀態
Step 4 登入驗證
補充說明:
1.默認生成的influxdb.conf 位於 /etc/influxdb/influxdb.conf。
2.幾個默認的數據文件路徑需注意,或適當調整
數據文檔 | 文檔路徑 | 解釋 | 說明 |
meta | /var/lib/influxdb/meta | Controls the parameters for the Raft consensus group that stores metadata about the InfluxDB cluster. | 存放數據庫元數據。 |
data | /var/lib/influxdb/data | The directory where the TSM storage engine stores TSM files. | 存放最終存儲的數據,文件以.tsm結尾。 |
wal | /var/lib/influxdb/wal | The directory where the TSM storage engine stores WAL files. | 存放數據庫元數據。 |
3.常用的一些命令
命令 | 實現功能 |
show databases | 顯示所有數據庫 |
use XXXX | 轉到某個數據庫下面 |
show measurements | 顯示當前庫下的所有表 |
select * from "XXXXX" | 查詢指定表的數據;表名中間有點號時,表名雙引號 |
show users | 查看賬號 |
SHOW TAG KEYS FROM "measurement_name" | 查看某measurement對應的Tag |
SHOW TAG VALUES FROM "measurement_name" WITH KEY = "tag_key" | 查看measurement Tag對應的值 |
創建賬號的語法格式;
create user “username”/username with password ‘password’ with all privileges
注意;賬號支持兩種書寫方式:英文雙引號括起來、直接賬號字符串,而密碼則必須以英文單引號括起來
4. measurement,tags,fields,points與普通的關系型數據庫的對應:
InfluxDB對象 | 關系型數據庫對象 |
measurement | table |
tags | 可以建立索引的列;tag 是可選的,不過寫入數據時最好加上 tag,因為它可以被索引。tag 的類型只能是字符串。 |
fields | 列 |
points | 行數據 |
5.InfluxDB如果需要開啟登入認證,請在/etc/influxdb/influxdb.conf 文件中的[http]部分,將以下兩個參數設置為ttue.
# Determines whether HTTP endpoint is enabled. enabled = true ............................................ # Determines whether user authentication is enabled over HTTP/HTTPS. auth-enabled = true
InfluxDB開啟登錄認證后,同時需要修改一下telegraf.conf文件,修改參數在[[outputs.influxdb]] 部分。
Grafana 部分也要注意,如果是先設置了Grafana,后設置了InfluxDB賬號密碼,這時候也去修改Grafana中的數據源,添加賬號密碼;否則web界面一直要求輸入登錄。
5.特色函數
influxdb函數分為聚合函數,選擇函數,轉換函數,預測函數等。除了與普通數據庫一樣提供了基本操作函數外,還提供了一些特色函數以方便數據統計計算。
函數類別 | 函數 | 功能 |
聚合函數 | FILL() | 當沒有數值時按照FILL函數填充 |
INTEGRAL(field_key, unit) |
計算數值字段值覆蓋的曲面的面積值並得到面積之和。 | |
SPREAD(field_key) |
計算數值字段的最大值和最小值的差值。 | |
STDDEV(field_key) |
計算字段的標准差。 | |
MEAN() | mean(field_key)求該范圍內數據的平均值(注意:這是依據series來計算。 | |
MEDIAN() | MEDIAN求中位數 | |
選擇函數 | SAMPLE(field_key, N) |
隨機返回field key的N個值。如果語句中有GROUP BY time() ,則每組數據隨機返回N個值。 |
PERCENTILE(field_key, N) |
選取某個字段中大於N%的這個字段值。 | |
FIRST() | 返回一個字段中最老的取值。 | |
LAST() | 返回一個字段中最新的取值。 | |
TOP() | 返回一個字段中最大的N個值,字段類型必須是長整型或float64類型。 | |
BOTTOM() | 返回一個字段中最小的N個值。字段類型必須是長整型或float64類型。 | |
MAX() | 返回一個字段中的最大值。該字段類型必須是長整型,float64,或布爾類型。 | |
MIN() | 返回一個字段中的最小值。該字段類型必須是長整型,float64,或布爾類型。 | |
轉換函數 | DERIVATIVE() | 返回一個字段在一個series中的變化率.nfluxDB會計算按照時間進行排序的字段值之間的差異,並將這些結果轉化為單位變化率。其中,單位可以指定,默認為1s。 |
DIFFERENCE() | 返回一個字段中連續的時間值之間的差異。字段類型必須是長整型或float64。 | |
預測函數 | HOLT_WINTERS() | 在許多重要的領域,需要基於時間序列進行預測,此為霍爾特-溫特斯法。 |
第三部分 Grafana的安裝與部署
Grafana 是實現 數據展示(數據可視化) 的工具。 Grafana是一個跨平台的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示,並及時通知。
它主要有以下六大特點:
1、展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式;
2、數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算並發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知;
4、混合展示:在同一圖表中混合使用不同的數據源,可以基於每個查詢指定數據源,甚至自定義數據源;
5、注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;
6、過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的所有查詢。
Step 1 下載RPM安裝包
wget https://dl.grafana.com/oss/release/grafana-6.2.4-1.x86_64.rpm
Step 2 安裝
yum localinstall grafana-6.2.4-1.x86_64.rpm
Step 3 服務開啟
systemctl start grafana-server.service ----開啟服務 systemctl status grafana-server.service ----服務狀態查看
Step 4 驗證
安裝后,默認端口為 3000。 可通過瀏覽器直接登入訪問 :http://172.XXX.XXX.XXX:3000
Step 5 Grafana 關於 收集到的數據監控顯示
(1) 設置數據源,
注意,數據源類型需選擇 InfluxDB
(2) 可以設置一個Folder,將同類的dashboards 放到一起
(3)設置新的監控項
Format AS 欄位,請選擇【Time Series】,不可以選擇【Table】
總結:提前預防和判斷並保證風險可控,俗稱”防火“。防火更能看出本事,而”救火“只是能力。