天天看點

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

第一部分 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中的設定。

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

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
      
systemctl start influxdb    ----啟動服務
systemctl status influxdb ----檢視服務狀态
      

Step 4 登入驗證

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

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]] 部分。

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

 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) 設定資料源,

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

 注意,資料源類型需選擇 InfluxDB 

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

(2) 可以設定一個Folder,将同類的dashboards 放到一起

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

(3)設定新的監控項

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

 Format AS 欄位,請選擇【Time Series】,不可以選擇【Table】

通過 Telegraf + InfluxDB + Grafana 快速搭建監控體系的詳細步驟

總結:提前預防和判斷并保證風險可控,俗稱”防火“。防火更能看出本事,而”救火“隻是能力。

繼續閱讀