利用 Telegraf 进行简单的系统监控

InfluxData 除了广为人知的 InfluxDB 之外,还有几个其他的产品,合称 TICK:

  • Telegraf:数据采集
  • InfluxDB:数据存储
  • Chronograf:数据展现
  • Kapacitor:数据分析、告警

在翻看 InfluxDB 的时候偶然发现了这个东西,虽然 Tick 四兄弟捆起来也不够看,不过 Telegraf 足够小巧,而且自动化的可能性更大,更符合目前的做事风格,所以就学习一下。

官宣: The plugin-driven server agent for collecting & reporting metrics.

所以 Telegraf 主要是一个框架,由数据输入、处理、输出三大类插件完成各种功能。Github 的 README.md 中列出了主要插件:https://github.com/influxdata/telegraf。总的来说还是比较丰富的,下面的操作将利用简单的输入插件结合 InfluxDB 输出插件完成一个初步的指标收集过程。

安装

CentOS

生成如下的 repo 文件:

[influxdb]
name = InfluxDB Repository - RHEL $releasever
baseurl = https://repos.influxdata.com/rhel/$releasever/$basearch/stable
enabled = 1
gpgcheck = 0

yum install -y telegraf 即可完成安装。

Docker

docker pull telegraf

配置

yum 安装后在 /etc/telegraf 下会生成一个 telegraf.conf 文件。

配置文件中可以使用 “$ENV_ITEM” 的形式使用环境变量。

global_tags

这里记录的内容将作为 Tags 保存到 InfluxDB 的每个 Item 中。

agent

这一节内容是数据搜集服务的行为定义。这里暂时无需进行改动

outputs.influxdb

这里用于定义写入的 InfluxDB。

urls = ["http://localhost:8086"]
database = "telegraf"
timeout = "5s"
username = "telegraf"
password = "abcde!@#$%"

urls 参数是一个数组,代表一个集群,如果其中包含多个服务,则每次只会选择其中一台进行写入。

而在 inputs 一节中,缺省启用了很多系统属性,例如磁盘,网络等,这里我们添加一点 http 监控内容:

[[inputs.http_response]]
address = "http://163.com"
response_timeout = "5s"
method = "GET"

[[inputs.http_response]]
address = "http://sina.com.cn"
response_timeout = "5s"
method = "GET"

小窍门:可以用 telegraf -config telegraf.conf -input-filter http_response -test 命令,来检查配置的正确性。

配置文件编写完成之后,就可以利用 systemctl start telegraf,启动 telegraf 服务了。

启动之后,Telegraf 会在一定的时间间隔里向 InfluxDB 汇报数据。我们可以在 InfluxDB UI 中利用

select * from cpu

这样的语句来查询数据,或者接入 Grafana 等进行展现。

Avatar
崔秀龙

简单,是大师的责任;我们凡夫俗子,能做到清楚就很不容易了。

comments powered by Disqus
下一页
上一页