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, será necessário criar um item dependente que use uma etapa de pré-processamento do Prometheus:
- Insira os parâmetros gerais do item dependente no formulário de configuração.
- Acesse a aba Pré-processamento.
- Selecione uma opção de pré-processamento do Prometheus (Padrão do Prometheus ou Prometheus para JSON).

Os parâmetros a seguir são específicos da opção de pré-processamento Padrão do Prometheus:
| Parâmetro | Descrição | Exemplos |
|---|---|---|
| Padrão | 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 dos itens 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 de barra invertida, aspas duplas e avanço de linha devem 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 |
| Processamento do resultado | 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 - retornar o valor da métrica (erro se várias linhas corresponderem) label - retornar o valor do label especificado no campo Label (erro se várias métricas corresponderem) sum - retornar a soma dos valores min - retornar o valor mínimo max - retornar o valor máximo avg - retornar o valor médio count - retornar a quantidade de valores Este campo está disponível somente para a opção Padrão do Prometheus. |
Consulte também os exemplos de uso dos parâmetros abaixo. |
| Saída | Defina o nome do label (opcional). Nesse caso, será retornado o valor correspondente ao nome do label. Este campo está disponível somente para a opção Padrão do Prometheus, se 'Label' estiver selecionado no campo Processamento do resultado. |
Exemplos de uso dos parâmetros
- O caso de uso mais comum é retornar o valor. Para retornar
o valor de
/var/dbde:
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:
- Padrão -
node_disk_usage_bytes{path="/var/db"} - Processamento do resultado - selecione 'value'
- Você também pode estar interessado no valor médio de todos os
parâmetros
node_disk_usage_bytes:
- Padrão -
node_disk_usage_bytes - Processamento do resultado - selecione 'avg'
- Embora o Prometheus ofereça suporte somente a dados numéricos, é comum usar uma solução alternativa que também permita retornar a descrição textual relevante. Isso pode ser feito com um filtro e especificando o label. Portanto, para retornar o valor do label 'color' 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:
- Padrão -
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1 - Processamento do resultado - 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 integridade (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> |