169 lines
5.8 KiB
YAML
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
|