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:
https://<prometheus host>/metricsExistem duas opções de pré-processamento de dados do Prometheus:
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 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 desempenho ideal, o primeiro rótulo deve ser aquele com mais 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 seria usado como item mestre para os itens dependentes.
Desde que você tenha o item mestre HTTP configurado, é necessário criar um item dependente que utilize uma etapa de pré-processamento Prometheus:

Os seguintes parâmetros são específicos para a opção de pré-processamento Padrão 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 (veja a tabela de comparação), por exemplo: <nome da métrica> - seleciona por nome da métrica {__name__="<nome da métrica>"} - seleciona por nome da métrica {__name__=~"<regex>"} - seleciona por nome da métrica usando expressão regular {<nome do rótulo>="<valor do rótulo>",...} - seleciona por nome do rótulo {<nome do rótulo>=~"<regex>",...} - seleciona por nome do rótulo usando expressão regular {__name__=~".*"}==<valor> - seleciona por valor da métrica Ou uma combinação dos acima: <nome da métrica>{<nome do rótulo1>="<valor do rótulo1>",<nome do rótulo2>=~"<regex>",...}==<valor> O valor do rótulo pode ser qualquer sequência de caracteres UTF-8, mas a barra invertida, aspas duplas e quebras de linha devem ser escapadas como \\, \" e \n respectivamente; outros 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 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 forem correspondidas) label - retorna o valor do rótulo especificado no campo Rótulo (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 o valor médio count - retorna a contagem de valores Este campo está disponível apenas para a opção Padrão Prometheus. |
Veja também exemplos de uso dos parâmetros abaixo. |
| Saída | Defina o nome do rótulo (opcional). Neste caso, o valor correspondente ao nome do rótulo é retornado. Este campo está disponível apenas para a opção Padrão Prometheus, se 'Rótulo' for selecionado no campo Processamento do resultado. |
Exemplos de uso dos parâmetros
/var/db 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:
node_disk_usage_bytes{path="/var/db"}node_disk_usage_bytes:node_disk_usage_bytes
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:
elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1O filtro (baseado no valor numérico '1') irá corresponder à linha apropriada, enquanto o rótulo irá retornar a descrição do status de saúde (atualmente 'green'; mas potencialmente também 'red' ou 'yellow').
Os dados do Prometheus podem ser usados para descoberta de baixo nível. Nesse caso, os dados em formato JSON são necessários e a opção de pré-processamento Prometheus para JSON retornará exatamente isso.
Para mais detalhes, consulte Descoberta usando dados do Prometheus.
A tabela a seguir lista as diferenças e semelhanças entre o PromQL e a linguagem de consulta de pré-processamento Prometheus do Zabbix.
| PromQL instant vector selector | Pré-processamento Prometheus do Zabbix | |
|---|---|---|
| Diferenças | ||
| Destino da consulta | Servidor Prometheus | Texto simples no formato de exposição 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ótulo | =, !=, =~, !~ | =, !=, =~, !~ |
| Expressão regular usada na correspondência de nome de rótulo ou métrica | RE2 | PCRE |
| Operadores de comparação | Veja lista | Apenas == (igual) é suportado para filtragem de valor |
| Semelhanças | ||
| Selecionando por nome de métrica igual à string | <metric name> ou {__name__="<metric name>"} | <metric name> ou {__name__="<metric name>"} |
| Selecionando por nome de métrica que corresponde à expressão regular | {__name__=~"<regex>"} | {__name__=~"<regex>"} |
| Selecionando por valor de <label name> igual à string | {<label name>="<label value>",...} | {<label name>="<label value>",...} |
| Selecionando por valor de <label name> que corresponde à expressão regular | {<label name>=~"<regex>",...} | {<label name>=~"<regex>",...} |
| Selecionando por valor igual à string | {__name__=~".*"} == <value> | {__name__=~".*"} == <value> |