Telegraf и InfluxDB: как преобразовать pid PROCSTAT из поля в тег?
Резюме: я использую телеграф, чтобы получить procstat в InfluxDB. Я хочу преобразовать pid из целочисленного поля в TAG, чтобы я мог группировать его в Influx.
Подробности: после долгих поисков я нашел на каком-то сайте следующее, но похоже, что он делает наоборот (преобразует тег в поле). Я не уверен, как вывести из него противоположный синтаксис преобразования:
[processors]
[[processors.converter]]
namepass = [ "procstat",]
[processors.converter.tags]
string = [ "cmdline",]
Я использую Influx 1.7.9
0 ответов
Правильная конфигурация процессора для преобразования pid как тега приведена ниже.
[processors]
[[processors.converter]]
namepass = [ "procstat"]
[processors.converter.fields]
tag = [ "pid"]
См. Документацию плагина процессора конвертера https://github.com/influxdata/telegraf/tree/master/plugins/processors/converter
В последней версии telegraf pid можно сохранить как тег, указав его во входной конфигурации плагина. Преобразователь здесь не нужен.
Упоминание
pid_tag = true
в комплектации. Однако помните о влиянии на производительность наличия pid в качестве тега, когда процессы недолговечны.
PS: Вам следует попробовать обновить версию Telegraf до 1.14.5. В этой версии есть исправление повышения производительности для плагина procstat.
Ссылка на конфигурацию плагина https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat
Пример конфигурации.
# Monitor process cpu and memory usage
[[inputs.procstat]]
## PID file to monitor process
pid_file = "/var/run/nginx.pid"
## executable name (ie, pgrep <exe>)
# exe = "nginx"
## pattern as argument for pgrep (ie, pgrep -f <pattern>)
# pattern = "nginx"
## user as argument for pgrep (ie, pgrep -u <user>)
# user = "nginx"
## Systemd unit name
# systemd_unit = "nginx.service"
## CGroup name or path
# cgroup = "systemd/system.slice/nginx.service"
## Windows service name
# win_service = ""
## override for process_name
## This is optional; default is sourced from /proc/<pid>/status
# process_name = "bar"
## Field name prefix
# prefix = ""
## When true add the full cmdline as a tag.
# cmdline_tag = false
## Add the PID as a tag instead of as a field. When collecting multiple
## processes with otherwise matching tags this setting should be enabled to
## ensure each process has a unique identity.
##
## Enabling this option may result in a large number of series, especially
## when processes have a short lifetime.
# pid_tag = false