O Zabbix pode consultar métricas expostas no formato de linha do Prometheus.
Dois passos são necessários para iniciar a obtenção de dados do Prometheus:
https://<prometheus host>/metrics
Estas são duas opções de pré-processamento de dados do Prometheus:
Processamento em massa é suportado para itens dependentes. Para habilitar o cache e indexação, o pré-processamento Padrão Prometheus deve ser a primeira etapa de pré-processamento. Quando o Padrão Prometheus é a primeira etapa de pré-processamento então o dado Prometheus analisado é colocado em cache e indexado pela primeira condição <etiqueta>==<valor>
na etapa de pré-processamento Padrão Prometheus. Este cache é reutilizado quando processando outros itens dependentes neste neste lote. Para otimização de performance, a primeira etiqueta deve ser aquela com mais valores diferentes.
Se há outro pré-processamento a ser feito antes da primeira etapa, ele deve ser movido ou para o item principal ou para um novo item dependente que seria usado como item principal para os itens dependentes relacionados.
Considerando que você tenha o item principal HTTP configurado, você precisa criar um item dependente que usa uma etapa de pré-processamento Prometheus:
Os seguintes parâmetros são especificados para a opção de pré-processamento Padrão Prometheus:
Parâmetro | Descrição | Exemplos |
---|---|---|
Padrão | Para definir o padrão de dado requerido você pode usar uma linguagem de consulta similar à linguagem de consulta to Prometheus (veja tabela de comparação), p.e.: <nome métrica> - selecione por nome da métrica {__name__="<nome métrica>"} - selecione por nome da métrica {__name__=~"<regex>"} - selecione por nome da métrica correspondente a uma expressão regular {<label name>="<valor etiqueta>",...} - selecione por nome da etiqueta (label) {<label name>=~"<regex>",...} - selecione por nome da etiqueta correspondente a uma expressão regular {__name__=~".*"}==<valor> - selecione por valor da métrica Ou uma combinação do que está acima: <nome métrica>{<label1 name>="<valor etiqueta1>",<label2 name>=~"<regex>",...}==<valor> O valor da etiqueta pode ser qualquer sequência de caracteres UTF-8, mas os caracteres de contrabarra, aspas duplas e nova linha tem de ser escapados 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 |
Resultado do processamento | Especifique se será retornado o valor, a etiqueta ou aplique a função apropriada (se o padrão corresponde a várias linhas e o resultado precisa ser agregado): valor - retorna o valor da métrica (erro se múltiplas linhas corresponderem) etiqueta - retorna o valor da etiqueta especificada no campo Etiqueta (erro se múltiplas linhas corresponderem) 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 na opção Padrão Prometheus. |
Veja também exemplos de uso de parâmetros abaixo. |
Saída | Defina um nome de etiqueta (opcional). Neste caso o valor correspondente ao nome de etiqueta é retornado. Este campo está disponível apenas para a opção Padrão Prometheus, se 'Etiqueta' estiver selecionado no campo Processamento de resultado. |
Exemplos de utilização 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"} == 1
O filtro (baseado no valor numérico '1') corresponderá a linha apropriada, enquanto a etiqueta retornará a descrição do estado de integridade (atualmente 'verde' (green); mas potencialmente também 'vermelho' (red) ou 'amarelo' (yellow)).
Dados do Prometheus podem ser usados para descoberta de baixo-nível. Neste caso são necessários dados em formato JSON e a opção de pré-processamento Prometheus para JSON retornará exatamente isso.
Para mais detalhes, consulte Descoberta usando dados Prometheus.
A seguinte tabela lista as diferenças e similaridades entre PromQL e a linguagem de consulta de pré-processamento Prometheus do Zabbix.
PromQL Seletor de Vetor Instantâneo | Zabbix Pré-processamento Prometheus | |
---|---|---|
Diferenças | ||
Alvo para consulta | Servidor Prometheus | Texto plano em formato de exposição Prometheus |
Retornos | Vetor instantâneo | Métrica ou valor de etiqueta (Padrão Prometheus) Array de métricas por valor único em JSON (Prometheus para JSON) |
Operadores de correspondência de etiqueta | =, !=, =~, !~ | =, !=, =~, !~ |
Expressão Regular usada na etiqueta ou nome da métrica correspondente | RE2 | PCRE |
Operadores de comparação | Veja lista | Apenas == (igual) é suportado para filtro de valor |
Similaridades | ||
Seleção por nome de métrica igual string | <nome métrica> ou {__name__="<nome métrica>"} | <nome métrica> ou {__name__="<nome métrica>"} |
Seleção por nome de métrica correspondente a expressão regular | {__name__=~"<regex>"} | {__name__=~"<regex>"} |
Seleção pelo valor <nome etiqueta> que iguala string | {<label name>="<nome etiqueta>",...} | {<label name>="<nome etiqueta>",...} |
Seleção pelo valor <nome etiqueta> que corresponde à expressão regular | {<label name>=~"<regex>",...} | {<label name>=~"<regex>",...} |
Seleção por valor que iguala string | {__name__=~".*"} == <valor> | {__name__=~".*"} == <valor> |