导读: Telegraf 是 InfluxData 下的子项目,是由 Go 语言编写的 metrics 收集、处理、聚合的代理。其设计目标是较小的内存使用,通过插件来构建各种服务和第三方组件的 metrics 收集。Telegraf 具有插件或集成功能,可以直接从其运行的系统中获取各种指标,从第三方API中提取指标,甚至通过 statsd 和 Kafka 消费者服务监听指标。它还具有输出插件,可将指标发送到各种其他数据存储,服务,和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。
相比于 Logstash 或者 Mozilla 的 Heka,它有了更多的内置实用 input 插件,更容易的监控起系统和各种常见服务的各种参数。与 InfluxDB 结合使用起来使用十分方便。
术语介绍
Input Data Formats
输入数据格式。Telegraf 能够将以下输入数据格式解析为指标:
- InfluxDB Line Protocol
- JSON
- Graphite
- Value, ie: 45 or “booyah”
- Nagios (exec input only)
- Collectd
Output Plugins
输出数据格式。Telegraf 能够将指标序列化为以下输出数据格式:
- InfluxDB Line Protocol
- JSON
- Graphite
Aggregator and Processor Plugins
聚合器和处理器插件。作用如下。
Aggregator Plugins
聚合插件,数据特征聚合(例如:mean, min, max, quantiles等)。一般情况下,可以不用设置。
Agent
agent
是Telegraf的核心部分,它可以从声明的输入插件中收集指标,并根据给定配置启用的插件将指标发送到声明的输出插件。
aggregator plugin
聚合器插件从输入插件中接收原始指标,并从中创建汇总指标。然后将汇总指标传递到配置的输出插件。
batch size
Telegraf
代理将批量发送指标分发给输出插件。批量大小控制 Telegraf
发送到输出插件的每个写入批次的大小。
collection interval
收集抖动用于防止每个输入插件同时收集指标,这可以对系统产生可测量的影响。每个收集间隔,每个输入插件将在收集指标之前休眠0到收集抖动之间的随机时间。
flush interval
从每个输出插件到其目的地的数据刷新的全局间隔。该值不应设置为低于收集间隔。
flush jitter
刷新抖动用于防止每个输出插件同时发送写入,这可能会覆盖一些数据接收器。每个刷新间隔,每个输出插件将在发布度量之前休眠一个随机时间在零和刷新抖动之间。这有助于在运行大量 Telegraf
实例时平滑写入峰值。
input plugin
输入插件主动收集指标并将其传递给核心代理,其中聚合器,处理器和输出插件可以在指标上运行。为了激活输入插件,需要在Telegraf的配置文件中启用和配置它。
metric buffer
当写入失败的输出插件时,度量缓冲区缓存各个度量标准。成功写入输出后,Telegraf
将尝试刷新缓冲区。当这个缓冲区填满时,最早的指标首先被丢弃。
output plugin
输出插件将指标传递到其配置的目标。为了激活输出插件,需要在Telegraf的配置文件中启用和配置它。
precision
精确配置设置确定从输入插件接收的点中保留多少时间戳精度。所有传入的时间戳都被截断为给定的精度。 Telegraf
然后用零填充截断的时间戳来创建一个纳秒时间戳;输出插件将以纳秒为单位发出时间戳。有效精度为 ns
,us
或 μs
,ms
和 s
。
例如:如果精确度设置为 ms
,纳秒时间戳 1480000000123456789
将以毫秒精度截断为 1480000000123
,然后用零填充作为一个新的时间戳 1480000000123000000
。
processor plugin
处理器插件转换,装饰和/或过滤由输入插件收集的指标,将转换的指标传递给输出插件。
service input plugin
服务输入插件是 Telegraf
代理正在运行时以被动收集模式运行的输入插件。他们在套接字上收听已知的协议输入,或者在将它们传递给 Telegraf
代理之前将其自己的逻辑应用于摄取的指标。
安装
# 使用 root 账号
# Ubuntu & Debian
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.3.0-1_amd64.deb
sudo dpkg -i telegraf_1.3.0-1_amd64.deb
# RedHat & CentOS
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.0-1.x86_64.rpm
sudo yum localinstall telegraf-1.3.0-1.x86_64.rpm
# 查看帮助
telegraf --help
配置文件
/etc/telegraf/telegraf.conf
服务器性能监控需要修改的地方。
# hostname相当于 agent 的名称 或 服务器的名称
hostname = nginx_192.168.1.10
# 输出插件,假设我们将收集的数据输出到 InfluxDB
[[outputs.influxdb]]
urls = ["http://192.168.1.1:8086"]
database = "telegraf" # required
retention_policy = "rp_day_30"
write_consistency = "any"
timeout = "5s"
username = "telegraf"
password = "xxxxxxxx"
# 信息输入插件
# 系统监控之cpu
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
# 系统监控之硬盘
[[inputs.disk]]
# 挂载节点
mount_points = ["/"]
# 忽略文件系统类型的一些挂载点
ignore_fs = ["tmpfs", "devtmpfs", "devfs"]
# 系统监控之硬盘IO
[[inputs.diskio]]
#采用默认配置即可
# 系统监控之内核
[[inputs.kernel]]
# 系统监控之内存
[[inputs.mem]]
# 系统监控之进程
[[inputs.processes]]
# 系统监控之swap
[[inputs.swap]]
# 系统监控之system
[[inputs.system]]
# 收集网络接口使用情况的指标
[[inputs.net]]
# 监控的网卡,可以通过 "sar -n DEV 1 4" 查看网卡流量
interfaces = ["eth0"]
# 收集内核snmp计数器和网络接口统计信息
[[inputs.nstat]]
proc_net_netstat = "/proc/net/netstat"
proc_net_snmp = "/proc/net/snmp"
proc_net_snmp6 = "/proc/net/snmp6"
dump_zeros = true
还可以收集其它监控数据,例如:Nginx、Redis、MySQL、Kafka、JVM、HTTPJSON、Exec等。详细内容请看Telegraf Input Plugins。
启动服务
service telegraf start
可以根据默认配置生产一个新的配置,新配置中只存在制定的指标。
telegraf -sample-config -input-filter cpu:mem -output-filter influxdb > telegraf.conf
运行 telegraf
,启用制定的输入和输出插件。
telegraf --config telegraf.conf -input-filter cpu:mem -output-filter influxdb
启动后,在 InfluxDB
中,就可以看到数据了。
参考:
作者:gtea