Telegraf配置文件(telegraf.conf)列出了所有可用的Telegraf插件。在此处查看当前版本:telegraf.conf。

生成配置文件
Telegraf可以自动生成默认的Telegraf配置文件:

telegraf config > telegraf.conf
要生成具有特定输入和输出的配置文件,可以使用 --input-filter和–output-filter标志:

telegraf --input-filter cpu:mem:net:swap --output-filter influxdb:kafka config
配置文件位置
可以通过–config命令行标志设置配置文件的位置。

当使用–config-directory命令行标志时.conf,以指定目录结尾的文件 也将包含在Telegraf配置中。

在大多数系统上,默认位置/etc/telegraf/telegraf.conf用于主配置文件和配置文件/etc/telegraf/telegraf.d目录。

设置环境变量
通过将环境变量添加到配置文件中的任何位置来添加它们Telegraf redis插件 telegraf配置_配置文件STR_VAR")。对于数字和布尔值,变量必须不加引号(例如Telegraf redis插件 telegraf配置_环境变量_02BOOL_VAR)。

您还可以使用Linux export命令设置环境变量:export password=mypassword

注意:我们建议使用环境变量获取敏感信息。

示例:Telegraf环境变量
在Telegraf环境变量文件(/etc/default/telegraf)中:

USER=“alice”
 INFLUX_URL=“http://localhost:8086”
 INFLUX_SKIP_DATABASE_CREATION=“true”
 INFLUX_PASSWORD=“monkey123”
 在Telegraf配置文件(/etc/telegraf.conf)中:[global_tags]
 user = “${USER}”[[inputs.mem]]
[[outputs.influxdb]]
 urls = ["${INFLUX_URL}"]
 skip_database_creation = {INFLUX_PASSWORD}"
 上面的环境变量将以下配置设置添加到Telegraf:[global_tags]
 user = “alice”[[outputs.influxdb]]
 urls = “http://localhost:8086”
 skip_database_creation = true
 password = “monkey123”


全局标签
可以[global_tags]在配置文件的部分中以key="value"格式指定全局标记。在此主机上收集的所有指标都将使用此处指定的标签进行标记。

代理配置
Telegraf提供了一些选项,您可以在配置[agent]部分下进行配置。

interval:所有输入的默认数据收集间隔
round_interval:将收集间隔四舍五入到interval。例如,如果interval设置为10s,则始终以:00,:10,:20等收集。
metric_batch_size:Telegraf将最多将metric_batch_size度量标准批量发送到输出。
metric_buffer_limit:Telegraf将缓存metric_buffer_limit每个输出的指标,并在成功写入时刷新此缓冲区。这应该是的倍数,metric_batch_size并且不能小于2倍metric_batch_size。
collection_jitter:集合抖动用于使集合随机抖动。每个插件在收集之前都会在抖动中随机睡眠一段时间。这样可以避免许多插件同时查询诸如sysfs之类的东西,而这可能会对系统产生可衡量的影响。
flush_interval:所有输出的默认数据刷新间隔。您不应该在下面进行设置interval。最大值flush_interval将为flush_interval+flush_jitter
flush_jitter:将刷新间隔抖动一个随机量。这主要是为了避免对运行大量Telegraf实例的用户造成较大的写入高峰。例如,一个flush_jitter5s和flush_interval10s表示冲刷将每10-15s发生一次。
precision:默认情况下,精度将设置为与收集间隔相同的时间戳顺序,最大为1秒。精密将不会被用于服务的投入,比如logparser和statsd。有效值为 ns,us(或µs)ms和s。
logfile:指定日志文件名。空字符串表示要登录stderr。
debug:在调试模式下运行Telegraf。
quiet:在安静模式下运行Telegraf(仅错误消息)。
hostname:如果为空,则覆盖默认主机名os.Hostname()。
omit_hostname:如果为true,则不要host在Telegraf代理中设置标签。
输入配置
以下配置参数可用于所有输入:

interval:多久收集一次该指标。普通插件使用单个全局时间间隔,但是如果一个特定的输入应该运行得更少或更频繁,则可以在此处进行配置。
name_override:覆盖度量的基本名称。(默认为输入名称)。
name_prefix:指定要附加到度量名称的前缀。
name_suffix:指定要附加到度量名称的后缀。
标签:标签图,适用于特定输入的度量。
输出配置
没有通用配置选项可用于所有输出。

聚合器配置
以下配置参数可用于所有聚合器:

period:冲洗并清除每个聚合器的时间段。聚合器将忽略在此时间段之外使用时间戳发送的所有度量。
delay:刷新每个聚合器之前的延迟。这是为了控制在聚合器正在刷新并且输入以相同的时间间隔收集的情况下,聚合器在从输入插件接收度量之前等待多长时间。
drop_original:如果为true,则原始指标将被聚合器删除,并且不会发送到输出插件。
name_override:覆盖度量的基本名称。(默认为输入名称)。
name_prefix:指定要附加到度量名称的前缀。
name_suffix:指定要附加到度量名称的后缀。
标签:标签图,适用于特定输入的度量。
处理器配置
以下配置参数可用于所有处理器:

order:这是处理器执行的顺序。如果未指定,则处理器执行顺序将是随机的。
测量过滤
可以为每个输入,输出,处理器或聚合器配置过滤器,请参阅以下示例。

namepass:Glob模式字符串的数组。仅发射其测量名称与该列表中的模式匹配的点。
namedrop:的倒数namepass。如果找到匹配项,则丢弃该点。在点通过namepass测试后,将对它们进行测试。
fieldpass:全局模式字符串的数组。仅发射其字段关键字与该列表中的模式匹配的字段。不适用于输出。
fielddrop:的逆fieldpass。具有与其中一种模式匹配的字段关键字的字段将从该点被丢弃。不适用于输出。
tagpass:将标签键映射到全局模式字符串数组的表。仅发射在表中包含标签键并且其值与其模式之一匹配的点。
tagdrop:的逆tagpass。如果找到匹配项,则丢弃该点。在点通过tagpass测试后,将对它们进行测试。
taginclude:glob模式字符串的数组。仅发出具有与其中一种模式匹配的标签键的标签。与相比tagpass,会根据其标记传递整个点,而taginclude从点中删除所有不匹配的标记。此过滤器可以在输入和输出上使用,但 建议在输入上使用,因为在提取点过滤出标签的效率更高。
tagexclude:的逆taginclude。具有与其中一种模式匹配的标签键的标签将被丢弃。
注意由于要解析TOML,tagpass并且tagdrop必须在插件定义的末尾定义参数,否则后续的插件配置选项将被解释为tagpass / tagdrop表的一部分。

输入配置示例
这是一个完整的工作配置,它将在处将CPU数据输出到InfluxDB实例192.168.59.103:8086,并使用标记测量dc=“denver-1”。它将以10s的间隔输出测量值,并会收集每CPU数据,并删除以开头的任何字段time_。

[global_tags]
 dc = “denver-1”[agent]
 interval = “10s”OUTPUTS
[[outputs.influxdb]]
 url = “http://192.168.59.103:8086” # required.
 database = “telegraf” # required.
 precision = “s”INPUTS
[[inputs.cpu]]
 percpu = true
 totalcpu = falsefilter all fields beginning with ‘time_’
fielddrop = [“time_*”]
 输入配置:tagpass和tagdrop
 注意 tagpass和tagdrop参数必须在插件定义的末尾定义,否则后续的插件配置选项将被解释为tagpass / tagdrop映射的一部分。[[inputs.cpu]]
 percpu = true
 totalcpu = false
 fielddrop = [“cpu_time”]Don’t collect CPU data for cpu6 & cpu7
[inputs.cpu.tagdrop]
 cpu = [ “cpu6”, “cpu7” ][[inputs.disk]]
 [inputs.disk.tagpass]
 # tagpass conditions are OR, not AND.
 # If the (filesystem is ext4 or xfs) OR (the path is /opt or /home)
 # then the metric passes
 fstype = [ “ext4”, “xfs” ]
 # Globs can also be used on the tag values
 path = [ “/opt”, “/home*” ]
 输入配置:fieldpass和fielddropDrop all metrics for guest & steal CPU usage
[[inputs.cpu]]
 percpu = false
 totalcpu = true
 fielddrop = [“usage_guest”, “usage_steal”]Only store inode related metrics for disks
[[inputs.disk]]
 fieldpass = [“inodes*”]
 输入配置:namepass和namedropDrop all metrics about containers for kubelet
[[inputs.prometheus]]
 urls = [“http://kube-node-1:4194/metrics”]
 namedrop = [“container_*”]Only store rest client related metrics for kubelet
[[inputs.prometheus]]
 urls = [“http://kube-node-1:4194/metrics”]
 namepass = [“rest_client_*”]
 输入配置:taginclude和tagexcludeOnly include the “cpu” tag in the measurements for the cpu plugin.
[[inputs.cpu]]
 percpu = true
 totalcpu = true
 taginclude = [“cpu”]Exclude the fstype tag from the measurements for the disk plugin.
[[inputs.disk]]
 tagexclude = [“fstype”]
 输入配置:prefix,suffix,和override
 此插件将发出名称为的测量值cpu_total。[[inputs.cpu]]
 name_suffix = “_total”
 percpu = false
 totalcpu = true
 这将发出名称为的测量值foobar。[[inputs.cpu]]
 name_override = “foobar”
 percpu = false
 totalcpu = true
 输入配置:标签
 该插件将发出带有两个附加标签的测量值:tag1=foo和 tag2=bar。注意:顺序很重要,该[inputs.cpu.tags]表必须位于插件定义的末尾。
[[inputs.cpu]]
 percpu = false
 totalcpu = true
 [inputs.cpu.tags]
 tag1 = “foo”
 tag2 = “bar”
 相同类型的多个输入
 可以通过在配置文件中定义这些实例来指定相同类型的其他输入(或输出)。为了避免测量碰撞,使用name_override,name_prefix或name_suffix配置选项:[[inputs.cpu]]
 percpu = false
 totalcpu = true[[inputs.cpu]]
 percpu = true
 totalcpu = false
 name_override = “percpu_usage”
 fielddrop = [“cpu_time*”]
 输出配置示例:
 [[outputs.influxdb]]
 urls = [ “http://localhost:8086” ]
 database = “telegraf”
 precision = “s”Drop all measurements that start with “aerospike”
namedrop = [“aerospike*”]
[[outputs.influxdb]]
 urls = [ “http://localhost:8086” ]
 database = “telegraf-aerospike-data”
 precision = “s”Only accept aerospike data:
namepass = [“aerospike*”]
[[outputs.influxdb]]
 urls = [ “http://localhost:8086” ]
 database = “telegraf-cpu0-data”
 precision = “s”Only store measurements where the tag “cpu” matches the value “cpu0”
[outputs.influxdb.tagpass]
 cpu = [“cpu0”]
 聚合器配置示例:
 这将每30秒收集并发出系统load1指标的最小值/最大值,并丢弃原始值。[[inputs.system]]
 fieldpass = [“load1”] # collects system load1 metric.[[aggregators.minmax]]
 period = “30s” # send & clear the aggregate every 30s.
 drop_original = true # drop the original metrics.[[outputs.file]]
 files = [“stdout”]
 这将每30秒收集并发出交换指标的最小值/最大值,从而丢弃原始值。由于该namepass参数,聚合器将不会应用于系统负载指标。[[inputs.swap]]
[[inputs.system]]
 fieldpass = [“load1”] # collects system load1 metric.[[aggregators.minmax]]
 period = “30s” # send & clear the aggregate every 30s.
 drop_original = true # drop the original metrics.
 namepass = [“swap”] # only “pass” swap metrics through the aggregator.[[outputs.file]]
 files = [“stdout”]