Red de conocimiento informático - Conocimiento informático - Cómo obtener datos de seguimiento a través de Zabbix

Cómo obtener datos de seguimiento a través de Zabbix

La arquitectura básica de zabbix:

1. Servidor

El proceso central del sistema zabbix, utilizado para sondear y capturar datos, enviar notificaciones, etc. Es un objeto para el agente zabbix y los datos de informes del agente zabbix. El propio servidor puede detectar servicios de red de forma remota. Todas las configuraciones, estadísticas y datos procesables de front-end y back-end se almacenan aquí. Contiene partes de servidor, interfaz front-end y base de datos back-end.

2. El agente

se implementa en el host monitoreado para monitorear los recursos y aplicaciones locales e informar los resultados al servidor zabbix. Utiliza llamadas al sistema local y, por lo tanto, es muy eficiente. Hay dos modos de detección: activo y pasivo. En modo pasivo, el agente devuelve datos en función de una solicitud específica del servidor o agente. En modo activo, el servidor primero obtiene activamente la lista de elementos de monitoreo y luego detecta y devuelve nuevos datos. El uso de detección activa o pasiva depende de la configuración del monitor correspondiente.

3. El agente

se puede implementar libremente o no, y se utiliza principalmente para compartir la carga del servidor. Esta es una gran solución en caso de monitoreo centralizado de ubicaciones remotas, sucursales y redes. Los datos pueden recopilarse del dispositivo monitoreado y almacenarse en caché en el proxy local y luego pasarse al servidor zabbix correspondiente.

4.Java Gateway

La implementación Java del demonio se utiliza para monitorear aplicaciones de tipo JMX.

5. Remitente

La herramienta de línea de comandos zabbix_sender se utiliza para enviar datos de rendimiento y disponibilidad al servidor zabbix. Se utiliza principalmente para que los scripts de usuario envíen datos periódicamente al servidor.

Por ejemplo:

shellgt; cd bin

shellgt ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43

6. Obtener

La utilidad de línea de comando zabbix_get se utiliza para comunicarse con el agente y obtener datos del mismo. Se puede utilizar para solucionar problemas del agente zabbix.

Por ejemplo:

shellgt; cd bin

shellgt ./zabbix_get -s 127.0.0.1 -p 10050 -k "system.cpu.load[ all , avg1]"

#zabbix Glosario:

Host

Dispositivos que necesitan ser monitoreados, como conmutadores, enrutadores, servidores WEB, servidores DB, etc.

Grupo de host

Una agrupación lógica de dispositivos monitoreados, como un grupo de servidores de base de datos, un grupo de servidores web, etc. Puede incluir hosts y plantillas. Se utiliza para el control de permisos

Proyectos

Proyectos que se van a monitorear, como la tasa de inactividad de la CPU, la utilización específica del disco, etc.

Disparadores

Las expresiones lógicas se utilizan para evaluar si el valor de monitoreo recibido excede el umbral establecido

Eventos

Eventos, como cambios en estado de activación. Eventos notables

Acciones

Secuencia predefinida de acciones en respuesta a eventos

Actualizaciones

Escenarios personalizados para realizar acciones dentro de acciones Enviar notificación; , secuencia de ejecución de comandos remotos

Medios

Envío de notificaciones

Notificaciones

Mensajes sobre eventos enviados a los usuarios a través de medios

Comandos remotos

Comandos predefinidos que se activan y ejecutan automáticamente en la computadora monitoreada

Plantillas

Simplifica y acelera la implementación a gran escala en el host tareas de seguimiento.

Contiene un conjunto de elementos como proyectos, activadores, gráficos, pantallas, aplicaciones y reglas de descubrimiento subyacentes

Aplicaciones

Un conjunto de elementos en un grupo lógico

Aplicación web

Una o más solicitudes HTTP para comprobar la disponibilidad del sitio web

Frontal

interfaz web zabbix

api zabbix

Permite la creación, actualización y recuperación de aplicaciones zabbix, y permite la creación, actualización y recuperación de objetos zabbix como hosts, proyectos, gráficos, etc. a través del protocolo JSON RPC.

servidor zabbix

es el núcleo de zabbix y se utiliza para realizar tareas como monitorear, interactuar con agentes zabbix y clientes zabbix, calcular activadores, enviar notificaciones, almacenar datos, etc. Tareas

agente zabbix

Implementado en el host monitoreado para monitorear recursos y aplicaciones locales

agente zabbix

Representa zabbix El servidor recopila datos para compartir la carga de procesamiento

Configuración #zabbix:

Se puede configurar a través de la interfaz WEB o plantillas

El contenido que debe configurarse incluye usuarios y grupos de usuarios, hosts, grupos de hosts, proyectos, activadores, eventos, notificaciones, plantillas, visualizaciones, etc.

La configuración final se almacena en la base de datos backend.

Materiales de referencia:

/documentation/2.4/manual/config

Cómo obtener zabbix

1. >

La API basada en WEB puede obtener o cambiar la configuración de zabbix a través del protocolo JSON PRC y puede usarse para obtener datos de monitoreo históricos. Las solicitudes y respuestas entre el cliente y la API utilizan el formato JSON. Contiene una colección de métodos que están funcionalmente divididos en diferentes grupos.

El formato para realizar una solicitud HTTP es similar al siguiente:

POST pany.com/zabbix/api_jsonrpc.php HTTP/1.1

Tipo de contenido : aplicación/ json-rpc

{"jsonrpc": "2.0", "method": "apiinfo.version", "id": 1, "auth": null, "params": {} }

Donde company.com/zabbix/ es la dirección del front-end de zabbix; el tipo de contenido debe especificarse como application/json-rpc, application/json o application/jsonrequest. {"json-rpc": "2.0", "method": "apiinfo.version", "id": 1, "auth": null, "params": {}} es el contenido específico de la solicitud.

Algunos ejemplos:

*Autenticación de inicio de sesión

{

"jsonrpc":"2.0",

"método":"usuario.login",

"params":{

"usuario":"admin",

"contraseña":" zabbix "

},

"id": 1,

"auth": nulo

}

Entre ellos:

jsonrpc: Especifica la versión del protocolo JSON-RPC, en este caso la versión 2.0

método.

Especifique el método API que se llamará, aquí está el inicio de sesión del usuario

params: los parámetros que se pasarán al método API, aquí está el nombre de usuario y la contraseña

id: el identificador de la solicitud

auth: token de autenticación de usuario, todavía no existe tal cosa, por lo que está vacía

Si no hay errores en los parámetros, la respuesta contendrá el token de autenticación de usuario , por ejemplo

{

"jsonrpc": "2.0",

"result": "0424bd59b807674191e7d77572075f33",

"id ": 1

}

* Obtener información del host

{

"jsonrpc": "2.0",

"method": "host. get",

"params":{

"output":[

"hostid",

"host"

],

"selectInterfaces": [

"interfaceid",

"ip"

]

},

"id": 2,

"auth": "0424bd59b807674191e7d77572075f33"

}

Este ejemplo utiliza el token de autenticación de usuario disponible para obtener el ID, el nombre y otra información del host configurado a través del método host.get. El valor de retorno es el siguiente

. {

"jsonrpc": "2.0",

"resultado". p>

"resultado":[

{

"hostid":"10084 ",

"host":"servidor Zabbix",

"interfaces":[

{

"interfaceid": " 1",

"ip": "127.0.0.1"

}

]

}

],

"id": 2

}

Para mejorar el rendimiento, intentaremos enumerar los elementos requeridos en lugar de devolver todos los datos

p>

*Crear un nuevo proyecto de monitoreo

Por ejemplo, cree un nuevo monitor en el host obtenido en el paso anterior y monitoree el espacio restante en el directorio /home/joe/

{

"jsonrpc":"2.0",

"method":"item.create" ,

"params":{

"name":"Espacio libre en disco con $1",

"key_":"vfs.fs.size[ /home/joe/, ​​gratis]",

p>

"hostid": "10084",

"type": 0,

"value_type": 3,

"interfaceid": "1",

"delay": 30

},

"auth": "0424bd59b807674191e7d77572075f33",

"id" :3

}

"auth":"038e1d7b1735c6a5436ee9eae095879e",

"id":1

}

Devoluciones:

<

p>{

"jsonrpc":"2.0",

"resultado":[

{

"itemid":"23296",

"reloj":"1351090996",

"valor":"0.0850",

"ns":"563157632"

},

{

" itemid": "23296",

"reloj": "1351090936",

"valor" :"0.1600",

"ns":"549216402"

},

...]...

}

* Manejo de errores

El siguiente ejemplo olvidó el parámetro de grupo

{

"jsonrpc":"2.0",

"method":"host.create",

"params":{

"host":"Linux Server",

" interfaz" : [

{

"tipo": 1,

"principal": 1,

"useip": 1,

"IP": "192.168.3.1",

"dns": "",

"Puerto": "10050"

}

]

},

"id": 3,

"auth": "0424bd59b807674191e7d77572075f33"

}

}

El resultado devuelto es el siguiente, que no contiene el atributo de resultado sino el atributo de error

{

"jsonrpc":"2.0",

"error":{

"code":-32602,

"message":"Parámetros no válidos. ",

"data": "No hay grupos para el host ("servidor Linux")".

},

"id": 3

}

Para obtener datos de seguimiento, el método History.get merece más atención. En realidad, este método termina obteniendo los datos de la base de datos backend. Este método proporciona una gran cantidad de parámetros y es muy flexible de usar. Sin embargo, este método no es adecuado para la adquisición a gran escala de grandes cantidades de datos y proyectos de monitoreo a gran escala de una gran cantidad de hosts al mismo tiempo.