Telegraf+Influxdb+Grafana自動化運維監控

概述:Telegraf收集資訊,influxdb時序資料庫存儲數據,grafana平台展示數據,並進行監控告警,組成一個自動化運維監控平台。

一、influxdb

​ InfluxDB是一個由InfluxData開發的開源時序型數據。它由Go寫成,著力於高性能地查詢與存儲時序型數據。InfluxDB被廣泛應用於存儲系統的監控數據,IoT行業的實時數據等場景。

1. 三大特性

  • 時序性(Time Series):與時間相關的函數的靈活使用(諸如最大、最小、求和等);
  • 度量(Metrics):對實時大量數據進行計算;
  • 事件(Event):支援任意的事件數據,換句話說,任意事件的數據我們都可以做操作。

2. 數據模型

概念 MySQL InfluxDB
資料庫 database database
table measurement
column tags(帶索引的,非必須)、fields(不帶索引)、time(唯一主鍵,自動生成的時間列)
row point

3. influxdb時間線

​ InfluxDB中的series是一種數據源的合的概念,在同一個database中,相同retention policy、相同measurement、相同tag的數據屬於一個series集合,標識這條數據來自哪裡,同一個series的數據在物理上按照時間順序排列在一起;

​ 使用命令 show series from tablename; 可以查看錶的series。

4. 系統架構

名稱 概念
database 資料庫
RP(retention policy 數據保留策略) 資料庫級別,非表級別屬性,每個資料庫有多個保留策略,但是只能有一個默認策略
shardgroup 每個shardgroup只存儲指定時間段的數據,不同的shardgroup對應的數據段不會重合;將數據按時間維度進行分區,減少數據查詢掃描,提高查詢效率;influxdb中數據過期刪除的執行粒度就是shardgroup
shard 真正存儲數據

5. influxdb的安裝

測試機器:10.121.x.x

5.1下載tar包,解壓即可用,配置文件基本上不需要改

tar -xzvf influxdb-1.7.8_linux_amd64.tar.gz

得到以下目錄結構

5.2 創建influxdb用戶

useradd influxdb -s /sbin/nologin

5.3 創建幾個目錄,並授權

mkdir /var/lib/influxdb/   /var/log/influxdb/  /var/run/influxdb/

chown influxdb.influxdb /var/lib/influxdb/ 

chown influxdb.influxdb /var/log/influxdb/

chown influxdb.influxdb /var/run/influxdb/`

5.4 將配置文件複製到/etc/influxdb/influxdb.conf,使用默認配置即可

cp -r influxdb/etc/influxdb /etc/

默認配置:
[meta]
  dir = "/var/lib/influxdb/meta"
[data]
  dir = "/var/lib/influxdb/data"
  wal-dir = "/var/lib/influxdb/wal"
  series-id-set-cache-size = 100

5.5 將啟動文件複製到/etc/init.d/

cp  influxdb/usr/lib/influxdb/scripts/init.sh  /etc/init.d/influxdb

chmod 755  /etc/init.d/influxdb

5.6 將二進位文件複製到/usr/bin

cp influxdb/usr/bin/* /usr/bin/

5.7 啟動

service influxdb start

6、使用方法

6.1 資料庫的基本操作

create database name1;

show databases;

use name1;

show measurements;

drop database name1;

show series from table1;

select * from table1 limit 10;

6.2 數據保留策略

Retention Policies – 數據保留策略是用來定義數據的存放時長,或者是保留某一時間段的數據。每個資料庫可以有多個數據保留策略,但只能有一個默認策略。

創建保留策略語法:

create retention policy <retention_plocy_name> on <database_name> duration <duration> replication <n> [shard duration <duration>] [deafult]

<retention_plocy_name> 保留策略的名稱

<database_name>  為哪個資料庫創建的策略

<duration> 該保留策略對應的數據過期時間

replication 副本因子

shard duration 分片組的默認時長

[deafult] 是否為默認策略

查看保留策略語法

show retention policies on database_name;

修改保留期

alter retention policy "retention_plocy_name" on database_name duration 15d

刪除保留期

drop retention policy "influx_retention_name" on database_name

6.3 表的增刪改查

查看錶

show measurements;

插入操作

insert weather,altitude=1000,area=北  tem=11,humi=-4

insert 表名(不存在則自動創建),tags1,tags2   fileds1,fileds

刪除表

drop measurement table_name;

6.4 設置時間顯示格式

precision rfc3339(Internet標準時間格式)

7. 用戶操作

顯示用戶

show users;

創建用戶

create user influx_user with passwrod 'xxxx';

管理員用戶

create user "admin"  with password "xxxx" with all privileges;

修改用戶密碼

set password for influx_user='xxxx';

刪除用戶

drop user influx_user;

8. 用戶許可權

授予所有庫的許可權

grant all privileges to influx_user;

針對某個庫的所有許可權

grant all privileges on influxdb to influx_user;

撤銷許可權

revoke all privileges from influx_user;

開啟用戶登錄認證,需在配置文件的[http]模組中開啟

[http]

auth-enabled=true

登錄方法

bin/influx (無密碼)

bin/influx -username  influx_user -password xxxx (有密碼)

二、Telegraf

​ telegraf是一個go編寫的代理程式,可以收集系統和服務的統計數據,並寫入到influxdb資料庫。

1. telegraf metirc

是用於在處理期間對數據建模的內部表示。這些指標完全基於influxdb的數據模型,主要包含四個組件:

度量名稱(measurement)

標籤(tags)

欄位(fields)

時間戳(time)

2. 為什麼要用telegraf

  • 可以採集多種組件,自動採集上報數據,降低數據獲取難度

  • 配置簡單

  • 按照時間序列採集數據,與influxdb完美結合

  • 輕量級,佔用記憶體小

3. telegraf 搭建

測試機器 10.121.x.x

3.1 下載解壓安裝包

tar -xzvf telegraf-1.15.3_linux_amd64.tar.gz

目錄結構

3.2 修改配置文件

找到配置文件中的以下模組,添加influxdb的連接配置資訊:

[[outputs.influxdb]]

urls = ["//10.121.7.70:8086"]

database="telegraf" #influxdb創建的資料庫

retention_policy="" #如果有的話

username="" #如果有的話

password="" #如果有的話

3.3 啟動服務

bin/telegraf --config etc/telegraf/telegraf.conf

會自動收集資訊並自動在influxdb的telegraf資料庫中創建表,插入數據

3.4 可參考influxdb使用init.sh做成服務,配置開機自啟動,也方便後續寫腳本自動化部署。

創建用戶和創建目錄

useradd  -s /sbin/nologin  telegraf

mkdir /var/log/telegraf/  /var/run/telegraf

chown telegraf.telegraf  /var/log/telegraf

chown telegraf.telegraf /var/run/telegraf

拷貝配置文件和可執行文件,啟動腳本

cp /root/telegraf/telegraf-1.15.3/usr/bin/telegraf /usr/bin/

cp -r /root/telegraf/telegraf-1.15.3/etc/telegraf /etc/

cp /root/telegraf/telegraf-1.15.3/usr/lib/telegraf/scripts/init.sh /etc/init.d/telegraf

啟動

service telegraf start

配置開機自啟動

chkconfig telegraf on

啟動默認收集的資訊

Loaded inputs: kernel mem processes swap system cpu disk diskio

3.5 需要收集什麼資訊,input的配置可以參考以下鏈接

三、Grafana

​ Grafana是一個跨平台的開源的度量分析和可視化工具,可以通過將採集的數據查詢然後可視化的展示,並及時通知。它主要有以下六大特點:

序號 項目 特性
1 展示方式 快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日誌,官方庫中具有豐富的儀錶盤插件
2 數據源 Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等
3 通知提醒 以可視方式定義指標的警報規則,Grafana將不斷計算並發送通知,在數據達到閾值時通過郵件等方式通知
4 混合展示 在同一圖表中混合使用不同的數據源,可以基於每個查詢指定數據源,甚至自定義數據源
5 注釋 使用來自不同數據源的豐富事件注釋圖表,將滑鼠懸停在事件上會顯示完整的事件元數據和標記
6 過濾器 Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的所有查詢

1. tar包安裝

1.1 下載安裝包並解壓

tar -xzvf grafana-7.2.0.linux-amd64.tar.gz

1.2 啟動

./bin/grafana-server web &

2. rmp方式安裝

​ grafana建議使用rpm安裝,因grafana組件較多,使用rpm安裝標準化,方便配置和管理,不存儲數據,因此也不用擔心會過多佔用空間。

2.1 下載並安裝

wget //dl.grafana.com/oss/release/grafana-7.3.6-1.x86_64.rpm
sudo yum install grafana-7.3.6-1.x86_64.rpm

2.2 設置開機自啟動等啟動命令

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server

2.3 安裝資訊

項目 詳細資訊
二進位文件 /usr/sbin/grafana-server
init.d 腳本 /etc/init.d/grafana-server
環境變數文件 /etc/sysconfig/grafana-server
配置文件 /etc/grafana/grafana.ini
啟動項 grafana-server.service
日誌文件 /var/log/grafana/grafana.log
默認配置的sqlite3資料庫 /var/lib/grafana/grafana.db

2.4 Grafana 訪問

默認埠是3000,訪問地址://IP:3000

默認帳號/密碼:admin/admin