Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

17 Verificações 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 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. Neste caso, os dados consultados do Prometheus são retornados em formato JSON.
Processamento em lote

O processamento em lote é suportado para items 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 items 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 items dependentes.

Configuração

Desde que você tenha o item mestre HTTP configurado, é necessário criar um item dependente que utilize uma etapa de pré-processamento Prometheus:

  • Insira os parâmetros gerais do item dependente no formulário de configuração
  • Vá para a aba 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 do Prometheus (veja a tabela de comparação), por exemplo:
<nome da métrica> - selecionar pelo nome da métrica
{__name__="<nome da métrica>"} - selecionar pelo nome da métrica
{__name__=~"<regex>"} - selecionar pelo nome da métrica que corresponda a uma expressão regular
{<nome do rótulo>="<valor do rótulo>",...} - selecionar pelo nome do rótulo
{<nome do rótulo>=~"<regex>",...} - selecionar pelo nome do rótulo que corresponda a uma expressão regular
{__name__=~".*"}==<valor> - selecionar pelo valor da métrica
Ou uma combinação dos anteriores:
<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 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 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

  1. O caso de uso mais comum é retornar o valor. Para retornar o valor de /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 do resultado - selecione 'value'
  1. Você também pode se interessar pelo valor médio de todos os parâmetros node_disk_usage_bytes:
  • Padrão - node_disk_usage_bytes
  • Processamento do resultado - selecione 'avg'
  1. Embora o Prometheus suporte apenas dados numéricos, é comum usar uma solução alternativa que permite retornar também a descrição textual relevante. Isso pode ser feito 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 do resultado - selecione 'label'
  • Rótulo - especifique 'color'

O filtro (baseado no valor numérico '1') irá corresponder à linha apropriada, enquanto o rótulo irá 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, 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.

Comparação de linguagem de consulta

A tabela a seguir lista as diferenças e semelhanças entre o PromQL e a linguagem de consulta de pré-processamento do Prometheus no Zabbix.

PromQL instant vector selector Pré-processamento do Prometheus no Zabbix
Diferenças
Destino da consulta Servidor Prometheus Texto simples no formato de exposição do Prometheus
Retorno 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 <nome da métrica> ou {__name__="<nome da métrica>"} <nome da métrica> ou {__name__="<nome da métrica>"}
Selecionando por nome de métrica que corresponde à expressão regular {__name__=~"<regex>"} {__name__=~"<regex>"}
Selecionando por valor de <nome do rótulo> igual à string {<nome do rótulo>="<valor do rótulo>",...} {<nome do rótulo>="<valor do rótulo>",...}
Selecionando por valor de <nome do rótulo> que corresponde à expressão regular {<nome do rótulo>=~"<regex>",...} {<nome do rótulo>=~"<regex>",...}
Selecionando por valor igual à string {__name__=~".*"} == <valor> {__name__=~".*"} == <valor>