1 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
- Acesse a aba Preprocessing
- Selecione uma opção de pré-processamento do Prometheus (Prometheus pattern ou Prometheus to JSON)

Os parâmetros a seguir 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 label {<label name>=\~"<regex>",...} - selecionar pelo nome do label correspondente a uma expressão regular {__name__=\~".*"}==<value> - selecionar pelo valor da métrica Ou uma combinação das opções acima: <metric name>{<label1 name>="<label1 value>",<label2 name>=\~"<regex>",...}==<value> O valor do label pode ser qualquer sequência de caracteres UTF-8, mas os caracteres barra invertida, aspas duplas e quebra de linha precisam ser escapados, respectivamente, como \\, \" e \n; 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 label 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 forem correspondidas) label - retorna o valor do label especificado no campo Label (erro se várias métricas forem correspondidas) 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 label (opcional). Nesse caso, o valor correspondente ao nome do label é 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 average 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 a especificação do label. Assim, para retornar o valor do label '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 (baseado no valor numérico '1') corresponderá à linha apropriada, enquanto o label 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 | Pré-processamento do Zabbix para Prometheus | |
|---|---|---|
| Diferenças | ||
| Alvo 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 para JSON) |
| Operadores de correspondência de rótulos | =, !=, =\~, !\~ | =, !=, =\~, !\~ |
| Expressão regular usada na correspondência de nome de rótulo ou métrica | RE2 | PCRE |
| Operadores de comparação | Veja a lista | Apenas == (igual) é suportado para filtragem de valor |
| Semelhanças | ||
| Seleção por nome de métrica que é igual a uma string | <nome da métrica> ou {__name__="<nome da métrica>"} | <nome da métrica> ou {__name__="<nome da métrica>"} |
| Seleção por nome de métrica que corresponde a uma expressão regular | {__name__=\~"<regex>"} | {__name__=\~"<regex>"} |
| Seleção por valor de <nome do rótulo> que é igual a uma string | {<nome do rótulo>="<valor do rótulo>",...} | {<nome do rótulo>="<valor do rótulo>",...} |
| Seleção por valor de <nome do rótulo> que corresponde a uma expressão regular | {<nome do rótulo>=\~"<regex>",...} | {<nome do rótulo>=\~"<regex>",...} |
| Seleção por valor que é igual a uma string | {__name__=\~".*"} == <valor> | {__name__=\~".*"} == <valor> |