性能监控平台搭建 — Telegraf安装与简易使用指南

  • 2019 年 10 月 4 日
  • 笔记

前面我们依次介绍了Influxdb、Grafana的安装和基本使用,这次我们来看看Telegraf的安装与基本使用。Telegraf是InfluxData旗下的数据采集工具,主要用来采集各类服务的信息数据,比如:系统cpu、内存,redis、nginx等服务;跟Influxdb是兄弟产品。

Telegraf、Influxdb、Grafana三者一起共同组成性能监控的三驾马车;数据采集、数据存储、数据展示。除此之外,我们还可以把性能压测数据也一并用这套系统管理起来,完整的性能监控平台的架构是这样的。

今天我们还是主要介绍Telegraf的相关基本信息,它除了可以采集windows和linux的系统资源以及常用服务之外,还可以通过插件扩展来定制自己想要的采集行为,可以说是即强大又灵活。

安装

YUM安装

对于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命令来查看是否能正常获取信息。

•active connections – 活跃的连接数量•server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求•reading — 读取客户端的连接数.•writing — 响应数据到客户端的数量•waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

接着,新生成一个采集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等工具一起就可以轻松实现性能监控平台搭建。