本文所使用的工具为如下:
Telegraf「数据采集」
InfluxDB「数据存储」
Grafana「数据可视化」
一般的我们如果需要搭建服务器监控平台,需要去读取服务器实时的内存信息,CPU状态等等,就正如我们上一篇使用python从零搭建服务器监控系统一样。如果大家没看过之前的那篇文章,推荐大家去看看。里面有搭建监控系统的整个思路。总的来说就是数据采集,数据存储,数据可视化这三个方面。
这次我们使用的是Influxdata公司提供的全家桶。Telegraf、InfluxDB、Grafana。
Telegraf是专门用来采集数据的,在这里我们也有自己采集数据的办法(大家还记得psutils吗?),这里我们不再过多赘述。
InfluxDB是一款时间序列数据库,用来存储log日志等这些有时间信息的数据。
Grafana这就是好看的原因了,毕竟界面都在这写的好好的~https://grafana.com/grafana
这里我们使用Docker去快速搭建环境,如果你Docker还没装的话,可以参照Docker入门这篇文章。
Telegraf「数据采集」
首先我们使用Docker去安装InfluxDB:
docker run -d -p 8086:8086 --name=influxdb influxdb
dcoker会自动从仓库下载最新版本的influxdb镜像,后台运行一个名为influxdb的容器并映射主机8086端口到容器8086端口。
若想将数据存储到宿主机而非容器内,可使用以下命令启动挂载本地目录到容器内。
# $pwd为当前工作目录,可替换为其它宿主机目录
docker run -d -p 8086:8086 -v $PWD:/var/lib/influxdb --name=influxdb influxdb
然后我们访问这个接口:
curl -G http://localhost:8086/query --data-urlencode "q=show databases"
能收到以下这样的结果就证明我们运行成功了
关于我们如何启动容器我们之前在docker那个章节有讲过,启动暂停重启:docker start XXX、docker stop XXX、docker restart XXX。
我们现在启动influxdb
InfluxDB「数据存储」
下面我们来安装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的配置文件(/etc/telegraf/telegraf.conf)来配置它数据输出至influxdb。
vim /etc/telegraf/telegraf.conf
打开上面四行注释
对于telegraf,我们可以使用systemctl指令启动和关闭telegraf:
# 启动
systemctl start telegraf
# 停止
systemctl stop telegraf
Grafana「数据可视化」
最后一步使用docker安装grafana:
docker run -d -p 3000:3000 --name=grafana grafana/grafana
初次启动,grafana会创建数据库,时间稍长,稍后即可访问:
http://localhost:3000
打开grafana登录页面。
输入默认用户名密码登录(admin)
你需要自己创建自己的用户名和密码。
添加数据源:
配置:
url需配置成正确的宿主机ip和端口(防火墙需放行8086),若不想暴露数据库端口,可换成influxdb容器的ip地址(需自行进入容器查看,容器重启后可能会发生变化)避免数据库暴露至公网。
InfluxDB Details需填写
数据库名:telegraf
用户名:root
密码:root
下面要回到主页创建面板:
(因为这个机器没怎么使用,所以CPU的占用率会比较低)
当然,我们也可以设置预警信息,当cpu使用超过百分之多少的时候报警:
我们看一下设置好使用后的效果:
怎么样/看起来是不是很炫酷?所有的数据都一目了然。你也来试试吧!记住,他们是Influxdata全家桶!