Este tipo de item permite sondagem de dados usando o protocolo HTTP/HTTPS. Retenção (trapping) também é possível usando o Zabbix Sender ou o protocolo Zabbix Sender.
Uma verificação de item HTTP é executada pelo Zabbix Server. No entanto, quando os host são monitorados por um Zabbix Proxy, as verificações de item HTTP são executadas pelo Proxy.
As verificações de item HTTP não requerem nenhum agente em execução no host sendo monitorado.
O agente HTTP suporta ambos HTTP e HTTPS. O Zabbix seguirá redirecionamentos opcionalmente (veja a opção Seguir redirecionamento abaixo). O número máximo de redirecionamentos é fixo no código em 10 (usando a opção cURL CURLOPT_MAXREDIRS).
Veja também problemas conhecidos na utilização do protocolo HTTPS.
O Zabbix Server/Proxy deve ser inicialmente configurado com suporte a cURL (libcurl).
Para configurar um item HTTP:
Todos os campos obrigatórios estão marcados com um asterisco vermelho.
Os campos que requerem informação específica para itens HTTP são:
Tipo | Selecione Agente HTTP aqui. |
Chave | Informe uma chave de item única. |
URL | URL na qual conectar e recuperar os dados. Por exemplo: https://www.example.com http://www.example.com/download Nomes de domínio podem ser especificados em caracteres Unicode. Eles são automaticamente convertidos com punycode para ASCII quando executando a verificação HTTP. O botão Processar pode ser usado para separar campos de consulta opcionais (como ?name=Admin&password=mypassword) da URL, movendo os atributos e valores em Campos da consulta com codificação URL automática. Limitado a 2048 caracteres. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_URL. |
Campos da consulta | Variáveis para a URL (veja acima). Especificado como pares de atributo e valor. Valores são codificados para URL automaticamente. Valores de macros são resolvidos e então codificados para URL automaticamente. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_URL. |
Tipo de requisição | Selecione o método de requisição: GET, POST, PUT or HEAD |
Tempo limite | O Zabbix não gastará mais do que a quantidade de tempo configurada no processamento da URL (1-60 segundos). Na verdade este parâmetro define o tempo máximo para a realização de conexão a URL e tempo máximo para realizar uma consulta HTTP. No entanto, o Zabbix não gastará mais do que 2 x Tempo limite segundos em uma verificação. Sufixos de tempo são suportados, p.e. 30s, 1m. Macros suportadas: macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_TIMEOUT. |
Tipo de corpo da requisição | Selecione o tipo de corpo da requisição: Dados brutos - corpo da requisição HTTP customizado, macros são substituídas mas nenhuma codificação é executada Dados JSON - corpo da requisição HTTP em formato JSON. Macros podem ser usadas como string, número, verdadeiro e falso; macros usadas como strings devem ser quotadas com aspas duplas. Valores de macros são resolvidos e então escapados automaticamente. Se "Content-Type" não for especificado nos cabeçalhos então assumirá o valor padrão "Content-Type: application/json" Dados XML - corpo da requisição HTTP em formato XML. Macros podem ser usadas como um nó de texto, atributo ou seção CDATA. Valores de macros são resolvidos e então escapados automaticamente em um nó de texto e atributo. Se "Content-Type" não for especificado nos cabeçalhos então assumirá o valor padrão "Content-Type: application/json" Note que a seleção de Dados XML requer libxml2. |
Corpo da requisição | Informe o corpo da requisição. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. |
Cabeçalhos | Cabeçalhos HTTP personalizados que serão enviados na execução de uma requisição. Especificado como pares de atributo e valor. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_HTTPHEADER. |
Códigos de estado requeridos | Lista de códigos de estado HTTP esperados. Se o Zabbix recebe um código que não está na lista, o item se tornará não suportado. Se vazio, nenhuma verificação será executada. Por exemplo: 200,201,210-299 Macros suportadas na lista: macros de usuário, macros de descoberta de baixo-nível. Isto usa a opção do cURL CURLINFO_RESPONSE_CODE. |
Seguir redirecionamentos | Marque esta caixa para seguir redirecionamentos HTTP. Isto configura a opção do cURL CURLOPT_FOLLOWLOCATION. |
Modo de busca | Selecione a parte da resposta que deve ser recuperadas: Corpo - apenas o corpo Cabeçalhos - apenas cabeçalhos Corpo e cabeçalhos - corpo e cabeçalhos |
Converter para JSON | Cabeçalhos são salvos como pares de atributo e valor sob a chave "cabeçalho". Se 'Content-Type: application/json' é encontrada então o corpo é salvo como um objeto, caso contrário ele é armazenado como string, por exemplo: |
Proxy HTTP | Você pode especificar um proxy HTTP para usar, usando o formato [protocol://][username[:password]@]proxy.example.com[:port] .O prefixo opcional protocol:// pode ser usado para especificar protocolos proxy alternativos (p.e. https, socks4, socks5; veja documentação; o suporte ao prefixo de protocolo foi adicionado no cURL 7.21.7). Sem nenhum protocolo especificado, o proxy será tratado como um proxy HTTP. Se você especificar um protocolo errado, a conexão falhará a o item se tornará não suportado.Por padrão, a porta 1080 será usada. Se especificado, o proxy irá sobrescrever as variáveis de ambiente de proxy relacionadas como http_proxy, HTTPS_PROXY. Se não especificado, o proxy não irá sobrescrever as variáveis de ambiente de proxy relacionadas. O valor informado é passado "como é", nenhum teste de é executado. Note que apenas autenticação simples é suportada com proxy HTTP. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_PROXY. |
Autenticação HTTP | Tipo de autenticação: Nenhum - autenticação não usada. Básica - autenticação básica é usada. NTLM - autenticação NTLM (Windows NT LAN Manager) é usada. Kerberos - autenticação Kerberos é usada. Veja também: Configurção do Kerberos com Zabbix. Digest - autenticação Digest é usada. A seleção de um método de autenticação oferecerá dois campos adicionais para informar um nome de usuário e senha, onde macros de usuário e macros de descoberta de baixo-nível são suportadas. Isto configura a opção do cURL CURLOPT_HTTPAUTH. |
verificar par SSL | Marque esta caixa para verificar o certificado SSL do servidor web. O certificado do servidor será automaticamente obtido do local da autoridade de certificação do sistema (CA). Você pode sobrescrever o local dos arquivos CA usando o parâmetro de configuração SSLCALocation do Zabbix Server ou Proxy. Isto configura a opção do cURL CURLOPT_SSL_VERIFYPEER. |
Verificar host SSL | Marque esta caixa para verificar que o campo Nome Comum ou Nome Alternativo do Sujeito (SAN) do certificado do servidor web corresponde. Isto configura a opção do cURL CURLOPT_SSL_VERIFYHOST. |
Arquivo de certificado SSL | Nome do arquivo de certificado SSL usado para autenticação do cliente. O arquivo de certificado deve estar no formato PEM1. Se o arquivo de certificado também contém a chave privada, deixe este campo vazio. Se a chave está criptografada, informe a senha no campo de senha da chave SSL. O diretório contendo estes arquivos é especificado pelo parâmetro de configuração SSLCertLocation do Zabbix Server ou Proxy. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_SSLCERT. |
Arquivo de chave SSL | Nome do arquivo de chave privada SSL usado para autenticação do cliente. O arquivo de chave privada deve estar no formato PEM1. O diretório contendo estes arquivos é especificado pelo parâmetro de configuração SSLKeyLocation do Zabbix Server ou Proxy. Macros suportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_SSLKEY. |
Senha da chave SSL | senha do arquivo de chave privada SSL. Macros suportadas: macros de usuário, macros de descoberta de baixo-nível. Isto configura a opção do cURL CURLOPT_KEYPASSWD. |
Habilitar retenção (trapping) | Com esta caixa marcada, o item também funcionará como um item de retenção (trapper) e aceitará dados enviados para este item pelo Zabbix Sender ou usando protocolo Zabbix Sender. |
Host permitidos | Visível apenas se a caixa Habilitar retenção estiver marcada. Lista de endereços de IP separados por vírgula, opcionalmente em notação CIDR, ou nomes de host. Se especificado, conexões de entrada serão aceitas apenas de hosts listados aqui. Se o suporte a IPv6 estiver habilitado então '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' são tratados da mesma forma e '::/0' permitirá qualquer endereço IPv4 ou IPv6. '0.0.0.0/0' pode ser usado para permitir qualquer endereço IPv4. Note, que "endereços IPv6 compatíveis com IPv4" (prefixo 0000::/96) são suportados mas obsoletos pela RFC4291. Exemplo: Server=127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, zabbix.domain Espaços e macros de usuário são permitidos neste campo. Macros de host: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} são permitidas neste campo. |
Se o campo Proxy HTTP for deixada vazio, outra forma de usar um proxy HTTP é configurar as variáveis de ambiente relacionadas ao proxy.
Para HTTP - configure a variável de ambiente http_proxy
para o usuário do Zabbix Server. Por exemplo:
http_proxy=http://proxy_ip:proxy_port
.
Para HTTPS - configure a variável de ambiente HTTPS_PROXY
. Por exemplo:
HTTPS_PROXY=http://proxy_ip:proxy_port
. Mais detalhes estão disponíveis executando o comando shell: # man curl.
[1] O Zabbix suporta arquivos de certificado e chave privada apenas no formato PEM. Caso você tenha seu certificado e dados de chave privada em formato de arquivo PKCS #12 (usualmente com extensão *.p12 ou *.pfx) você deve gerar o arquivo PEM dele usando os seguintes comandos:
Enviar requisições GET simples para obter dados de serviços como Elasticsearch:
localhost:9200/?pretty
{
"name" : "YQ2VAY-",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
"version" : {
"number" : "6.1.3",
"build_hash" : "af51318",
"build_date" : "2018-01-26T18:22:55.523Z",
"build_snapshot" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You know, for search"
}
$.version.number
Enviar requisições de POST simples para obter dados de serviços como Elasticsearch:
http://localhost:9200/str/values/_search?scroll=10s
{
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
}
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_index": "dbl",
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_score": 1.0,
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
$.hits.hits[0]._source.value
Verificando se a API Zabbix está disponível, usando apiinfo.version.
Note o uso do método POST com dados JSON, configurando cabeçalhos da requisição e solicitando o retorno de apenas cabeçalhos:
Obtendo informações de clima pela conexão ao serviço público Openweathermap.
Note o uso de macros nos campos da requisição. Tome como referência a API do Openweathermap para saber como preenchê-los.
Exemplo de JSON retornado como resposta ao agente HTTP:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56.11
},
"weather": [{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}],
"base": "stations",
"main": {
"temp": 15.14,
"pressure": 1012.6,
"humidity": 66,
"temp_min": 15.14,
"temp_max": 15.14,
"sea_level": 1030.91,
"grnd_level": 1012.6
},
"wind": {
"speed": 1.86,
"deg": 246.001
},
"clouds": {
"all": 20
},
"dt": 1526509427,
"sys": {
"message": 0.0035,
"country": "RU",
"sunrise": 1526432608,
"sunset": 1526491828
},
"id": 487837,
"name": "Stavrovo",
"cod": 200
}
}
A próxima tarefa é configurar os itens dependentes para extrair dados do JSON.
Outras métricas como 'Temperatura' são adicionados da mesma forma.
Conexão com página de estado do Nginx e obtenção de suas métricas em massa.
Amostra de saída de estado do Nginx:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0
A próxima tarefa é configurar os itens dependentes para extrair os dados.
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: