配置选项
Telegraf 使用配置文件来定义启动时启用哪些插件以及使用哪些设置。每个 Telegraf 插件都有自己的配置选项集。Telegraf 还提供全局选项来配置特定的 Telegraf 设置。
查看 入门 以快速开始使用 Telegraf。
生成配置文件
telegraf config
命令允许您使用 Telegraf 的插件列表生成配置文件。
创建具有默认输入和输出插件的配置
要生成启用默认输入和输出插件的配置文件,请在您的终端中输入以下命令
生成的文件包含所有可用插件的设置–一些已启用,其余则被注释掉。
创建具有特定输入和输出插件的配置文件
要生成仅包含特定插件设置的配置文件,请使用 --input-filter
和 --output-filter
选项指定 输入插件 和 输出插件。使用冒号 (:
) 分隔插件名称。
语法
telegraf \
--input-filter <INPUT_PLUGIN_NAME>[:<INPUT_PLUGIN_NAME>] \
--output-filter <OUTPUT_PLUGIN_NAME>[:<OUTPUT_PLUGIN_NAME>] \
config > telegraf.conf
.\telegraf.exe `
--input-filter <INPUT_PLUGIN_NAME>[:<INPUT_PLUGIN_NAME>] `
--output-filter <OUTPUT_PLUGIN_NAME>[:<OUTPUT_PLUGIN_NAME>] `
config > telegraf.conf
示例
以下示例显示了如何包括 inputs.cpu
、inputs.http_listener_v2
、outputs.influxdb_v2
和 outputs.file
插件的配置部分
telegraf \
--input-filter cpu:http_listener_v2 \
--output-filter influxdb_v2:file \
config > telegraf.conf
.\telegraf.exe `
--input-filter cpu:http_listener_v2 `
--output-filter influxdb_v2:file `
config > telegraf.conf
有关更高级的配置细节,请参阅 配置文档。
配置文件位置
启动 Telegraf 时,使用 --config
标志指定配置文件位置
- 文件名和路径,例如:
--config /etc/default/telegraf
- 远程 URL 终端,例如:
--config "http://remote-URL-endpoint"
使用 --config-directory
标志在 Telegraf 配置中包含指定目录中以 .conf
结尾的文件。
在大多数系统中,默认位置是 /etc/telegraf/telegraf.conf
(主配置文件)和 /etc/telegraf/telegraf.d
(在 Windows 上,C:\Program Files\Telegraf\telegraf.d
)(对于配置文件目录)。
Telegraf 逐个处理每个配置文件,有效配置是所有文件的并集。如果任何文件不是有效的配置,Telegraf 将返回错误。
Telegraf 不支持部分配置
Telegraf 在处理之前不会连接配置文件。您提供的每个配置文件都必须是有效的配置。
如果您想使用单独的文件来管理配置,您可以使用自己的自定义代码来连接和预处理文件,然后将完整的配置提供给 Telegraf–例如
配置插件部分并将部分配置的文件扩展名设置为不同于
.conf
以防止 Telegraf 加载它们–例如# main.opcua: Main configuration file ... [[inputs.opcua_listener]] name = "PluginSection" endpoint = "opc.tcp://10.0.0.53:4840" ...
# group_1.opcua [[inputs.opcua_listener.group]] name = "SubSection1" ...
# group_2.opcua [[inputs.opcua_listener.group]] name = "SubSection2" ...
在启动 Telegraf 之前,运行您的自定义脚本来将
main.opcua
、group_1.opcua
、group_2.opcua
连接到一个有效的telegraf.conf
。使用完整的、有效的
telegraf.conf
配置启动 Telegraf。
设置环境变量
通过将它们放在 ${}
中,在配置文件中的任何位置使用环境变量。对于字符串,变量必须用引号引起来(例如,"test_${STR_VAR}"
)。对于数字和布尔值,变量必须不带引号(例如,${INT_VAR}
、${BOOL_VAR}
)。
您还可以使用 Linux 的 export
命令设置环境变量:export password=mypassword
注意:使用密钥存储或环境变量来存储敏感凭据。
示例:Telegraf 环境变量
在 Telegraf 环境变量文件(/etc/default/telegraf
)中设置环境变量–例如
USER="alice"
INFLUX_URL="https://127.0.0.1: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_SKIP_DATABASE_CREATION}
password = "${INFLUX_PASSWORD}"
当 Telegraf 运行时,有效的配置如下
[global_tags]
user = "alice"
[[outputs.influxdb]]
urls = "https://127.0.0.1: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:以最多
metric_batch_size
个指标的分批方式将指标发送到输出。 - metric_buffer_limit:为每个输出缓存
metric_buffer_limit
个指标,并在写入成功后刷新此缓冲区。这应该是metric_batch_size
的倍数,且不能小于metric_batch_size
的 2 倍。 - collection_jitter:用于随机量抖动收集。每个插件在收集之前会暂停一个随机的时间。这可以用来避免多个插件同时查询类似 sysfs 的事物,这可能会对系统产生可测量的影响。
- flush_interval:所有输出的默认数据刷新间隔。不要将其设置为小于
interval
。最大flush_interval
为flush_interval
+flush_jitter
- flush_jitter:通过随机量抖动刷新间隔。这主要是为了避免用户运行大量 Telegraf 实例时出现大的写入峰值。例如,
flush_jitter
为5s
和flush_interval
为10s
,意味着刷新发生在每 10-15 秒。 - precision:收集的指标将舍入到指定的精度(整数 + 单位,例如:
1ns
、1us
、1ms
和1s
。精度不适用于服务输入,如logparser
和statsd
。 - debug:以调试模式运行 Telegraf。
- quiet:以静默模式运行 Telegraf(仅错误消息)。
- logtarget:控制日志的目的地,可以设置为
"file"
、"stderr"
,或在 Windows 上设置为"eventlog"
。当设置为"file"
时,输出文件由 logfile 设置确定。 - logfile:如果 logtarget 设置为
“file”
,则指定日志文件名。如果设置为空字符串,则日志将写入 stderr。 - logfile_rotation_interval:在指定的时间间隔后旋转日志文件。当设置为
0
时,不执行基于时间的旋转。 - logfile_rotation_max_size:当日志文件大小超过指定的大小时旋转日志文件。当设置为
0
时,不执行基于大小的旋转。 - logfile_rotation_max_archives:要保留的最大旋转存档数,任何较旧的日志都将被删除。如果设置为
-1
,则不删除任何存档。 - log_with_timezone:设置用于日志记录的时区–例如,
"America/Chicago"
。要使用本地时间,设置为"local"
。有关时区选项和格式,请参阅 timezone options and formats。 - hostname:覆盖默认主机名,如果为空则使用
os.Hostname()
。 - omit_hostname:如果为真,则不在 Telegraf 代理中设置
host
标签。 - skip_processors_after_aggregators: 如果为真,处理器在聚合器之后不再运行。默认值为假。
输入配置
以下配置参数适用于所有输入
- alias: 为插件实例命名。
- interval: 收集此指标的时间间隔。常规插件使用单个全局间隔,但如果某个特定输入需要运行更频繁或更少,您可以在此处进行配置。《interval》可以增加以降低数据输入速率限制。
- precision: 覆盖代理的《precision》设置。收集的指标被四舍五入到《interval》中指定的精度。当此值在服务输入(例如:`statsd`)上设置时,同一时间戳发生的多个事件可能会被输出数据库合并。
- collection_jitter: 覆盖代理的《collection_jitter》设置。
收集抖动用于通过随机的《interval》对收集进行抖动。 - name_override: 覆盖测量的基本名称。(默认为输入的名称)
- name_prefix: 指定要附加到测量名称的前缀。
- name_suffix: 指定要附加到测量名称的后缀。
- tags: 要应用到特定输入测量的一组标签。
输出配置
- alias: 为插件实例命名。
- flush_interval: 刷新之间的最大时间。使用此设置可以覆盖按插件基于的代理《flush_interval》。
- flush_jitter: 抖动刷新间隔的时间量。使用此设置可以覆盖按插件基于的代理《flush_jitter》。
- metric_batch_size: 一次发送的最大指标数。使用此设置可以覆盖按插件基于的代理《metric_batch_size》。
- metric_buffer_limit: 缓存中未发送的最大指标数。使用此设置可以覆盖按插件基于的代理《metric_buffer_limit》。
- name_override: 覆盖测量的基本名称。(默认为输出的名称)
- name_prefix: 指定要附加到测量名称的前缀。
- name_suffix: 指定要附加到测量名称的后缀。
聚合器配置
以下配置参数适用于所有聚合器
- alias: 为插件实例命名。
- period: 刷新并清除每个聚合器的周期。所有在此周期之外的带有时间戳的指标都将被聚合器忽略。
- delay: 每个聚合器刷新之前的延迟。这是为了控制聚合器在接收来自输入插件的指标之前需要等待多长时间,在聚合器刷新且输入正在同一间隔内收集的情况下。
- grace: 即使指标在聚合周期之外,插件也会对其进行聚合的持续时间。当代理预期会收到迟到指标并且可以将其滚动到下一个聚合周期时,此设置是必需的。
- drop_original: 如果为真,原始指标将被聚合器丢弃,并且不会发送到输出插件。
- name_override: 覆盖测量的基本名称。(默认为输入的名称)
- name_prefix: 指定要附加到测量名称的前缀。
- name_suffix: 指定要附加到测量名称的后缀。
- tags: 要应用到特定输入测量的一组标签。
有关如何配置SNMP、MQTT和PostGRE SQL插件以将数据导入Telegraf的演示,请参阅以下视频
处理器配置
以下配置参数适用于所有处理器
- alias: 为插件实例命名。
- order: 这是处理器执行的顺序。如果未指定,则顺序是随机的。
可以使用指标过滤参数来限制处理器处理的指标。被排除的指标会传递到下一个处理器。
指标过滤
可以针对每个输入、输出、处理器或聚合器配置过滤器。
过滤器
- namepass:一组glob模式字符串数组。仅发送测量名称与列表中某个模式匹配的点。
- namedrop:
namepass
的逆操作。丢弃测量名称与列表中某个模式匹配的点。此测试在namepass
测试之后对点应用。 - fieldpass:一组glob模式字符串数组。仅发送字段键与列表中某个模式匹配的字段。
- fielddrop:
fieldpass
的逆操作。丢弃字段键匹配其中任何一个模式的字段。 - tagpass:将标签键映射到glob模式字符串数组的表。仅发送包含表中标签键且标签值匹配关联模式之一的点。
- tagdrop:
tagpass
的逆操作。丢弃包含表中标签键且标签值匹配关联模式之一的点。此测试在tagpass
测试之后对点应用。 - taginclude:一组glob模式字符串数组。仅发送标签键匹配列表中某个模式的标签。与
tagpass
不同,后者在标签通过时发送整个点,taginclude
则从点中移除所有不匹配的标签。此过滤器可用于输入和输出,但在输入上使用时更有效(过滤标签在摄取期间更有效)。 - tagexclude:
taginclude
的逆操作。从点中丢弃标签键匹配列表中某个模式的标签。
在插件定义的末尾包含tagpass和tagdrop
由于TOML的解析方式,tagpass
和tagdrop
参数必须在插件定义的末尾定义,否则后续的插件配置选项会被解释为tagpass和tagdrop表的组成部分。
想了解更多关于指标过滤的信息,请观看以下视频
过滤示例
输入配置示例
以下示例配置收集每个CPU的数据,丢弃任何以time_
开头的字段,用dc="denver-1"
标签标记测量,然后以10秒间隔将测量输出到地址为192.168.59.103:8086
的名为telegraf
的InfluxDB数据库。
[global_tags]
dc = "denver-1"
[agent]
interval = "10s"
# OUTPUTS
[[outputs.influxdb]]
url = "http://192.168.59.103:8086" # required.
database = "telegraf" # required.
precision = "1s"
# INPUTS
[[inputs.cpu]]
percpu = true
totalcpu = false
# filter 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
和fielddrop
# Drop 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
和namedrop
# Drop 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
和tagexclude
# Only 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 = [ "https://127.0.0.1:8086" ]
database = "telegraf"
precision = "1s"
# Drop all measurements that start with "aerospike"
namedrop = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "https://127.0.0.1:8086" ]
database = "telegraf-aerospike-data"
precision = "1s"
# Only accept aerospike data:
namepass = ["aerospike*"]
[[outputs.influxdb]]
urls = [ "https://127.0.0.1:8086" ]
database = "telegraf-cpu0-data"
precision = "1s"
# Only store measurements where the tag "cpu" matches the value "cpu0"
[outputs.influxdb.tagpass]
cpu = ["cpu0"]
聚合器配置示例
此配置将每30秒收集并发射系统负载1指标的最小/最大值,丢弃原始值。
[[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"]
想了解更多关于配置Telegraf代理的信息,请观看以下视频
这个页面有帮助吗?
感谢您的反馈!