需求
近期需要搭建一套服务器性能数据监控平台,所以本次考虑基于Telegraf作为采集数据源的工具,集成使用influxdb存储数据,最后Grafana展示图表的方式,来建立这个监控平台。
监控平台拓扑
安装influxdb
- docker的安装说明:Centos7 下 InfluxDB 从安装开始到入门
- 宿主机直接安装说明:
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
安装Grafana
- docker的安装说明:Grafana使用docker安装运行
- 宿主机直接安装说明:
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
参考文献
Telegraf 1.9文档
介绍
Telegraf是一个插件驱动的服务器代理,用于收集和报告指标,是TICK堆栈的第一部分。Telegraf具有直接从其运行的系统中提取各种指标的插件,从第三方API提取指标,甚至通过statsd和Kafka消费者服务监听指标。它还具有输出插件,可将指标发送到各种其他数据存储,服务和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。
主要特点
以下是Telegraf目前支持的一些功能,使其成为指标收集的绝佳选择。
- 使用GO语言编写,编译成单个二进制文件,没有外部依赖项。
- 极小的内存占用
- 插件系统允许轻松添加新的输入和输出。
- 众所周知的服务和API存在于许多流行服务的插件中。
安装介绍
Telegraf支持很多系统进行安装,本篇章主要介绍以centos7系统进行部署安装。
主要使用yum的安装方式,简单便捷。
配置yum源
要使用yum安装,首先根据官网文档的介绍,配置一下yum源先吧,配置如下:
代码语言:javascript复制[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来安装看看。
执行使用yum进行安装以及启动服务
sudo yum install -y telegrafsudo service telegraf start
其实使用yum源下来rpm的网速,我个人感觉不是很快,下载一个69M的rpm文件要五六分钟。个人习惯将其rpm提前下载,然后在本地安装,如下:
代码语言:javascript复制# 下载rpm安装包
yum install telegraf -y --downloadonly --downloaddir=/opt
# 进入下载的目录进行安装
cd /opt/
# 根据下载好的rpm包进行本地化yum安装
yum localinstall telegraf-1.12.5-1.x86_64.rpm -y
代码语言:javascript复制启动服务
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
中。
查看telegraf的默认配置下,influxdb当前的写入数据
代码语言:javascript复制# 使用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该怎么配置呢?
设置配置文件指定influxdb
Telegraf的配置文件在Centos7存储路径:
代码语言:javascript复制Linux debian and RPM packages: /etc/telegraf/telegraf.conf
修改配置文件可以直接修改默认已有的配置文件,也可以直接自己创建一个配置文件,如下:
代码语言:javascript复制telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf
本次示例只配置influxdb url、database名称,如下:
代码语言:javascript复制vim /etc/telegraf/telegraf.conf
搜索outputs.influxdb
如下:
配置完毕之后,重启Telegraf,查看influxdb的数据库是否使用了另一个?
代码语言:javascript复制# 重启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
初次启动,grafana会创建数据库,时间稍长,稍后即可访问http://localhost:3000打开grafana登录页面。输入默认用户名密码登录(admin/admin)。
输入admin/admin 之后,会转入设置新密码的页面。
添加influxdb数据源
点击添加数据源,按照下图配置选择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详细的使用方法请参考官方文档:http://docs.grafana.org/或本站其它教程。
下载官网的仪表
在上面已经说明了如何去自定义仪表的方式,下面来看看怎么使用官网提供的模板。
官方看板模板库:https://grafana.com/dashboards
选择需要下载的看板模板
下载看板模板 https://grafana.com/grafana/dashboards/79
Grafana导入模板
导入之后的呈现效果如下:
这个效果已经展示得很棒了!还有更加多的模板提供,大伙就各自去尝试吧。
最后展示其他几种模板
https://grafana.com/grafana/dashboards/10581