Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

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 tanto true ou false.
flag O valor é considerado true se for passado e não igual a null e false caso contrário.
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 timestamp Unix.
array Uma sequência ordenada de valores, ou seja, uma matriz simples.
object Uma array associativa.
query Um valor que define quais dados devem ser retornados.

Pode ser definido como uma matriz 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, suportados apenas por algumas subseleções.

A API do Zabbix sempre retorna valores apenas como strings ou 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âmetro Tipo Descrição
countOutput boolean Retorna o número de registros no resultado em vez dos dados reais.
editable boolean Se definido como true , retornará apenas objetos para os quais o usuário tem permissão de gravação.

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

Aceita uma matriz, em que 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 funciona para campos text.
limit integer Limite o número de registros retornados.
output query Propriedades do objeto a serem retornadas.

Default: extend.
preservekeys boolean Use IDs como chaves na matriz resultante.
search object Retornar resultados que correspondam à pesquisa de wildcard fornecida (case-insensitive).

Aceita uma matriz, em que as chaves são nomes de propriedades e os valores são strings a serem pesquisadas. Se nenhuma opção adicional for fornecida, isso executará uma pesquisa LIKE "%…%".

Funciona apenas para campos string e text.
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.

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

Default: false.
sortfield string/array Classifique o resultado pelas propriedades fornecidas. Consulte uma descrição específica do método get da API para obter uma lista de propriedades que podem ser usadas para classificação. As macros não são expandidas antes da classificação.

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

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

Ignorado se 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
       }