前面我们依次介绍了Influxdb、Grafana的安装和基本使用,这次我们来看看Telegraf的安装与基本使用。Telegraf是InfluxData旗下的数据采集工具,主要用来采集各类服务的信息数据,比如:系统cpu、内存,redis、nginx等服务;跟Influxdb是兄弟产品。
Telegraf、Influxdb、Grafana三者一起共同组成性能监控的三驾马车;数据采集、数据存储、数据展示。除此之外,我们还可以把性能压测数据也一并用这套系统管理起来,完整的性能监控平台的架构是这样的。
今天我们还是主要介绍Telegraf的相关基本信息,它除了可以采集windows和linux的系统资源以及常用服务之外,还可以通过插件扩展来定制自己想要的采集行为,可以说是即强大又灵活。
对于Centos用户,可以用yum安装
yum install telegraf
systemctl start telegraf
systemctl restart telegraf
systemctl status telegraf
或者先下载再安装:
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.11.5-1.x86_64.rpm
sudo yum localinstall telegraf-1.11.5-1.x86_64.rpm
systemctl enable telegraf.service ## systemd服务开机自启动
telegraf -config /etc/telegraf/telegraf.conf # 手动启动
在正式启动之前,需要先进行相关配置,告诉telegraf对哪些数据进行采集,配置文件地址/etc/telegraf/telegraf.conf.修改如下内容:
[[outputs.influxdb]]
urls = ["http://localhost:8086"] # required
database = "telegraf" # required
retention_policy = ""
precision = "s"
timeout = "5s"
username = ""
password = ""
主要是配置一个influxdb的地址和数据库,让telegraf知道把数据存放到哪里。当telegraf服务启动之后,我们就可以去influxdb查看相应数据是否提交成功,成功后再通过Grafana来配置数据展示。
默认telegraf会采集cpu、内存、磁盘的数据信息,下面是采集的数据样例在通过Grafana配置之后的展示效果:
中间的断掉的部分是因为关机了,Telegraf默认采集的数据项非常的多,这里只配置了几个指标值而已。
telegraf的常用的插件有2类:一类是input,一类是output;所谓input就是采集插件,比如:系统cpu、网络。所谓output就是数据存储插件,比如:influxdb、kafka等。
telegraf默认情况下开启的output插件是influxdb,并且默认配置到本机地址,可以根据需要修改。而input插件正如上面所示默认仅开启了cpu、内存等插件,需要使用其它扩展插件就需要手动开启并配置。
配置插件的方式也有两种:一种是直接在默认配置文件中修改,因为它包含了几乎所有支持的插件配置项,只是非默认的插件都被注释掉了;另一种是新生成一个配置文件,并存放在/etc/telegraf/telegraf.d目录下,这样就可以支持多插件配置文件了。
生成一个telegraf配置文件的命令:
# 当前目录下生成一个telegraf的默认配置文件
telegraf config > telegraf.conf
# 当前目录下生成一个包含cpu、内存、磁盘、磁盘io、网络作为输入插件,以及influxdb作为输出插件的配置文件
telegraf --input-filter cpu:mem:disk:diskio:net --output-filter influxdb config > telegraf.conf
除了采集默认的系统数据,telegraf还可以采集mysql、redis、nginx、apache、prometheus等服务,这里以采集nginx服务数据为例,介绍如何配置插件。
首先,确保先有一个nginx的服务,且该ngixn安装时支持http_stub_status_module模块,通过nginx -v可以查看到是否安装了此模块。如果没有安装的话则需要重新编译,因为就是通过该模块来监控nginx的。
如果nginx服务已经带有http_stub_status_module模块,则需要在nginx配置添加对应的请求入口,来返回nginx的状态信息。样例如下:
location /nginx-status {
allow 127.0.0.1; # 允许的IP
deny all;
stub_status on;
access_log off;
}
执行nginx -s reload命令使修改配置生效,再通过curl http://127.0.0.1/nginx-status命令来查看是否能正常获取信息。
接着,新生成一个采集nginx的telegraf配置文件,并存储到/etc/telegraf/telegraf.d目录下:
cd /etc/telegraf/telegraf.d
telegraf --input-filter nginx --output-filter influxdb config > nginx.conf
修改/etc/telegraf/telegraf.d/nginx.conf的内容如下:
[[inputs.nginx]]
# An array of Nginx stub_status URI to gather stats.
urls = ["http://localhost/nginx-status"]
## Optional TLS Config
# tls_ca = "/etc/telegraf/ca.pem"
# tls_cert = "/etc/telegraf/cert.cer"
# tls_key = "/etc/telegraf/key.key"
## Use TLS but skip chain & host verification
# insecure_skip_verify = false
# HTTP response timeout (default: 5s)
response_timeout = "5s"
测试下nginx插件配置文件格式是否正确。
telegraf -config /etc/telegraf/telegraf.d/nginx.conf -input-filter nginx -test
输出内容如下则表示正常:
2019-09-01T14:04:38Z I! Starting Telegraf 1.11.5
> nginx,host=861a6da23d20,port=80,server=localhost accepts=5i,active=1i,handled=5i,reading=0i,requests=5i,waiting=0i,writing=1i 1567346678000000000
最后,我们还需要重启下telegraf服务,让新增的插件配置生效。最后查看nginx监控数据的效果如下:
telegraf是一个非常强大且跨平台,可以说开箱即用的工具,只需简单的部署和配置就能采集到丰富的数据,而且还支持非常方便的扩展。配合influxdb、grafana等工具一起就可以轻松实现性能监控平台搭建。