Files
los-vecinos-de-cisco/zabbix/Template Cisco MAC monitor.yaml
2025-12-09 12:45:15 +01:00

169 lines
5.8 KiB
YAML

zabbix_export:
version: '7.0'
template_groups:
- uuid: 36bff6c29af64692839d077febfc7079
name: 'Templates/Network devices'
templates:
- uuid: 7dc3e191c7804221b777b7c79944f283
template: 'Template Cisco MAC monitor'
name: 'Template Cisco MAC monitor'
groups:
- name: 'Templates/Network devices'
items:
- uuid: a2d9df39e93d468891e68ba8d16c490b
name: 'Get data'
type: SCRIPT
key: cisco-mac-monitor.get-data
history: 1d
value_type: TEXT
trends: '0'
params: |
/**
* Zabbix JavaScript para LLD - Compatible con versiones antiguas
* Funciona con Zabbix 4.x, 5.x y 6.x
*/
// Configuración mediante macros
var serviceUrl = "{$CISCO_SERVICE_URL}";
var ciscoHost = "{$CISCO_HOST}";
var ciscoUsername = "{$CISCO_USERNAME}";
var ciscoPassword = "{$CISCO_PASSWORD}";
// Validar parámetros requeridos
if (!serviceUrl || !ciscoHost || !ciscoUsername || !ciscoPassword) {
throw "Faltan parámetros: CISCO_SERVICE_URL, CISCO_HOST, CISCO_USERNAME, CISCO_PASSWORD";
}
// Log de inicio
Zabbix.Log(4, "[Cisco LLD] Host: " + ciscoHost);
// Preparar datos para POST
var postData = JSON.stringify({
"host": ciscoHost,
"username": ciscoUsername,
"password": ciscoPassword,
"port": 22,
"timeout": 30
});
// Crear request HTTP (método básico compatible)
var req = new HttpRequest();
req.addHeader('Content-Type: application/json');
try {
// Hacer consulta POST
var response = req.post(serviceUrl , postData);
// Verificar status
if (req.getStatus() !== 200) {
throw "HTTP Error " + req.getStatus();
}
// Parsear respuesta
var jsonData = JSON.parse(response);
// Validar estructura
if (!jsonData.data) {
throw "Invalid response structure";
}
// Log de éxito
Zabbix.Log(4, "[Cisco LLD] Success: " + jsonData.data.length + " items");
// Retornar para LLD
return JSON.stringify({"data": jsonData.data});
} catch (error) {
Zabbix.Log(2, "[Cisco LLD] ERROR: " + error);
throw "Cisco LLD failed: " + error;
}
discovery_rules:
- uuid: 39c0b9d76a1a4118820b13906e1b00ca
name: 'Port discovery'
type: DEPENDENT
key: port.discovery
delay: '0'
item_prototypes:
- uuid: 983b103f825d451db67b4dd938f569fd
name: '{#PORT}: MAC address list'
type: DEPENDENT
key: 'mac.addresses[{#PORT}]'
delay: '0'
value_type: TEXT
trends: '0'
preprocessing:
- type: JSONPATH
parameters:
- '$.data[?(@.port=="{#PORT}")].data.addresses'
- type: TRIM
parameters:
- '[]"'
- type: JAVASCRIPT
parameters:
- 'return value.replace(/\\n/g, String.fromCharCode(10));'
master_item:
key: cisco-mac-monitor.get-data
- uuid: 898b84bc5bb54ed1b261af3ebf54caf0
name: '{#PORT}: MAC address count'
type: DEPENDENT
key: 'mac.count[{#PORT}]'
delay: '0'
trends: '0'
preprocessing:
- type: JSONPATH
parameters:
- '$.data[?(@.port=="{#PORT}")].data.count'
- type: TRIM
parameters:
- '[]'
master_item:
key: cisco-mac-monitor.get-data
- uuid: d2691b9290a84befa03c931c934c5fe1
name: '{#PORT}: VLANs'
type: DEPENDENT
key: 'mac.vlans[{#PORT}]'
delay: '0'
value_type: TEXT
trends: '0'
preprocessing:
- type: JSONPATH
parameters:
- '$.data[?(@.port=="{#PORT}")].data.vlans'
- type: TRIM
parameters:
- '[]"'
- type: STR_REPLACE
parameters:
- ','
- ', '
master_item:
key: cisco-mac-monitor.get-data
master_item:
key: cisco-mac-monitor.get-data
lld_macro_paths:
- lld_macro: '{#ADDRESSES}'
path: $.data.addresses
- lld_macro: '{#COUNT}'
path: $.data.count
- lld_macro: '{#PORT}'
path: $.port
- lld_macro: '{#TIMESTAMP}'
path: $.data.timestamp
- lld_macro: '{#VLANS}'
path: $.data.vlans
preprocessing:
- type: JSONPATH
parameters:
- '$.data[*]'
macros:
- macro: '{$CISCO_HOST}'
value: 10.150.250.2
- macro: '{$CISCO_PASSWORD}'
type: SECRET_TEXT
- macro: '{$CISCO_SERVICE_URL}'
value: 'https://ufrparesb015.nead.danet/mac-monitor'
- macro: '{$CISCO_TIMEOUT}'
value: '20'
- macro: '{$CISCO_USERNAME}'
value: itops