Apêndice 1. Comentário de referência

Notação

Tipos de dados

A API do Zabbix suporta os seguintes tipos de dados como entrada:

Tipo Descrição
boolean Um valor booleano, aceita apenas true ou false.
flag O valor é considerado true se for passado e não for igual a null. Caso contrário, é considerado false.
integer Um número inteiro.
float Um número de ponto flutuante.
string Uma string de texto
text Uma string de texto mais longa.
timestamp Um Unix timestamp.
array Uma sequência ordenada de valores, ou seja, um array simples.
object Um array associativo.
query Um valor que define quais dados devem ser retornados.

Pode ser definido como um array de nomes de propriedades para retornar apenas propriedades específicas, ou como um dos valores predefinidos:
extend - retorna todas as propriedades do objeto;
count - retorna o número de registros recuperados, suportado apenas por certos subselecionados.

A API do Zabbix sempre retorna valores como strings ou apenas arrays.

Rótulos de propriedade

Algumas das propriedades dos objetos são marcadas com rótulos curtos para descrever
Seu comportamento. Os seguintes rótulos são usados:

  • readonly - o valor do imóvel é definido automaticamente e não pode ser definido ou alterado pelo cliente;
  • constant - o valor da propriedade pode ser definido ao criar um objeto, mas não pode ser alterado depois.

Valor de ID reservado "0"

O valor de ID reservado "0" pode ser usado para filtrar elementos e remover objetos referenciados. Por exemplo, para remover um proxy referenciado de um host, proxy_hostid deve ser definido como 0 ("proxy_hostid": "0") ou para filtrar hosts monitorados pela opção do servidor proxyids deve ser definido como 0 ("proxyids": "0").

Parâmetros comuns do método "get"

Os seguintes parâmetros são suportados por todos os métodos get

Parâmetero Tipo Descrição
countOutput boolean Retorna o número de registros no resultado em vez dos dados reais.
editable boolean Se definido como true , retorna apenas objetos para os quais o usuário tem permissões de escrita.

Padrão: false.
excludeSearch boolean Retorna resultados que não correspondem aos critérios fornecidos no parâmetro search.
filter object Retorna apenas os resultados que correspondem exatamente ao filtro fornecido.

Aceita uma matriz, onde as chaves são nomes de propriedades e os valores são um único valor ou uma matriz de valores para correspondência.

Não suporta campos do tipo de dado text data type.
limit integer Limita o número de registros retornados.
output query Propriedades do objeto a serem retornadas.

Padrão: extend.
preservekeys boolean Usa IDs como chaves na matriz resultante.
search object Retorna resultados que correspondem ao padrão fornecido (case-insensitive).

Aceita uma matriz, onde as chaves são nomes de propriedades e os valores são strings para procurar. Se nenhuma opção adicional for fornecida, isso executará uma busca LIKE "%…%" .

Suporta apenas campos do tipo de dado string e text data type.
searchByAny boolean Se definido como true , retorna resultados que correspondem a qualquer um dos critérios fornecidos no parâmetro filter ou search em vez de todos eles.

Padrão: false.
searchWildcardsEnabled boolean Se definido como true , habilita o uso de "*" como caractere curinga no parâmetro search.

Padrão: false.
sortfield string/array Ordena o resultado pelas propriedades fornecidas. Consulte a descrição do método específico da API para uma lista de propriedades que podem ser usadas para classificação. Macros não são expandidas antes da classificação.

Se nenhum valor for especificado, os dados serão retornados sem ordenação.
sortorder string/array Ordem de classificação. Se uma matriz for passada, cada valor será correspondente à propriedade fornecida no parâmetrosortfield.

Os valores possíveis são:
ASC - (padrão) ascendente;
DESC - descendente.
startSearch boolean O parâmetro search comparará o início dos campos, ou seja, realizará uma busca LIKE "…%" em vez disso.

Ignorado caso o searchWildcardsEnabled estiver definido como true.

Exemplos

Verificação de permissão do usuário

O usuário tem permissão para gravar em hosts cujos nomes começam com "MySQL" ou "Linux"?

Request:

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

Response:

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

Resultado zero significa que não há hosts com permissões de leitura/gravação.

Contagem de incompatibilidade

Conte o número de hosts cujos nomes não contêm a substring "ubuntu"

Request:

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

Response:

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

Procurando por hosts usando wildcards

Encontre hosts cujo nome contenha a palavra "servidor" e tenham portas de interface "10050" ou "10071". Classifique o resultado por nome de host em ordem decrescente e limite-o a 5 hosts.

Request:

{
           "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
       }

Response:

{
           "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
       }

Procurando hosts usando curingas com "preservekeys"

Se você adicionar o parâmetro "preservekeys" à requisição anterior, o resultado é retornado como um array associativo, onde as chaves são o id dos objetos.

Request:

{
           "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
       }

Response:

{
           "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
       }