2011-06-14 21 views
14

Aquí está mi objetivo: me gustaría poder informar varias métricas al zabbix para que podamos mostrar los gráficos en una página web.Cómo exponer los datos a zabbix

Estas métricas incluyen:

  • latencia por la presentación de servicios de jabón
  • diversos resultados de la consulta de una o más bases de datos.

¿Qué cosas debo escribir y/o exponer? ¿O el servidor zabbix va a ir a buscarlo desde un servicio expuesto?

Me han informado que una secuencia de comandos que devuelve un valor único funcionará, pero me pregunto si esa es la manera correcta.

Respuesta

14

puedo ofrecer 2 sugerencias para obtener las métricas en Zabbix:

  1. Uso del zabbix_sender binaria para alimentar a los datos de la secuencia de comandos directamente al servidor Zabbix. Esto permite que su secuencia de comandos llame a su propio intervalo y configure todos los parámetros necesarios. Solo necesita conocer la ubicación del zabbix_sender binario.

    Dentro de la interfaz del servidor Zabbix, crearía elementos con el tipo de Zabbix trapper. Este es el tipo de elemento que recibe los valores enviados desde el zabbix_sender. Usted crea el nombre de la clave y tiene que coincidir.

  2. La segunda forma de hacerlo es especificar un nombre de clave y script/binario dentro del archivo zabbix_agentd.conf. Cada vez que el servidor Zabbix solicita este elemento, se llamará al script y se grabarán los datos del script.

    Esto le permite establecer los intervalos en la configuración del elemento Zabbix en lugar de forzarlo a ejecutar su secuencia de comandos en sus propios intervalos. Sin embargo, deberá agregar este bit de información adicional a su archivo zabbix_agentd.conf para cada host.

Puede haber otras maneras de hacer esto directamente desde Python (zabbix_sender fijaciones para Python, tal vez?). Pero estas son las 2 formas que he usado antes, que funcionan bien. Esto no es realmente específico de Python. Pero debería poder usar zabbix_sender en sus scripts de Python. Espero que esta información ayude!

Actualización: También recordé que Zabbix estaba trabajando en/tiene una API (estilo JSON/RPC). Pero el sitio de documentación está inactivo en este momento y no estoy seguro de si la API es para enviar datos de elementos o no. Aquí está el wiki en la API: http://www.zabbix.com/wiki/doc/api

Y un proyecto para Python API: https://github.com/gescheit/scripts/tree/master/zabbix/

Parece que hay poca documentación sobre la API, ya que es nueva partir de la versión Zabbix 1.8

+0

No hay enlaces zabbix_sender para Python. Tengo un montón de scripts de Python envío de datos a zabbix_sender, cuando se está tratando con una gran cantidad de métricas es la manera más eficiente para poblar un archivo zabbix_sender compatible en un bucle: de impresión >> metrics_file_descriptor, '% s% s% s% s '% (hostname, item_key1, zbx_timestamp, metric1) y llámelo para que lo envíe a su servidor Zabbix command = "% s -z% s -p% s --with-timestamps - -input-file% s>/dev/null 2>/dev/null "% (zbx_sender, zbx_server_ip, zbx_port, metrics_file) args = shlex.split (comando) –

+0

También, la envoltura python zabbix API es bastante útil para creación y actualización masiva de elementos y disparadores, considerando que la mayoría de las funciones más frecuentes son trabajando, algunos de ellos, sin embargo, todavía necesitan codificación adicional para funcionar. –

+0

También hay https://github.com/lukecyca/pyzabbix, que se ve un poco mejor, que https://github.com/gescheit/scripts/tree/master/zabbix/ – Blin

2

En realidad no hay un enlace de pitón para zabbix_sender. http://pypi.python.org/pypi/zbxsend

+0

No enlace a una versión específica . Las versiones cambian de vez en cuando. – S0me0ne

+0

gracias por su sugerencia. la información de la versión ha sido eliminada del enlace. – Fatalerr

Cuestiones relacionadas