2017-01-10 2 views
0

utilisant: Telegraf v1.0.1Telegraf - inputs.procstat Plugin procstat - README.md doc - exe, pid_file, nom d'utilisateur modèle de ligne de commande

documentation du plug-in Telegraf de procstat: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat

Ma config personnalisée fichier:
/etc/telegraf/telegraf.d/my_custom_process_service-telegraf.conf contient:

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

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

La configuration ci-dessus fonctionne bien selon la syntaxe. Cela me donnera des mesures avec le nom de la métrique commençant: procstat.service.process.xx.xx (selon si vous convertissez _ avec un caractère .) -ou simplement procstat.service_process.x.x métriques.

Pour attraper tout processus en cours d'exécution sur la machine en utilisant exe = "." (il fera une opération et pgrep ".") pour trouver tous les processus en cours d'exécution sur la machine en donnant process_name=<processes> valeurs; -OR utilisant, pid_file = /var/run/jenkins/jenkins.pid (REMARQUE: à condition que vous ayez l'autorisation READ pour l'utilisateur qui exécute le service telegraf) pour les processus qui s'exécutent derrière Java/autres wrappers; Si vous donnez pid_file = /var/run/jenkins/jenkins.pid et si Jenkins fonctionne sous l'utilisateur jenkins et /var/run/jenkins dossier n'a pas au moins "r-x" accès + lire "r" accès sur le fichier pid lui-même, alors il va jeter et erreur sur "autorisation refusée".

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' 

Question:

Est-il possible Telegraf de fonctionner en mode SUDO (si possible)? si je n'ai pas l'accès r-x/r pour lire le fichier PID d'un processus et en supposant qu'il y a beaucoup de tels processus (fonctionnant derrière Java/Wrapper, donc exe=xxxx ne fonctionnera pas dans de tels cas), alors je dois utiliser la méthode pid_file = ..., alors comment puis-je avoir Telegraf travailler avec cette méthode pid_file pour obtenir la process_name comme jenkins ou nexus etc.

PS: Faire chmod -R 775_or_755 /var/run sur chaque hôte peut ne pas être possible.

Si j'autorise 755 dans le dossier/var/ran/jenkins et 644 dans le fichier jenkins.pid, l'erreur d'autorisation disparaîtra. Après ceci j'ai essayé d'employer la métrique: procstat.service.process.cpu.usage contre le processus jenkins (c'est-à-dire process_name="jenkins") mais il ne trouve pas jenkins comme sa valeur. Ai-je manqué quelque chose?

+0

Raccourcissement mon poste un peu et a ouvert un autre poste pour mon autre question. Est-ce une question légitime maintenant ou encore trop large? –

Répondre

1

Ajouté le config suivante dans /etc/telegraf/telegraf.d/someFile.conf et résolu le problème d'autorisation à l'aide 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.