Telegraf - модуль input.procstat procstat - README.md doc - exe, pid_file, имя пользователя шаблона командной строки

Использование: Telegraf v1.0.1

Документация плагина Telegraf procstat: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat

Мой пользовательский файл конфигурации:
/etc/telegraf/telegraf.d/my_custom_process_service-telegraf.conf содержит:

[[inputs.procstat]]
  exe = "."
  prefix = "service_process"

[[inputs.procstat]]
  pid_file = "/var/run/jenkins/jenkins.pid"
  prefix = "service_process"

Приведенная выше конфигурация работает нормально в соответствии с синтаксисом. Это даст мне метрики с названием метрики, начиная с: procstat.service.process.xx.xx(в зависимости от того, конвертируете ли вы _ с . характер) -или просто procstat.service_process.x.x метрики.

Чтобы поймать любой процесс, запущенный на машине, используя exe = "." (это будет делать pgrep "." операции и), чтобы найти все процессы, запущенные на машине, давая process_name=<processes> ценности; -ИЛИ используя, pid_file = /var/run/jenkins/jenkins.pid (ПРИМЕЧАНИЕ: при условии, что у вас есть разрешение на чтение для пользователя, который работает telegraf сервис) для процессов, которые работают за Java/ другими обертками; Если вы даете pid_file = /var/run/jenkins/jenkins.pid и если Дженкинс работает под пользователем jenkins и /var/run/jenkins папка не имеет по крайней мере "r-x"доступ + чтение"rmsgstr "доступ к самому файлу pid, тогда он выдаст ошибку об" отказано в разрешении ".

2017-01-10T18:13:30Z E! Error: procstat getting process, exe: [] pidfile: [/var/run/jenkins/jenkins.pid] pattern: [] user: [] Failed to read pidfile '/var/run/jenkins/jenkins.pid'. Error: 'open /var/run/jenkins/jenkins.pid: permission denied' 

Вопрос:

Может ли Телеграф бежать в SUDO режим (если возможно)? т.е. если у меня нет r-x/r доступ для чтения PID-файла процесса и предположения, что таких процессов много (работает за Java/ некоторый Wrapper, поэтому exe=xxxx не будет работать в таких случаях), то я должен использовать pid_file = ... метод, то как я могу иметь Telegraf, работающий с этим pid_file метод получения process_name как jenkins или же nexus и т.п.

PS: делаю chmod -R 775_or_755 /var/run на каждом хосте может быть нереально.

Если я дам 755 разрешений в папку /var/ran/jenkins и 644 в файл jenkins.pid, ошибка разрешения исчезнет. После этого я попытался использовать метрику: procstat.service.process.cpu.usage против процесса jenkins (т.е. process_name="jenkins") но это не найти jenkins как это значение. Я что-то пропустил?

1 ответ

Решение

Добавил следующую конфигурацию в /etc/telegraf/telegraf.d/someFile.conf и исправил проблему с разрешениями, используя Ansible's file module: http://docs.ansible.com/ansible/file_module.html

## Telegraf filestat plugin
[[inputs.filestat]]
  files = ["/var/run/*/*.pid","/var/run/*.pid"]

## To catch all processs. Better than pattern = "."
[[inputs.procstat]]
  exe = "."
  prefix = "pgrep_serviceprocess"

##For catching processes by a user.
## Telegraf will use: pgrep -u <user>
[[inputs.procstat]]
  user = "vagrant"
  prefix = "pgrep_serviceprocess"

[[inputs.procstat]]
  user = "telegraf"
  prefix = "pgrep_serviceprocess"

[[inputs.procstat]]
  user = "root"
  prefix = "pgrep_serviceprocess"

## Add more users or template it out in Ansible.
Другие вопросы по тегам