Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到多种数据库。
官方文档简介地址:https://docs.influxdata.com/telegraf/v0.11/
Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。
目前已有的插件包括:
System (memory, CPU, network, etc.)—-裸机,虚拟机监控
Docker—容器监控指标
MySQL—-软件监控指标
tomcat,Apache–应用软件指标
Redis,kafka,ELK–中间件指标
Http-json—http自定义监控指标
等等其他软件监控内指标。
[注:本文中的配置仅为生产示范配置,并不一定是生产环节最终标准配置]
1.安装部署
a.手动安装步骤:
linux操作系统:
#wget https://dl.influxdata.com/telegraf/releases/telegraf-1.1.1.x86_64.rpm (官网下载较慢,不建议使用)
#yum localinstall -y telegraf-1.1.1.x86_64.rpm
#service telegraf restart(或者systemctl start telegraf)
#chkconfig(查看是否已加入自启动)
windows操作系统:
1.下载采集器安装文件上传安装文件到被监控服务器并且解压;
2.创建目录C:\Program Files\Telegraf
3.将解压后的两个文件放在Telegraf文件夹中;
4.powershell以管理员执行:C:\”Program Files”\Telegraf\telegraf.exe –service install
5.运行采集器:net start telegraf
6.按照流程修改采集器配置文件中的全局tag配置,修改为自己所属的项目名称和机房名称;
b.自动化一键安装:
linux脚本:
(注意:使用自动化脚本安装需要修改脚本当中的全局标签“rack”“department”“company”,以便自动安装后可以自动分类展示)
#wget http://xx.x.x.x/cobbler/pub/soft/monitor/telegraf.sh #唯一机房自动安装脚本
#sh telegraf.sh
Windows脚本:
自动安装脚本已经完成了从下载软件包到配置项的所有工作,因此只需要直接执行即可,但是需要确定对应的自动安装脚本,
因为每个机房或者部分项目的自动安装的数据库是不一样的数据库,使用的采集器配置因项目或者子公司名称不同而不同,
因此这一点需要业务运维人员注意,生产环境安装之前确认;
c.采集器软件目录列表
配置文件:/etc/telegraf/telegraf.conf (全局配置文件)以及/etc/telegraf/telegraf.d/(自定义配置文件)
pid:/var/run/telegraf.pid
日志:/var/logs/telegraf/或者/var/logs/messags
程序:/usr/bin/telegraf
2.配置文件
配置文件总共分为3个部分:
a.全局设置:
全局配置文件默认为:/etc/telegraf/telegraf.conf
主要配置telegraf采集器的全局标签,采集频率,机器上报机制,日志格式等全局性设置;
[global_tags] #全局tags设置
rack = “aliyun” #设置属于哪个机房
company = “xxx” #设置属于哪个公司
department = “sql” #设置属于哪个项目或者部门
# Configuration for telegraf agent
[agent] #采集器采集配置
interval = “60s” #采集器采集频率,默认为10,根据自己的项目可以修改为任意数值
round_interval = true #采集器是否轮询上述间隔
metric_batch_size = 1000 #采集器每次发生指标个数限制
metric_buffer_limit = 10000 #采集器缓存指标个数总限制
collection_jitter = “0s” #采集器频率抖动时间差,可用来做随机采集
flush_interval = “61s” #刷新数据写入到output时间间隔
flush_jitter = “0s” #刷新数据写入随机抖动时间
precision = “” #采集器最小时间单位,默认为ns
debug = false #是否运行debug,默认不允许
quiet = false #是否安静模式运行,不输出日志等
hostname = “” #采集器主机名称,不指定则为主机名
omit_hostname = false
b.output设置:
主要设置采集器需要发送到数据库的数据源类型
例如后端数据库为influxDB,则配置数据输出到influx:
#Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
urls = [“http://1x.x.x.x:8086”] #influxdb地址
database = “telegraf_ali” # required #influxdb数据库
retention_policy = “” #数据保留策略
write_consistency = “any” #数据写入策略,仅适用于集群模式
timeout = “5s” #写入超时策略
username = “telegraf_ali” #数据库用户名
password = “gPHhbeh” #数据库密码
#user_agent = “telegraf” #采集器代理名称
例如后端数据库为elasticsearch数据库,因telegraf不能直接写入到es中,则写入到kafka集群中
[[outputs.kafka]]
brokers = [“10.23.32.22:9092”] #kafka集群地址,多个实例以逗号隔开
topic = “telegraf-prd” #kafka的topic设置
routing_tag = “host” #是否路由tags,同一host写入到同一分片中
compression_codec = 1 #数据传输是否压缩
required_acks = 1 #数据同步是否确认,0为否,1为leader确认,-1为全部同步确认
max_retry = 3 #数据写入尝试次数
data_format = “json” #数据发送格式
c.input设置:
主要设置采集器的各项插件采集配置
服务器基础监控采用标准的telegraf.conf统一标准,软件项目的配置,新建conf文件放在/etc/telegraf/telegraf.d/文件夹中,重启生效;
3.自定义INPUT插件示例
自定义配置文件路径:/etc/telegraf/telegraf.d/
INUPT总共分为3种类型,分别为容器级别采集,服务器级别采集,软件级别采集,每种采集级别所需要的配置均可以在配置文件里面找到配置选项。
a.容器级别采集标准示例
(注:可以通过直接上传对应的标准配置文件进行覆盖默认的配置文件,后面统一使用配置文件模板替代)
修改配置文件/etc/telegraf/telegraf.conf添加docker监控项
因为容器采集通过本机docker API接口调用,需要修改telegraf启动用户才能正确采集,修改文件
/usr/lib/systemd/system/telegraf.service
其中一行User=telegraf 改为User=root
修改完毕后重载入配置和重启服务生效
#systemctl daemon-reload
#systemctl restart telegraf
#ps -ef|grep telegraf
手动测试获取容器接口是否输出数据:
#telegraf -config /etc/telegraf/telegraf.conf -input-filter docker -test
如能正确输出数据代表采集器安装配置无错误。
b.服务器级别采集标准示例
打开配置文件/etc/telegraf/telegraf.conf
在以上配置行可以按照项目或者子公司监控修改采集器数据过滤和采集频率等选项,如无特例可以使用默认标准配置文件;
附演示配置代码:
[[inputs.cpu]] #指标名称
percpu = true #指标详细项目
totalcpu = true
fielddrop = [“usage_guest*”] #指标key值过滤
[[inputs.disk]]
# mount_points = [“/”]
ignore_fs = [“tmpfs”, “devtmpfs”]
[[inputs.diskio]]
# no configuration
[[inputs.kernel]]
# no configuration
[[inputs.mem]]
# no configuration
[[inputs.processes]]
# no configuration
fielddrop = [“wait”,”idle”,”unknown”]
[[inputs.swap]]
fieldpass = [“used_percent”] #指标key值仅允许
[[inputs.system]]
# no configuration
[[inputs.net]]
# # interfaces = [“eth0”]
fieldpass = [“packets_*”,”bytes_*”,”drop_*”,”err_*”]
[[inputs.netstat]]
fielddrop = [“tcp_none”,”tcp_closing”,”tcp_close*”]
c.软件配置标准示例
例如需要添加zk监控,修改配置文件/etc/telegraf/telegraf.d/zk.conf
[[inputs.zookeeper]]
servers = [“172.16.7.12:2181”]
测试zk监控是否成功,使用以下命令
#telegraf -config /etc/telegraf/telegraf.conf -input-filter zookeeper -test