1. 程式人生 > >Telegraf+Influxdb+Grafana自動化運維監控

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 | ![](https://img2020.cnblogs.com/blog/1746318/202012/1746318-20201226171104316-1384527240.png) #### 3. influxdb時間線 ​ InfluxDB中的series是一種資料來源的合的概念,在同一個database中,相同retention policy、相同measurement、相同tag的資料屬於一個series集合,標識這條資料來自哪裡,同一個series的資料在物理上按照時間順序排列在一起; ​ 使用命令 show series from tablename; 可以查看錶的series。 #### 4. 系統架構 ![](https://img2020.cnblogs.com/blog/1746318/202012/1746318-20201226171122098-701120368.png) | **名稱** | **概念** | | --------------------------------- | ------------------------------------------------------------ | | 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 ``` 得到以下目錄結構 ![](https://img2020.cnblogs.com/blog/1746318/202012/1746318-20201226171153341-316137399.png) **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` ![](https://img2020.cnblogs.com/blog/1746318/202012/1746318-20201226171213954-670749621.png) #### 6. 使用方法 **6.1 資料庫的基本操作** ```sql 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