4.2 KiB
4.2 KiB
Configuración para Zabbix - Cisco MAC Monitor LLD
================================================
CONFIGURACIÓN DEL JAVASCRIPT EN ZABBIX
1. Crear el Script JavaScript en Zabbix
Administración > Scripts > Crear Script
- Nombre:
Cisco MAC LLD - Tipo:
Script - Ejecutar en:
Zabbix server - Comandos: [Copiar contenido de zabbix_lld_script.js]
2. Configurar Discovery Rule
Configuración > Hosts > [Tu Host Cisco] > Discovery > Crear regla de descubrimiento
- Nombre:
Cisco MAC Address Discovery - Tipo:
Script - Clave:
cisco.mac.discovery - Script:
Cisco MAC LLD - Intervalo:
1h(o según necesites) - Periodo de conservación de elementos perdidos:
7d
3. Configurar Macros del Host
Configuración > Hosts > [Tu Host Cisco] > Macros
Crear las siguientes macros:
{$CISCO_SERVICE_URL} = https://tu-servidor:8443
{$CISCO_HOST} = {HOST.CONN} # O la IP específica
{$CISCO_USERNAME} = tu_usuario_ssh
{$CISCO_PASSWORD} = tu_contraseña_ssh
{$CISCO_TIMEOUT} = 60
4. Configurar Item Prototypes
Una vez creada la Discovery Rule, crear los siguientes Item Prototypes:
Item 1: Contador de MACs por Puerto
- Nombre:
Port {#PORT_NAME} - MAC Count - Tipo:
Dependent item - Clave:
cisco.port.mac.count[{#PORT_NAME}] - Master item:
cisco.mac.discovery - Preprocessing:
- JSONPath:
$.data[?(@['{#PORT_NAME}'] == '{#PORT_NAME}')]['{#MAC_COUNT}'].first()
- JSONPath:
Item 2: Lista de MACs por Puerto
- Nombre:
Port {#PORT_NAME} - MAC Addresses - Tipo:
Dependent item - Clave:
cisco.port.mac.addresses[{#PORT_NAME}] - Tipo de información:
Text - Master item:
cisco.mac.discovery - Preprocessing:
- JSONPath:
$.data[?(@['{#PORT_NAME}'] == '{#PORT_NAME}')]['{#MAC_ADDRESSES}'].first()
- JSONPath:
Item 3: VLANs por Puerto
- Nombre:
Port {#PORT_NAME} - VLANs - Tipo:
Dependent item - Clave:
cisco.port.vlans[{#PORT_NAME}] - Tipo de información:
Text - Master item:
cisco.mac.discovery - Preprocessing:
- JSONPath:
$.data[?(@['{#PORT_NAME}'] == '{#PORT_NAME}')]['{#VLANS}'].first()
- JSONPath:
5. Configurar Triggers (Opcional)
Trigger 1: Puerto con muchas MACs
- Nombre:
Port {#PORT_NAME} has too many MAC addresses - Expresión:
last(/Template/cisco.port.mac.count[{#PORT_NAME}])>50 - Severidad:
Warning
Trigger 2: Cambio en número de MACs
- Nombre:
MAC count changed on port {#PORT_NAME} - Expresión:
change(/Template/cisco.port.mac.count[{#PORT_NAME}])<>0 - Severidad:
Information
CONFIGURACIÓN DEL SERVICIO HTTPS
Variables de entorno necesarias:
CISCO_SERVICE_PORT=8443
SSL_CERT_PATH=/path/to/certificate.pem
SSL_KEY_PATH=/path/to/private.key
Comando para generar certificado autofirmado:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/C=ES/ST=Madrid/L=Madrid/O=Organization/CN=cisco-monitor"
ESTRUCTURA ESPERADA DE RESPUESTA JSON
{
"data": [
{
"port": "Gi1/0/1",
"data": {
"count": 2,
"vlans": "600,601",
"addresses": "F0:8E:DB:2E:4D:86 600\nF0:8E:DB:2E:4D:86 601",
"timestamp": 1763048672
}
},
{
"port": "Gi1/0/10",
"data": {
"count": 1,
"vlans": "151",
"addresses": "00:50:56:A6:91:69 151",
"timestamp": 1763048672
}
},
{
"port": "Gi1/0/11",
"data": {
"count": 0,
"vlans": "",
"addresses": "",
"timestamp": 1763048672
}
}
],
"timestamp": "2024-11-13T10:30:00",
"unix_timestamp": 1700000000,
"device_hostname": "cisco-switch",
"total_ports": 24,
"total_macs": 45,
"ports_with_macs": 12,
"ports_without_macs": 12
}
TROUBLESHOOTING
1. Verificar logs de Zabbix
tail -f /var/log/zabbix/zabbix_server.log | grep "Cisco"
2. Probar el servicio manualmente
curl -k -X POST https://tu-servidor:8443/mac-monitor \
-H "Content-Type: application/json" \
-d '{
"host": "192.168.1.10",
"username": "admin",
"password": "password"
}'
3. Verificar conectividad HTTPS desde Zabbix
Usar "Administration > Scripts > Test" en Zabbix con un script simple:
var req = new HttpRequest();
var response = req.get("https://tu-servidor:8443/health");
return response;