Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.

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 iniciar a obtenção de dados do Prometheus:

  • um item principal HTTP apontando para o endpoint de dados apropriado, p.e. https://<prometheus host>/metrics
  • itens dependentes usando a opção de pré-processamento Prometheus para consultar dados de métricas reunidos pelo item principal

Estas são duas opções de pré-processamento de dados do Prometheus:

  • Padrão Prometheus - usado em itens normais para consultar dados Prometheus
  • Prometheus para JSON - usado em itens normais e para descoberta de baixo-nível. Neste caso dados Prometheus consultados são retornados em um formato JSON.
Processamento em massa

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.

Configuração

Considerando que você tenha o item principal HTTP configurado, você precisa criar um item dependente que usa uma etapa de pré-processamento Prometheus:

  • Informe os parâmetros gerais do item dependente no formulário de configuração
  • Vá à 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 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

  1. O caso de uso mais comum é para 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 resulado - selecione 'valor'
  1. Você pode também estar interessado no valor médio de todos os parâmetros node_disk_usage_bytes:
  • Padrão - node_disk_usage_bytes
  • Resultado do processamento - selecione 'avg'
  1. Enquanto o Prometheus suporta apenas dados numéricos, é popular usar uma contingência que permite retornar uma descrição textual relevante também. Isto pode ser alcançado com um filtro e especificação de uma etiqueta. Então, para retornar o valor da etiqueta 'color' (cor) 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
  • Resultado do processamento - selecione 'etiqueta'
  • Etiqueta - especifique 'color'

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)).

Prometheus para JSON

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.

Comparação linguagem de consulta (query language)

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>