Verificação do Prometheus
Visão geral
O Zabbix pode consultar métricas expostas no formato de linha do Prometheus.
São necessárias duas etapas para começar a coletar dados do Prometheus:
- um item mestre HTTP apontando
para o endpoint de dados apropriado, por exemplo
https://<prometheus host>/metrics - itens dependentes usando uma opção de pré-processamento do Prometheus para consultar os dados necessários a partir das métricas coletadas pelo item mestre
Há duas opções de pré-processamento de dados do Prometheus:
- Padrão do Prometheus - usado em itens normais para consultar dados do Prometheus
- Prometheus para JSON - usado em itens normais e para descoberta de baixo nível. Nesse caso, os dados do Prometheus consultados são retornados em formato JSON.
Processamento em lote
O processamento em lote é suportado para itens dependentes. Para habilitar o cache e a indexação, o pré-processamento Prometheus pattern deve ser a primeira etapa de pré-processamento. Quando Prometheus pattern é a primeira etapa de pré-processamento, os dados do Prometheus analisados são armazenados em cache e indexados pela primeira condição <label>==<value> na etapa de pré-processamento Prometheus pattern. Esse cache é reutilizado ao processar outros itens dependentes neste lote. Para um desempenho ideal, o primeiro label deve ser aquele com o maior número de valores diferentes.
Se houver outro pré-processamento a ser feito antes da primeira etapa, ele deve ser movido para o item mestre ou para um novo item dependente que será usado como item mestre para os itens dependentes.
Configuração
Desde que você tenha o item mestre HTTP configurado, é necessário criar um dependent item que use uma etapa de pré-processamento do Prometheus:
- Insira os parâmetros gerais do dependent item no formulário de configuração.
- Vá para a aba Preprocessing.
- Selecione uma opção de pré-processamento do Prometheus (Prometheus pattern ou Prometheus to JSON).

Os seguintes parâmetros são específicos da opção de pré-processamento Prometheus pattern:
| Parameter | Description | Examples |
|---|---|---|
| Pattern | Para definir o padrão de dados necessário, você pode usar uma linguagem de consulta semelhante à linguagem de consulta do Prometheus (consulte a tabela de comparação), por exemplo: <metric name> - selecionar pelo nome da métrica {__name__="<metric name>"} - selecionar pelo nome da métrica {__name__=~"<regex>"} - selecionar pelo nome da métrica correspondente a uma expressão regular {<label name>="<label value>",...} - selecionar pelo nome do rótulo {<label name>=~"<regex>",...} - selecionar pelo nome do rótulo correspondente a uma expressão regular {__name__=~".*"}==<value> - selecionar pelo valor da métrica Ou uma combinação dos itens acima: <metric name>{<label1 name>="<label1 value>",<label2 name>=~"<regex>",...}==<value> O valor do rótulo pode ser qualquer sequência de caracteres UTF-8, mas os caracteres barra invertida, aspas duplas e quebra de linha precisam ser escapados como \\, \" e \n, respectivamente; os demais caracteres não devem ser escapados. |
wmi_os_physical_memory_free_bytes cpu_usage_system{cpu="cpu-total"} cpu_usage_system{cpu=~"."} cpu_usage_system{cpu="cpu-total",host=~"."} wmi_service_state{name="dhcp"}==1 wmi_os_timezone{timezone=~"."}==1* |
| Result processing | Especifique se deseja retornar o valor, o rótulo ou aplicar a função apropriada (se o padrão corresponder a várias linhas e o resultado precisar ser agregado): value - retorna o valor da métrica (erro se várias linhas corresponderem) label - retorna o valor do rótulo especificado no campo Label (erro se várias métricas corresponderem) sum - retorna a soma dos valores min - retorna o valor mínimo max - retorna o valor máximo avg - retorna a média dos valores count - retorna a contagem de valores Este campo está disponível apenas para a opção Prometheus pattern. |
Veja também os exemplos de uso dos parâmetros abaixo. |
| Output | Defina o nome do rótulo (opcional). Nesse caso, o valor correspondente ao nome do rótulo é retornado. Este campo está disponível apenas para a opção Prometheus pattern, se 'Label' estiver selecionado no campo Result processing. |
Exemplos de uso dos parâmetros
- O caso de uso mais comum é retornar o value. Para retornar
o valor de
/var/dba partir de:
node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096
use os seguintes parâmetros:
- Pattern -
node_disk_usage_bytes{path="/var/db"} - Result processing - selecione 'value'
- Você também pode se interessar pelo valor avg de todos os parâmetros
node_disk_usage_bytes:
- Pattern -
node_disk_usage_bytes - Result processing - selecione 'avg'
- Embora o Prometheus suporte apenas dados numéricos, é comum usar uma solução alternativa que também permite retornar a descrição textual relevante. Isso pode ser feito com um filtro e especificando o rótulo. Assim, para retornar o valor do rótulo 'color' a partir de
elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0
use os seguintes parâmetros:
- Pattern -
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1 - Result processing - selecione 'label'
- Label - especifique 'color'
O filtro (com base no valor numérico '1') corresponderá à linha apropriada, enquanto o rótulo retornará a descrição do status de saúde (atualmente 'green'; mas potencialmente também 'red' ou 'yellow').
Prometheus para JSON
Os dados do Prometheus podem ser usados para descoberta de baixo nível. Nesse caso, são necessários dados no formato JSON, e a opção de pré-processamento Prometheus to JSON retornará exatamente isso.
Para mais detalhes, consulte Discovery using Prometheus data.
Comparação da linguagem de consulta
A tabela a seguir lista as diferenças e semelhanças entre PromQL e a linguagem de consulta de pré-processamento do Zabbix para Prometheus.
| Seletor de vetor instantâneo do PromQL | Zabbix Prometheus preprocessing | |
|---|---|---|
| Diferenças | ||
| Destino da consulta | Prometheus server | Texto simples no formato de exposição do Prometheus |
| Retorna | Vetor instantâneo | Valor de métrica ou rótulo (padrão Prometheus) Array de métricas para valor único em JSON (Prometheus to JSON) |
| Operadores de correspondência de rótulos | =, !=, =~, !~ | =, !=, =~, !~ |
| Expressão regular usada na correspondência de rótulo ou nome de métrica | RE2 | PCRE |
| Operadores de comparação | Consulte a lista | Apenas == (igual) é suportado para filtragem de valor |
| Semelhanças | ||
| Seleção por nome de métrica que é igual a uma string | <metric name> ou {__name__="<metric name>"} | <metric name> ou {__name__="<metric name>"} |
| Seleção por nome de métrica que corresponde a uma expressão regular | {__name__=~"<regex>"} | {__name__=~"<regex>"} |
| Seleção por valor de <label name> que é igual a uma string | {<label name>="<label value>",...} | {<label name>="<label value>",...} |
| Seleção por valor de <label name> que corresponde a uma expressão regular | {<label name>=~"<regex>",...} | {<label name>=~"<regex>",...} |
| Seleção por valor que é igual a uma string | {__name__=~".*"} == <value> | {__name__=~".*"} == <value> |