近期須要搭建一套服務器性能數據監控平臺,因此本次考慮基於Telegraf做爲採集數據源的工具,集成使用influxdb存儲數據,最後Grafana展現圖表的方式,來創建這個監控平臺。node
docker的安裝說明: Centos7 下 InfluxDB 從安裝開始到入門git
宿主機直接安裝說明:github
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.6.x86_64.rpm
sudo yum localinstall influxdb-1.7.6.x86_64.rpm -y
service influxdb start
service influxdb status
複製代碼
docker的安裝說明: Grafana使用docker安裝運行docker
宿主機直接安裝說明:shell
wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
sudo yum localinstall grafana-5.4.2-1.x86_64.rpm -y
service grafana-server start
service grafana-server status
複製代碼
我前面寫過關於安裝influxdb、grafana的文章,若是不清楚能夠訪問上面的兩個篇章。下面主要就是講解Telegraf的安裝以及配置。數據庫
Telegraf是一個插件驅動的服務器代理,用於收集和報告指標,是TICK堆棧的第一部分。Telegraf具備直接從其運行的系統中提取各類指標的插件,從第三方API提取指標,甚至經過statsd和Kafka消費者服務監聽指標。它還具備輸出插件,可將指標發送到各類其餘數據存儲,服務和消息隊列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。centos
如下是Telegraf目前支持的一些功能,使其成爲指標收集的絕佳選擇。緩存
Telegraf支持不少系統進行安裝,本篇章主要介紹以centos7系統進行部署安裝。bash
主要使用yum的安裝方式,簡單便捷。
要使用yum安裝,首先根據官網文檔的介紹,配置一下yum源先吧,配置以下:
[root@server02 yum.repos.d]# pwd
/etc/yum.repos.d
[root@server02 yum.repos.d]#
[root@server02 yum.repos.d]# cat influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
[root@server02 yum.repos.d]#
複製代碼
配置完了yum源以後,執行一下
yum makecache
更新一下yum的緩存。
好了,下一步就開始使用yum來安裝看看。
sudo yum install -y telegraf
sudo service telegraf start
其實使用yum源下來rpm的網速,我我的感受不是很快,下載一個69M的rpm文件要五六分鐘。 我的習慣將其rpm提早下載,而後在本地安裝,以下:
# 下載rpm安裝包
yum install telegraf -y --downloadonly --downloaddir=/opt
# 進入下載的目錄進行安裝
cd /opt/
# 根據下載好的rpm包進行本地化yum安裝
yum localinstall telegraf-1.12.5-1.x86_64.rpm -y
複製代碼
啓動服務
systemctl start telegraf
[root@server02 opt]# systemctl start telegraf
[root@server02 opt]# systemctl status telegraf
● telegraf.service - The plugin-driven server agent for reporting metrics into InfluxDB
Loaded: loaded (/usr/lib/systemd/system/telegraf.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-11-18 14:09:26 CST; 5s ago
Docs: https://github.com/influxdata/telegraf
Main PID: 10963 (telegraf)
CGroup: /system.slice/telegraf.service
└─10963 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
Nov 18 14:09:26 server02 systemd[1]: Started The plugin-driven server agent for reporting metrics into InfluxDB.
Nov 18 14:09:26 server02 systemd[1]: Starting The plugin-driven server agent for reporting metrics into InfluxDB...
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Starting Telegraf 1.12.5
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded inputs: mem processes swap system cpu disk diskio kernel
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded aggregators:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded processors:
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Loaded outputs: influxdb
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! Tags enabled: host=server02
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"server02", Flush Interval:10s
Nov 18 14:09:26 server02 telegraf[10963]: 2019-11-18T06:09:26Z W! [outputs.influxdb] when writing to [http://localhost:8086]: database "" creation failed: Post ...ion refused
Hint: Some lines were ellipsized, use -l to show in full.
[root@server02 opt]#
複製代碼
從status打印出來的信息: /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
知道配置文件的路徑 /etc/telegraf/telegraf.conf
。
那麼下面來繼續看看如何將telegraf
採集的度量數據寫入influxDB
中。
# 使用curl的方式查詢influxdb的數據庫
[root@server02 ~]# curl -G http://localhost:8086/query --data-urlencode "q=show databases"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["telegraf"],["_internal"]]}]}]}
[root@server02 ~]#
# 登錄influxdb的客戶端
[root@server02 ~]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
# 查詢全部數據庫
> show databases;
name: databases
name
----
telegraf
_internal
>
# 使用telegraf數據庫
> use telegraf;
Using database telegraf
>
# 查看telegraf數據庫的表
> show measurements;
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
>
# 查看錶字段
> SHOW FIELD KEYS
name: cpu
fieldKey fieldType
-------- ---------
usage_guest float
usage_guest_nice float
usage_idle float
usage_iowait float
usage_irq float
usage_nice float
usage_softirq float
usage_steal float
usage_system float
usage_user float
name: disk
fieldKey fieldType
-------- ---------
free integer
inodes_free integer
inodes_total integer
inodes_used integer
total integer
used integer
used_percent float
# 查詢cpu的使用空閒率
> SELECT usage_idle FROM cpu WHERE cpu = 'cpu-total' LIMIT 5
name: cpu
time usage_idle
---- ----------
1574057380000000000 79.518072288706
1574057390000000000 98.49548645574282
1574057400000000000 98.69608826588123
1574057410000000000 97.8957915834375
1574057420000000000 98.50000000558794
複製代碼
能夠從上面查看influxdb的數據得知,若是influxdb沒有設置特殊的帳號認證等信息,telegraf默認就能夠直接將數據寫入本地的influxdb中。
可是若是influxdb不是安裝在本地,或者修改了端口號等配置,telegraf該怎麼配置呢?
Telegraf的配置文件在Centos7存儲路徑:
Linux debian and RPM packages: /etc/telegraf/telegraf.conf
複製代碼
修改配置文件能夠直接修改默認已有的配置文件,也能夠直接本身建立一個配置文件,以下:
telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf
複製代碼
本次示例只配置influxdb url、database名稱,以下:
vim /etc/telegraf/telegraf.conf
複製代碼
搜索outputs.influxdb
以下:
配置完畢以後,重啓Telegraf,查看influxdb的數據庫是否使用了另外一個?
# 重啓telegraf
[root@server02 telegraf.d]# service telegraf restart
# 登錄influxdb
[root@server02 telegraf.d]# influx
Connected to http://localhost:8086 version 1.7.6
InfluxDB shell version: 1.7.6
Enter an InfluxQL query
# 查看全部數據庫,能夠看到增長了my_telegraf數據庫了。
> show databases;
name: databases
name
----
telegraf
_internal
my_telegraf
>
> use my_telegraf;
Using database my_telegraf
>
> show measurements;
name: measurements
name
----
cpu
disk
....
>
複製代碼
能夠安裝配置已經建立了一個新的數據庫示例my_telegraf,下面來使用grafana進行圖表展現。
初次啓動,grafana會建立數據庫,時間稍長,稍後便可訪問http://localhost:3000打開grafana登陸頁面。 輸入默認用戶名密碼登陸(admin/admin)。
輸入admin/admin 以後,會轉如設置新密碼的頁面。
點擊添加數據源,按照下圖配置選擇influxdb添加一個influxdb數據源。
url需配置成正確的宿主機ip和端口(防火牆需放行8086),若不想暴露數據庫端口,可換成influxdb容器的ip地址(需自行進入容器查看,容器重啓後可能會發生變化)避免數據庫暴露至公網。
InfluxDB Details需填寫數據名(默認telegraf,這裏我修改成my_telegraf)、用戶名和密碼(默認均爲空)。
填寫完成後,點擊Save&Test按鈕,若訪問正常,會出現Data source is working提示,不然請檢查配置內容以及網絡(防火牆)。
這裏我是使用默認最簡單的配置,固然密碼那些能夠自行配置添加上。
返回主頁Home,點擊添加儀表板按鈕添加新儀表板,點擊Graph建立一個Graph Panel。
點擊標題展開菜單,選擇Edit進入面板編輯。
選擇Metrics選項卡配置面板數據。
如圖示配置可顯示一條CPU-total的數據曲線。
配置完成後點擊上方保存按鈕保存儀表板。
Grafana詳細的使用方法請參考官方文檔:docs.grafana.org/或本站其它教程。
在上面已經說明了如何去自定義儀表的方式,下面來看看怎麼使用官網提供的模板。
官方看板模板庫:grafana.com/dashboards
導入以後的呈現效果以下:
這個效果已經展現得很棒了!還有更加多的模板提供,大夥就各自去嘗試吧。