利用 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 等进行展现。