Pregunta:
(Ver la parte inferior para actualizaciones …)
Escribí un script de método de entrada de datos para Cacti (en Ruby, para recopilar estadísticas de beanstalkd) y funciona desde la línea de comando (devolviendo un solo entero simple, como se documenta aquí ) cuando se ejecuta como la cuenta de usuario de cactus pero la herramienta Cacti en sí mismo no recopila ningún dato y no hay nada en los registros.
Aquí está la configuración de los métodos de entrada de datos: Método de entrada de datos de cactus http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg
Y aquí está el gráfico resultante (después de que se haya agregado a la plantilla de gráfico de un host y se haya dejado correr el tiempo suficiente para recopilar datos): Cacti Graph http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg
Actualización n. ° 1 : parece que Cacti podría estar destruyendo el medio ambiente:
sudo su - cacti -c 'env -i /script/beanstat --host 10.11.12.13 --port 11300 --stat current-waiting' /script/beanstat:4:in `require': no such file to load -- rubygems (LoadError) from /script/beanstat:4
Si ese es el caso, ¿cómo podría solucionarlo?
Actualización n. ° 2 : esta respuesta en stackoverflow.com parece haber resuelto el problema del medio ambiente, pero aún no hay datos en el gráfico.
Actualización n. ° 3 : Gracias a la sugerencia de @ Heath, subí el nivel de registro de encuestadores y capté esto:
WARNING: Result from CMD not valid. Partial Result: U
No he tenido suerte buscando en Google qué significa "Resultado parcial: U". El script solo imprime un único valor entero.
Actualización n. ° 4 : finalmente conseguí que esto funcionara. El problema principal fue la falta de entorno cuando se ejecuta el script de shell. Tuve que resolver eso colocando el prefijo de mi script Ruby con las siguientes líneas:
#!/bin/sh PATH=/usr/local/bin:$PATH exec ruby -x"/full/path/to/script/directory" $0 "$@" #!/usr/bin/env ruby
Y el problema secundario fue la configuración adecuada de los métodos de entrada de datos (uno para cada métrica separada que quería recopilar, aunque todos usaban el mismo script) que alimenta las fuentes de datos que alimentan las plantillas de datos (o viceversa, yo ' Todavía no tengo claro eso) que alimenta las plantillas de gráficos que deben asignarse a los dispositivos y luego agregarse a los árboles de gráficos. En resumen, es una gran debacle con basura para la documentación y espero no tener que volver a hacerlo nunca más.
Actualización n. ° 5 : he compartido mi script en GitHub http://github.com/trak3r/cacti-beanstalkd-script
Respuesta:
Cuando intentaba depurar una secuencia de comandos personalizada, me resultó útil que la secuencia de comandos agregara información a un archivo temporal cada vez que se ejecutaba; de esa manera podría asegurarme de que se llamara de la manera que esperaba. Cosas como los argumentos de la línea cmd, el entorno y los valores que iba a devolver. También es posible que desee redirigir stderr a un archivo de registro para detectar la salida de error del script.
Veo que hizo un método de entrada de datos y una plantilla de gráfico; ¿También hiciste una plantilla de datos?