Telegraf+InfluxDB+Grafana搭建服务器监控平台
tags:网站
个人网站:https://wanghualong.cn/
效果展示
本站服务器状态监控:https://status.wanghualong.cn
前言
要搭建服务器监控平台,总共分三步:
第一步,数据采集;
第二步,数据存储;
第三步,数据可视化。
其中,数据存储连接数据采集与数据可视化,是非常重要的中间环节。本文非常凑巧的选择了时序数据库InfluxDB。(@(滑稽)为什么巧,当然不是因为我只会用这个)
InfluxDB是一款优秀的时间序列数据库,适合存储设备性能、日志、物联网传感器等带时间戳的数据。能轻松处理高写入和高查询负载(数据采集与数据可视化非常常见的场景)。具体介绍请参阅InfluxDB官方文档:https://docs.influxdata.com/influxdb/。
数据采集方面有非常多的选择,你甚至可以自己开发一个。这里为了方便直接选择Influxdata官方出品的采集工具Telegraf ,毕竟是全家桶产品。Telegraf详情介绍:https://docs.influxdata.com/telegraf。
可视化方面选择了超高颜值、功能强大的开源可视化利器Gafana,具体颜值有多高,功能有多强大,本文就不再赘述了,直接上官网:https://grafana.com/grafana。
我甚至还给Grafana做了一下中文的本地汉化:https://github.com/WangHL0927/grafana-chinese。
Grafana从早期版本就对InfluxDB有着完善的支持。
最终平台的方案:
Telegraf(数据采集)+InfluxDB(数据存储)+Grafana(数据可视化)。
搭建实战
InfluxDB与Grafana直接使用官方容器进行部署,方便快捷。服务器需先安装Docker,具体步骤参考本站文章CentOS7安装Docker。
1 部署InfluxDB
docker run -d -p 8086:8086 --name=influxdb influxdb
以上命令dcoker会自动从仓库下载最新版本的influxdb镜像,后台运行一个名为influxdb的容器并映射主机8086端口到容器8086端口。
若想将数据存储到宿主机而非容器内,可使用以下命令启动挂载本地目录到容器内。
docker run -d -p 8086:8086 -v $PWD:/var/lib/influxdb --name=influxdb influxdb
启动InfluxDB容器后,通过http接口访问进行测试。
curl -G http://localhost:8086/query --data-urlencode "q=show databases"
若influxdb运行正常,则会返回如下结果:
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["telegraf"]]}]}]}
influxdb容器管理
docker start influxdb
docker stop influxdb
docker restart influxdb
2 安装Telegraf
下载安装
Telegraf为了方便配置调试,选择直接在宿主机安装。
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.6.3-1.x86_64.rpm
sudo yum localinstall telegraf-1.6.3-1.x86_64.rpm
配置Telegraf
用户可修改Telegraf配置文件进行采集项的配置。配置文件默认位于/etc/telegraf/telegraf.conf
。
在本文方案中,需要配置数据输出项(输出到influxdb),其它项使用telegraf默认即可。
按照示例配置influxdb url、database名称
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
database = "telegraf"
skip_database_creation = false
timeout = "5s"
Telegraf提供的采集内容非常丰富,将相应配置项取消注释并重启Telegraf即可生效。其它更多配置项请参考Telegraf官方文档:https://docs.influxdata.com/telegraf
启动Telegraf
systemctl start telegraf
systemctl stop telegraf
systemctl restart telegraf
systemctl status telegraf
部署Grafana
Grafana同样采用官方docker镜像进行快速部署。
docker run -d -p 3000:3000 --name=grafana grafana/grafana
以上命令docker会拉取最新版grafana镜像,运行名为grafana的容器,并映射宿主机3000端口。
初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000
打开grafana登录页面。
输入默认用户名密码登录(admin)。
![img1](https://www.#.com/imgs/9/7/2/8/8/99eca435c9ebd0ee63f6cc697b0a8b75.jpe)
按照主页向导完成初次配置。
![img2](https://www.#.com/imgs/2/1/1/2/15/31210dc4d93a9aca562641f818ca5fb2.jpe)
1 添加数据源
点击添加数据源,按照下图配置选择influxdb添加一个influxdb数据源。
url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。
InfluxDB Details需填写数据名(默认telegraf)、用户名和密码(默认均为root)。
填写完成后,点击Save&Test
按钮,若访问正常,会出现Data source is working
提示,否则请检查配置内容以及网络(防火墙)。
![img3](https://www.#.com/imgs/8/1/2/2/50/b76e41ae43e82a39414a6fa9c0bea61d.jpe)
![img4](https://www.#.com/imgs/2/2/2/7/5/e50ea7746a020b642f99f832af49a5d3.jpe)
添加仪表板
返回主页,点击添加仪表板按钮添加新仪表板,点击Graph
创建一个Graph Panel。
![img5](https://www.#.com/imgs/0/4/1/3/39/c77cc4a11d23fdd3ae3e4f5be00b3a4b.jpe)
点击标题展开菜单,选择Edit
进入面板编辑。
![img6](https://www.#.com/imgs/9/7/1/2/46/52edf6d9837e30a0d280598724fec6d7.jpe)
选择Metrics
选项卡配置面板数据。
如图示配置可显示一条CPU-total的数据曲线。
![img7](https://www.#.com/imgs/3/3/9/2/66/606ed62f43b22d9d1ed25b5517f95740.jpe)
还可添加多条查询,同时在一个panel显示多条曲线。
![img8](https://www.#.com/imgs/2/5/8/0/93/79faa07025075fa7a0ca7a51faa8f6ca.jpe)
配置完成后点击上方保存按钮保存仪表板。
Grafana详细的使用方法请参考官方文档:http://docs.grafana.org/或本站其它教程。
可以尽情发挥自已创意。
本站Demo:https://status.wanghualong.cn/
默认用户名密码:guest
![img9](https://www.#.com/imgs/3/9/5/0/80/2c0f53a57421d9cfa75345448f8aa90c.jpe)
![img10](https://www.#.com/imgs/1/6/1/7/59/8345a7d7ee628c19badd31c8541ff821.jpe)