概述: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