first commit
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
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
|
||||
Reference in New Issue
Block a user