Este tipo de item permite a coleta de dados usando o protocolo HTTP/HTTPS. Trapping também é possível usando o Zabbix sender ou o protocolo Zabbix sender.
A verificação de item HTTP é executada pelo servidor Zabbix. No entanto, quando os hosts são monitorados por um proxy Zabbix, as verificações de itens HTTP são executadas pelo proxy.
As verificações de itens HTTP não exigem nenhum agente em execução no host que está sendo monitorado.
O agente HTTP suporta tanto HTTP quanto HTTPS. O Zabbix seguirá opcionalmente redirecionamentos (veja a opção Seguir redirecionamentos abaixo). O número máximo de redirecionamentos é fixado em 10 (usando a opção cURL CURLOPT_MAXREDIRS).
O servidor/proxy Zabbix deve ser configurado inicialmente 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 exigem informações específicas para itens HTTP são:
Parâmetro | Descrição |
---|---|
Tipo | Selecione HTTP agent aqui. |
Chave | Insira uma chave única para o item. |
URL | URL para conectar-se e recuperar 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 para ASCII em punycode ao executar a verificação HTTP. O botão Parse pode ser usado para separar campos de consulta opcionais (como ?name=Admin&password=mypassword) da URL, movendo os atributos e valores para Campos de consulta para codificação automática de URL. Limitado a 2048 caracteres. Macros suportados: {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. Isso define a opção cURL CURLOPT_URL. |
Campos de consulta | Variáveis para a URL (veja acima). Especificados como pares de atributos e valores. Valores são codificados automaticamente na URL. Valores de macros são resolvidos e, em seguida, codificados automaticamente na URL. Macros suportados: {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. Isso define a opção CURLOPT_URL cURL. |
Tipo de solicitação | Selecione o tipo de método de solicitação: GET, POST, PUT ou HEAD |
Timeout | O Zabbix não gastará mais do que o tempo definido para processar a URL (1-60 segundos). Esse parâmetro define o tempo máximo para estabelecer uma conexão com a URL e o tempo máximo para executar uma solicitação HTTP. Portanto, o Zabbix não gastará mais do que 2 x Timeout segundos em uma verificação. Sufixos de tempo são suportados, como 30s, 1m. Macros suportados: macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_TIMEOUT cURL. |
Tipo de corpo da solicitação | Selecione o tipo de corpo da solicitação: Dados brutos - corpo de solicitação HTTP personalizado, macros são substituídos, mas nenhuma codificação é realizada Dados JSON - corpo da solicitação HTTP em formato JSON. Macros podem ser usados como string, número, true e false; macros usados como strings devem estar entre aspas duplas. Valores de macros são resolvidos e, em seguida, escapados automaticamente. Se "Content-Type" não for especificado nos cabeçalhos, ele será definido como "Content-Type: application/json" por padrão. Dados XML - corpo da solicitação HTTP em formato XML. Macros podem ser usados como nó de texto, atributo ou seção CDATA. Valores de macros são resolvidos e, em seguida, escapados automaticamente em um nó de texto e atributo. Se "Content-Type" não for especificado nos cabeçalhos, ele será definido como "Content-Type: application/xml" por padrão. Note que a seleção de Dados XML requer libxml2. |
Corpo da solicitação | Insira o corpo da solicitação. Macros suportados: {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 ao realizar uma solicitação. Especificados como pares de atributos e valores. Macros suportados: {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. Isso define a opção cURL CURLOPT_HTTPHEADER. |
Códigos de status esperados | Lista de códigos de status HTTP esperados. Se o Zabbix receber um código que não esteja na lista, o item se tornará não suportado. Se estiver vazio, nenhuma verificação é realizada. Por exemplo: 200,201,210-299 Macros suportados na lista: macros de usuário, macros de descoberta de baixo nível. Isso usa a opção cURL CURLINFO_RESPONSE_CODE. |
Seguir redirecionamentos | Marque a caixa de seleção para seguir redirecionamentos HTTP. Isso define a opção cURL CURLOPT_FOLLOWLOCATION. |
Modo de recuperação | Selecione a parte da resposta que deve ser recuperada: Corpo - somente corpo Cabeçalhos - somente cabeçalhos Corpo e cabeçalhos - corpo e cabeçalhos |
Conventer para JSON | Cabeçalhos são salvos como pares de atributos e valores sob a chave "header". Se 'Content-Type: application/json' for encontrado, o corpo será salvo como um objeto, caso contrário, será armazenado como string, por exemplo: |
Proxy HTTP | Você pode especificar um proxy HTTP a ser usado, usando o formato [protocol://][username[:password]@]proxy.example.com[:port] .O prefixo opcional protocol:// pode ser usado para especificar protocolos de proxy alternativos (por exemplo, https, socks4, socks5; consulte documentation; o suporte ao prefixo do protocolo foi adicionado no cURL 7.21.7). Se nenhum protocolo for especificado, o proxy será tratado como um proxy HTTP. Se você especificar o protocolo errado, a conexão falhará e o item se tornará não suportado.Por padrão, a porta 1080 será usada. Se especificado, o proxy substituirá as variáveis de ambiente relacionadas ao proxy, como http_proxy, HTTPS_PROXY. Se não for especificado, o proxy não substituirá as variáveis de ambiente relacionadas ao proxy. O valor inserido é passado "como é", nenhuma verificação de sanidade é realizada. Note que apenas autenticação simples é suportada com proxy HTTP. Macros suportados: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macro de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_PROXY cURL. |
Atenticação HTTP | Tipo de autenticação: Nenhuma - nenhuma autenticaçã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: Configuring Kerberos with Zabbix. Digest - Autenticação Digest é usada. Selecionar um método de autenticação fornecerá dois campos adicionais para inserir um nome de usuário e senha, onde macros de usuário e macros de descoberta de baixo nível são suportados. Isso define a opção cURL CURLOPT_HTTPAUTH. |
Verificação de par SSL | Selecione a caixa de seleção para verificar o certificado SSL do servido da web. O certificado do servidor será automaticamente obtido da localização da autoridade de certificação (CA) do sistema. Você pode substituir a localização dos arquivos CA usando o parâmetro de configuração do servidor ou proxy do Zabbix, SSLCALocation. Isso define a opção cURL CURLOPT_SSL_VERIFYPEER. |
SSL verify host | Marque a caixa de seleção para verificar se o campo Common Name ou o campo Subject Alternate Name do certificado do servidor web corresponde. Isso define a opção 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 contiver a chave privada, deixe o campo do arquivo de chave SSL vazio. Se a chave estiver criptografada, especifique a senha no campo de senha da chave SSL. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do servidor ou proxy do Zabbix SSLCertLocation. Macros suportados: {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. Isso define a opção cURL CURLOPT_SSLCERT cURL. |
Arquivo de chave SSL | Nome do arquivo de chave privada SSL usado para autenticação do cliente. O arquivo da chave privada deve estar no formato PEM1. O diretório que contém este arquivo é especificado pelo parâmetro de configuração do Zabbix server ou proxy, SSLKeyLocation. Macros suportados: {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. Isso define a opção cURL CURLOPT_SSLKEY. |
Senha da chave SSL | Senha do arquivo de chave privada. Macros suportados: macros de usuário, macros de descoberta de baixo nível. Isso define a opção cURL CURLOPT_KEYPASSWD. |
Habilitar trapping | Com esta caixa de seleção marcada, o item também funcionará como um trapper item e aceitará dados enviados para este item pelo Zabbix sender ou usando o protocolo Zabbix sender. |
Hosts permitidos | Visível apenas se a caixa de seleção Habilitar trapping estiver marcada. Lista de endereços IP delimitados por vírgula, opcionalmente em notação CIDR, ou nomes DNS. Se especificado, as conexões recebidas serão aceitas apenas dos 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' serão tratados de forma igual e '::/0' permitirá qualquer endereço IPv4 ou IPv6. '0.0.0.0/0' pode ser usado para permitir qualquer endereço IPv4. Note "endereços IPv6 compatíveis com IPv4" (prefixo 0000::/96) são suportados, mas descontinuados pelo RFC4291. Exemplo: 127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.example.com, {HOST.HOST} Espaços e user macros não são permitidos nesse campo. Macros de host: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} são permitidos nesse campo. |
Se o campo HTTP proxy estiver vazio, aoutra maneira de usar um proxy HTTP é definir variáveis de ambiente relacionadas ao proxy.
Para HTTP - definia a variável de ambiente http_proxy
para o servidor do usuário Zabbix. Por exemplo:
http_proxy=http://proxy_ip:proxy_port
.
Para HTTPS - defina a variável de ambiente HTTPS_PROXY
. Por exemplo:
HTTPS_PROXY=http://proxy_ip:proxy_port
. Mais detalhes estão disponíveis ao executar um comando shell: # man curl.
[1] O Zabbix suporta apenas arquivos de certificado e chave privada no formato PEM. Caso você tenha os dados do certificado e da chave privada em um arquivo no formato PKCS #12 (geralmente com extensão *.p12 ou *.pfx), você pode gerar o arquivo PEM a partir dele usando os seguintes comandos:
Envie solicitações GET simples para recuperar dados de serviços como o 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
Envie solicitações POST simples para recuperar dados de serviços como o 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.
Conectando-se à página de status do Nginx e obtendo suas métricas em massa.
Exemplo de saída do status de stub 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 itens dependentes que extraem os dados.
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: