Strumenti e risorse

Panoramica

Il server MCP di Zabbix espone le funzionalità di Zabbix ai client MCP come strumenti e risorse.

I nomi degli strumenti descrivono l'attività. Se il parametro ToolPrefix è impostato, il prefisso viene aggiunto a ogni nome dello strumento; le regole di accesso agli strumenti corrispondono ai nomi semplici elencati di seguito.

Strumenti di lettura

Strumento Metodo API Zabbix Argomenti Ordinato per Risorsa
hostgroup_get hostgroup.get groupids, names, search, limit name zabbix://hostgroup/<id>
templategroup_get templategroup.get groupids, names, search, limit name zabbix://templategroup/<id>
host_get host.get hostids, groupids, search, limit name zabbix://host/<id>
template_get template.get templateids, groupids, search, limit name zabbix://template/<id>
item_get item.get hostids, itemids, search, limit name zabbix://item/<id>
lld_get discoveryrule.get hostids, ruleids, limit name -
interface_get hostinterface.get hostids, interfaceids, limit ID dell'interfaccia -
macro_get usermacro.get hostids o global, macro_names, limit macro -
problem_get problem.get eventids, groupids, hostids, severities, acknowledged, suppressed, recent, limit ID dell'evento, decrescente -
maintenance_get maintenance.get maintenanceids, groupids, hostids, limit name -
history_get history.get itemids, time_from, time_till, type, limit clock, decrescente -
trigger_get trigger.get triggerids, hostids, search, limit description zabbix://trigger/<id>

Nota:

  • host_get e template_get restituiscono anche i trigger di ciascun oggetto (un insieme limitato di campi), i tag e i template collegati. Gli item, le regole di discovery, le interfacce e le macro vengono restituiti dagli strumenti corrispondenti.
  • history_get richiede un intervallo di tempo non superiore a 7 giorni e con inizio non antecedente a 7 giorni fa. L'argomento type deve essere uno tra float, unsigned, character, text, log o json e deve corrispondere al tipo di valore degli item; se il tipo è errato, viene restituito un risultato vuoto, che non può essere distinto da un item privo di dati. La cronologia degli item binari (tipo di valore 5) non può essere recuperata tramite il server MCP.
  • Gli strumenti di lettura richiedono un elenco fisso di campi; tutti i campi (output: extend) non vengono mai richiesti.
  • I risultati degli strumenti che dispongono di una risorsa contengono il campo uri, in modo che un agent possa passare da un elenco a una singola entità.

Formato della risposta

Tutti gli strumenti di lettura restituiscono la risposta nello stesso formato:

{
  "results": [ ... ],
  "count": 2,
  "truncated": true,
  "truncated_by": "count",
  "limit": 2,
  "note": "The result count limit was reached ..."
}

Una risposta è limitata dall'argomento limit (predefinito: 100, massimo: 1000) e dalla dimensione serializzata della risposta (MaxResponseSize, predefinita: 64K). La risposta viene interrotta quando viene raggiunto uno dei due limiti. La risposta viene troncata solo tra i risultati, mai all'interno di un risultato, e una risposta troncata indica quale limite è stato raggiunto. Ogni strumento ha un ordine di ordinamento fisso, quindi una risposta troncata contiene sempre l'inizio dell'intero set di risultati. La paginazione non è supportata; per ottenere altri risultati, restringere la query.

Strumenti per i problemi

Tutti gli strumenti per i problemi chiamano event.acknowledge con i flag di azione corrispondenti.
L'argomento eventids è obbligatorio; gli ID degli eventi possono essere recuperati con problem_get.
È possibile aggiungere un messaggio (commento) con qualsiasi strumento per i problemi.
L'argomento message è facoltativo, tranne che per problem_annotate, per il quale è obbligatorio; se specificato, il messaggio viene registrato nella stessa chiamata all'API di Zabbix.

Strumento Effetto Argomenti aggiuntivi
problem_acknowledge Conferma il problema. -
problem_unacknowledge Rimuove la conferma. -
problem_close Chiude manualmente il problema (solo per i trigger che consentono la chiusura manuale). -
problem_annotate Registra un messaggio. message (obbligatorio)
problem_change_severity Modifica la gravità del problema. severity (0-5)
problem_suppress Sopprime il problema fino a un'ora specificata o a tempo indeterminato. suppress_until
problem_unsuppress Rimuove la soppressione. -

Non è possibile creare o eliminare problemi; tutti gli strumenti per i problemi aggiornano i problemi esistenti.

Strumenti di manutenzione

Strumento Metodo API di Zabbix Argomenti
maintenance_create maintenance.create name, groupids e/o hostids, active_since, active_till, timeperiods, description, tags, tags_evaltype
maintenance_update maintenance.update maintenanceid e uno qualsiasi degli argomenti precedenti. Gli argomenti elenco sostituiscono l'intero insieme di valori; un elenco vuoto cancella l'insieme.
maintenance_delete maintenance.delete maintenanceids

Quando viene aggiornato un periodo di manutenzione, gli argomenti elenco (come hostids, groupids e timeperiods) sostituiscono i valori esistenti invece di aggiungervi nuovi valori. Ad esempio, se un periodo di manutenzione include gli host A e B e maintenance_update viene chiamato con hostids contenente solo l'host C, il periodo di manutenzione includerà solo l'host C.

maintenance_create è l'unica operazione non idempotente e maintenance_delete è l'unica operazione che non può essere annullata. Per impedirne l'utilizzo, negare questi strumenti con il parametro DenyTool.

Comportamento degli strumenti di scrittura

Gli strumenti per i problemi e la manutenzione sono strumenti di scrittura. Funzionano come segue:

  • Gli argomenti vengono convalidati prima di qualsiasi chiamata all'API di Zabbix; se la convalida non riesce, l'errore indica il vincolo non rispettato.
  • Se il client lo supporta, la modifica viene applicata solo dopo essere stata approvata dall'utente.
  • La modifica viene eseguita da Zabbix utilizzando il token del chiamante. Zabbix verifica le autorizzazioni e registra la modifica nel registro di audit associandola al proprietario del token.
  • Gli errori di Zabbix, inclusi gli errori di autorizzazione, vengono restituiti invariati come oggetto di errore con i campi code, message e data.
  • Gli strumenti di scrittura restituiscono direttamente il risultato di Zabbix; i limiti di risposta degli strumenti di lettura non si applicano.
  • Le chiamate di scrittura non vengono mai ritentate dal server MCP.

Risorse

Le risorse utilizzano lo schema URI zabbix://<kind>/<id>. Solo zabbix://about è incluso nella risposta resources/list; gli ID delle entità non possono essere enumerati e vengono ottenuti dai risultati degli strumenti. La risposta resources/templates/list elenca i tipi di entità.

URI Contenuto
zabbix://about L'URL dell'API, l'URL del frontend, la versione di Zabbix, l'identità a cui corrisponde il token del chiamante e l'elenco degli strumenti esposti.
zabbix://host/<hostid> Il record del host senza item, trigger, interfacce e macro.
zabbix://hostgroup/<groupid> Il record del gruppo di host senza l'elenco dei membri.
zabbix://template/<templateid> Il record del template senza item, trigger e regole di discovery.
zabbix://templategroup/<groupid> Il record del gruppo di template senza l'elenco dei membri.
zabbix://item/<itemid> La definizione dell'item senza il valore corrente.
zabbix://trigger/<triggerid> La definizione del trigger senza host, dipendenze, funzioni e tag.

Una risorsa il cui strumento corrispondente è negato non esiste. Un'entità inesistente e un'entità a cui il proprietario del token non ha accesso vengono entrambe segnalate come resource not found; questi casi sono deliberatamente indistinguibili. La risorsa zabbix://about non è interessata dalle regole di accesso agli strumenti.