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

罐頭魚發表於2020-12-26

概述: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 = ["http://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 https://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,訪問地址:http://IP:3000

預設賬號/密碼:admin/admin

相關文章