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
"доступ + чтение"r
msgstr "доступ к самому файлу 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.