Como usar o Prometheus

O Prometheus é uma ferramenta de monitoramento opcional usada com frequência no Kubernetes. Se você configurar o Stackdriver Kubernetes Monitoring com o suporte do Prometheus, os serviços que expuserem as métricas no modelo de dados do Prometheus poderão ser exportados do cluster e tornados visíveis como métricas externas no Stackdriver.

Nesta página, apresentamos uma configuração básica do Prometheus que funciona com o Stackdriver Kubernetes Monitoring.

Antes de começar

Configuração

Use os seguintes comandos kubectl para instalar a configuração básica do Prometheus em um novo cluster usando o Stackdriver Kubernetes Monitoring. Se você quiser personalizar sua própria configuração, consulte a seção a seguir sobre Personalização.

  1. Faça login no seu cluster.
  2. Faça o download da configuração de autenticação do Kubernetes (YAML):

    curl -sSO "https://storage.googleapis.com/stackdriver-prometheus-documentation/rbac-setup.yml"
    
  3. Peça para um administrador de cluster (que pode ser você mesmo) executar o seguinte para configurar uma conta de serviço do Kubernetes (denominada "prometheus") para o coletor:

    kubectl apply -f rbac-setup.yml --as=admin --as-group=system:masters
    
  4. Faça o download da configuração básica do Prometheus (YAML):

    curl -sSO "https://storage.googleapis.com/stackdriver-prometheus-documentation/prometheus-service.yml"
    
  5. Edite a configuração básica padrão do seu cluster. Procure os rótulos a seguir e modifique seus valores para que identifiquem seu cluster:

    • _stackdriver_project_id: [PROJECT_ID]
    • _kubernetes_cluster_name: [CLUSTER_NAME]
    • _kubernetes_location: [CLUSTER_LOCATION]
  6. Execute o seguinte para iniciar o servidor usando sua configuração modificada:

    kubectl apply -f prometheus-service.yml
    

Como validar a configuração

Depois de configurar o Prometheus, execute o seguinte comando para validar a instalação:

kubectl get deployment,service -n stackdriver

A saída deste comando mostrará que a implantação do prometheus está disponível e o serviço está implantado:

NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/prometheus   1         1         1            1           48s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/prometheus   ClusterIP   10.15.253.135   <none>        9090/TCP   49s

O software Prometheus que você instalou está pré-configurado para começar a exportar métricas para o Monitoring como métricas externas. Você pode vê-las em Stackdriver > Recursos > Metrics Explorer:

ACESSAR O METRICS EXPLORER

No tipo de recurso monitorado Contêiner do Kubernetes (k8s_container), procure as métricas external/prometheus/.... Uma métrica que tem alguns dados interessantes é external/prometheus/go_memstats_alloc_bytes. Se houver mais de um cluster no seu espaço de trabalho, filtre o gráfico pelo nome do cluster, conforme mostrado na captura de tela a seguir:

Gráfico do Prometheus

Personalização

Se você tiver uma configuração existente do Prometheus, poderá usá-la com as seguintes alterações para o Stackdriver Kubernetes Monitoring:

  1. Copie as três estrofes a seguir da configuração básica fornecida (YAML) para sua própria configuração:

    • image
    • external_labels
    • remote_write
  2. Siga as instruções na seção Configuração anterior, substituindo sua configuração pela configuração básica.

Anotações

Você pode anotar seus pods antes ou depois de configurar o Prometheus.

A configuração básica pressupõe que os pods que você quer monitorar usam a seguinte anotação:

prometheus.io/scrape:'true'

Essa e outras anotações são documentadas no arquivo de configuração prometheus-service.yml.

Problemas de integração do Prometheus

Faltam as etiquetas job e instance do Prometheus nas minhas métricas.

O job do Prometheus e as etiquetas de instância podem aparecer no recurso monitorado do Stackdriver associados aos dados de métricas com outros nomes. Se você precisar alterar isso, procure a seção write_relabel_config na configuração padrão.

A métrica up não tem pontos de dados para os horários em que o ponto de extremidade não está ativo.

Isso é um desvio do comportamento típico do Prometheus. Se você confia nessa métrica para fins de alerta, pode usar a condição de alerta de ausência de métrica na política de alertas do Stackdriver.

Fizemos essa alteração para evitar outros problemas descritos mais detalhadamente no problema de série temporal duplicada.

Eu modifiquei a configuração padrão e as coisas pararam de funcionar.

O coletor do Stackdriver Prometheus cria um MonitoredResource do Stackdriver para seus objetos do Kubernetes a partir de etiquetas conhecidas do Prometheus. Se você alterar acidentalmente os descritores de etiqueta, o coletor não poderá gravar as métricas no Stackdriver.

Aparecem os erros "série temporal duplicada" ou "gravações fora de ordem" nos registros.

Esses erros podem ser causados pela gravação de dados de métricas duas vezes na mesma série temporal. Eles podem ocorrer se seus pontos de extremidade do Prometheus exporem os mesmos dados de métricas (o mesmo conjunto de valores de etiqueta de métrica) duas vezes a partir de um único recurso monitorado pelo Stackdriver.

Por exemplo, um contêiner do Kubernetes pode expor métricas do Prometheus em várias portas. Como o recurso monitorado k8s_container do Stackdriver não diferencia recursos com base na porta, o Stackdriver detecta que você está escrevendo dois pontos na mesma série temporal. Uma solução é adicionar uma etiqueta de métrica ao Prometheus, diferenciando a série temporal. Por exemplo, é possível usar o rótulo __meta_kubernetes_pod_annotation_prometheus_io_port, porque ele permanecerá constante nas reinicializações do contêiner.

Aparecem os erros "tipo de métrica precisa ser X, mas é Y" nos registros.

Esses erros são causados pela alteração do tipo de métrica do Prometheus no código-fonte entre o medidor, o contador e outros. As métricas do Stackdriver têm uma forma estrita, e isso é muito reforçado porque a semântica dos dados varia de acordo com o tipo.

Para alterar o tipo de uma métrica, é necessário excluir os descritores correspondentes, o que torna inacessíveis os dados da série temporal existente.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Stackdriver Monitoring
Precisa de ajuda? Acesse nossa página de suporte.