1.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 |
![](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