Apéndice 1. Comentario de referencia

Notación

Tipos de datos

La API de Zabbix admite los siguientes tipos de datos como entrada:

Tipo Descripción
booleano Un valor booleano, acepta true o false.
flag El valor se considera true si se pasa y no es igual a null; en caso contrario, se considera false.
entero Un número entero.
float Un número de punto flotante.
cadena Una cadena de texto.
texto Una cadena de texto más larga.
marca de tiempo Una marca de tiempo de Unix.
matriz Una secuencia ordenada de valores, es decir, una matriz simple.
objeto Una matriz asociativa.
consulta Un valor que define qué datos deben devolverse.

Se puede definir como una matriz de nombres de propiedades para devolver solo propiedades específicas, o como uno de los valores predefinidos:
extend - devuelve todas las propiedades del objeto;
count: devuelve el número de registros recuperados, admitido sólo por determinadas subselecciones.

La API de Zabbix siempre devuelve solamente valores como cadenas o matrices.

Etiquetas de propiedad

Algunas de las propiedades de los objetos están marcadas con etiquetas cortas para describir su comportamiento. Se utilizan las siguientes etiquetas:

  • solo lectura - el valor de la propiedad se establece automáticamente y el cliente no puede definirlo ni modificarlo;
  • constante - el valor de la propiedad se puede establecer al crear un objeto, pero no se puede cambiar después.

Valor de ID reservado "0"

El valor de ID reservado "0" se puede utilizar para filtrar elementos y eliminar objetos referenciados. Por ejemplo, para eliminar un proxy al que se hace referencia de un equipo, proxy_hostid debe establecerse en 0 ("proxy_hostid": "0") o para filtrar equipos monitoreados por la opción de servidor proxyids deben establecerse en 0 ("proxyids": "0").

Parámetros comunes del método "get"

Los siguientes parámetros son compatibles con todos los métodos "get":

Parámetro Tipo Descripción
countOutput booleano Devuelve el número de registros en el resultado en lugar de los datos reales.
editable booleano Si se establece en true, devuelve solo los objetos para los que el usuario tiene permisos de escritura.

Valor predeterminado: false.
excludeSearch booleano Devuelve resultados que no coinciden con los criterios dados en el parámetro search.
filter objeto Devuelve sólo aquellos resultados que coinciden exactamente con el filtro dado.

Acepta una matriz, donde las claves son nombres de propiedades y los valores son un valor único o una matriz de valores con los que comparar.

No admite campos de texto tipo de datos.
limit entero Limita el número de registros devueltos.
output consulta Propiedades del objeto que se devolverán.

Valor predeterminado: extend.
preservekeys booleano Utilice ID como claves en la matriz resultante.
search objeto Devuelve resultados que coinciden con el patrón dado (no distingue entre mayúsculas y minúsculas).

Acepta una matriz, donde las claves son nombres de propiedades y los valores son cadenas para buscar. Si no se proporcionan opciones adicionales, se realizará una búsqueda LIKE "%…%".

Solo admite campos de cadena y texto [tipo de datos] (#tipos de datos).
searchByAny booleano Si se establece en "verdadero", se devuelven resultados que coinciden con cualquiera de los criterios dados en el parámetro "filtro" o "búsqueda" en lugar de todos ellos.

Predeterminado: "falso".
searchWildcardsEnabled booleano Si se establece en true, se habilita el uso de "*" como carácter comodín en el parámetro search.

Predeterminado: false.
sortfield cadena/matriz Ordena el resultado según las propiedades dadas. Consulte la descripción del método de obtención de una API específica para obtener una lista de propiedades que se pueden usar para ordenar. Las macros no se expanden antes de ordenarlas.

Si no se especifica ningún valor, los datos se devolverán sin ordenar.
sortorder cadena/matriz Orden de clasificación. Si se pasa una matriz, cada valor coincidirá con la propiedad correspondiente dada en el parámetro sortfield.

Los valores posibles son:
ASC - (predeterminado) ascendente;
DESC - descendente.
startSearch booleano El parámetro search comparará el comienzo de los campos, es decir, realizará una búsqueda LIKE "…%" en su lugar.

Se ignora si searchWildcardsEnabled está establecido en true.

Ejemplos

Verificación de permisos de usuario

¿Tiene el usuario permiso para escribir en equipos cuyos nombres comiencen por "MySQL" o "Linux"?

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "countOutput": true,
               "search": {
                   "host": ["MySQL", "Linux"]
               },
               "editable": true,
               "startSearch": true,
               "searchByAny": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Respuesta:

{
           "jsonrpc": "2.0",
           "result": "0",
           "id": 1
       }

Un resultado cero significa que no hay equipos con permisos de lectura/escritura.

Recuento de discrepancias

Cuente el número de equipos cuyos nombres no contienen la subcadena "ubuntu"

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "countOutput": true,
               "search": {
                   "host": "ubuntu"
               },
               "excludeSearch": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Respuesta:

{
           "jsonrpc": "2.0",
           "result": "44",
           "id": 1
       }

Búsqueda de equipos usando comodines

Encuentre equipos cuyo nombre contenga la palabra "servidor" y tenga puertos de interfaz "10050" o "10071". Ordene el resultado por nombre de equipo en orden descendente y limítelo a 5 equipos.

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": ["hostid", "host"],
               "selectInterfaces": ["port"],
               "filter": {
                   "port": ["10050", "10071"]
               },
               "search": {
                   "host": "*server*"
               },
               "searchWildcardsEnabled": true,
               "searchByAny": true,
               "sortfield": "host",
               "sortorder": "DESC",
               "limit": 5
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Respuesta:

{
           "jsonrpc": "2.0",
           "result": [
               {
                   "hostid": "50003",
                   "host": "WebServer-Tomcat02",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "50005",
                   "host": "WebServer-Tomcat01",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "50004",
                   "host": "WebServer-Nginx",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               {
                   "hostid": "99032",
                   "host": "MySQL server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               },
               {
                   "hostid": "99061",
                   "host": "Linux server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               }
           ],
           "id": 1
       }

Búsqueda de equipos usando comodines con "preservekeys"

Si agrega el parámetro "preservekeys" a la solicitud anterior, el resultado se devuelve como una matriz asociativa, donde las claves son la identificación de los objetos.

Solicitud:

{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": ["hostid", "host"],
               "selectInterfaces": ["port"],
               "filter": {
                   "port": ["10050", "10071"]
               },
               "search": {
                   "host": "*server*"
               },
               "searchWildcardsEnabled": true,
               "searchByAny": true,
               "sortfield": "host",
               "sortorder": "DESC",
               "limit": 5,
               "preservekeys": true
           },
           "auth": "766b71ee543230a1182ca5c44d353e36",
           "id": 1
       }

Respuesta:

{
           "jsonrpc": "2.0",
           "result": {
               "50003": {
                   "hostid": "50003",
                   "host": "WebServer-Tomcat02",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               "50005": {
                   "hostid": "50005",
                   "host": "WebServer-Tomcat01",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },        
               "50004": {
                   "hostid": "50004",
                   "host": "WebServer-Nginx",
                   "interfaces": [
                       {
                           "port": "10071"
                       }
                   ]
               },
               "99032": {
                   "hostid": "99032",
                   "host": "MySQL server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               },
               "99061": {
                   "hostid": "99061",
                   "host": "Linux server 01",
                   "interfaces": [
                       {
                           "port": "10050"
                       }
                   ]
               }
           },
           "id": 1
       }