17 Verificações prometheus

Visão geral

O Zabbix pode consultar métricas expostas no formato de linha do Prometheus.

Dois passos são necessários para começar a coletar dados do Prometheus:

  • um item mestre HTTP HTTP master item apontando para o endpoint de dados apropriado, por exemplo, https://<prometheus host>/metrics
  • itens dependentes usando uma opção de pré-processamento Prometheus para consultar os dados necessários das métricas coletadas pelo item mestre

Existem duas opções de pré-processamento de dados do Prometheus:

  • Padrão 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 consultados do Prometheus são retornados em formato JSON.
Processamento em massa

O processamento em massa é suportado para itens dependentes. Para habilitar o cache e a indexação, o pré-processamento com o padrão Prometheus deve ser o primeiro passo de pré-processamento. Quando o padrão Prometheus é o primeiro passo de pré-processamento, os dados Prometheus analisados são armazenados em cache e indexados pela primeira condição <label>==<value> no passo de pré-processamento padrão Prometheus. Esse cache é reutilizado ao processar outros itens dependentes neste lote. Para um desempenho ideal, o primeiro rótulo deve ser aquele com a maioria dos valores diferentes.

Se houver outro pré-processamento a ser feito antes do primeiro passo, ele deve ser movido para o item mestre ou para um novo item dependente, que seria usado como item mestre para os itens dependentes.

Configuração

Se você já tiver o item mestre HTTP configurado, é necessário criar um item dependente dependent item que utilize um passo de pré-processamento Prometheus:

  • Insira os parâmetros gerais do item dependente no formulário de configuração
  • Vá para a aba de Pré-processamento
  • Selecione uma opção de pré-processamento Prometheus (padrão Prometheus ou Prometheus para JSON)

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 Prometheus (veja a tabela comparison table), por exemplo:
<nome da métrica> - selecionar por nome de métrica
{__name__="<metric name>"} - selecione por nome de métrica
{__name__=~"<regex>"} - selecione por nome de métrica correspondente a uma expressão regular
{<label name>="<label value>",...} - selecione por nome de rótulo
{<label name>=~"<regex>",...} - selecionar por nome de rótulo que corresponda a uma expressão regular
{__name__=~".*"}==<value> - selecionar por valor de métrica
Ou uma combinação dos 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 devem 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
Processamento de 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):
valor - retornar valor da métrica (erro se várias linhas forem correspondidas)
rótulo - retornar o valor do rótulo especificado no campo Label (erro se várias métricas forem correspondidas)
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 contagem dos valores
Este campo está disponível apenas para a opção padrão Prometheus.
Veja também exemplos de uso de parâmetros abaixo.
Saída 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 padrão Prometheus, se 'label' for selecionado no campo Processamento de resultado.

Exemplos de uso dos parâmetros

  1. O caso de uso mais comum é retornar o valor. Para retornar o valor /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:

  • Padrão - node_disk_usage_bytes{path="/var/db"}
  • Processamento de resultado - selecione 'value'
  1. 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 de resultado - selecione 'avg'
  1. Embora o Prometheus suporte apenas dados numéricos, é comum usar um artifício que permite retornar a descrição textual relevante também. Isso pode ser realizado com um filtro e especificando o rótulo. Assim, para retornar o valor do rótulo '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 de resultado - selecione 'label'
  • Label - especifique 'color'

O filtro (baseado no valor numérico '1') corresponderá à linha apropriada, enquanto o rótulo retornará a descrição do status de saúde (atualmente 'verde', mas potencialmente também 'vermelho' ou 'amarelo).

Prometheus para JSON

Os dados do Prometheus podem ser usados para descoberta em baixo nível. Nesse 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 Discovery using Prometheus data.

Comparação de linguagens de consulta

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
Alvo da consulta 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 um único valor 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 Consulte list Apenas == (igual) é suporatdo para para filtragem de valores
Similaridades
Selecionando por nome de métrica que é igual a uma string <metric name> ou {__name__="<metric name>"} <metric name> ou {__name__="<metric name>"}
Selecionando por nome de métrica que corresponde a uma expressão regular {__name__=~"<regex>"} {__name__=~"<regex>"}
Selecionando por valor de <label name> que é igual a uma string {<label name>="<label value>",...} {<label name>="<label value>",...}
Selecionando por valor de <label name> que corresponde a uma expressão regular {<label name>=~"<regex>",...} {<label name>=~"<regex>",...}
Selecionando por valor que é igual a uma string {__name__=~".*"} == <value> {__name__=~".*"} == <value>