Compartilhar via


Personalizar a coleta usando CRDs (Monitores de Pod e Serviço)

A ativação do Prometheus Gerenciado implanta automaticamente as definições de recursos personalizados (CRD) para monitores de pod e monitores de serviço. Essas definições de recursos personalizados são as mesmas definições de recursos personalizados (CRD) para monitores de Pod de OSS e monitores de serviço de OSS para o Prometheus, exceto por uma alteração no nome do grupo. Se você tiver CRDs e recursos personalizados do Prometheus existentes em seu cluster, esses CRDs não entrarão em conflito com os CRDs criados pelo complemento. Ao mesmo tempo, o complemento do Prometheus gerenciado não pega os CRDs criados para o Prometheus de OSS. Essa separação é intencional para fins de isolamento dos trabalhos de raspagem.

Observação

O suporte para a solução de CRD (definição de recurso personalizado) no Kubernetes habilitado para Azure ARC não está disponível no momento.

Criar um Pod ou Monitor de Serviço

Use os modelos do Pod e do Monitor de Serviço e siga a especificação da API para criar seus recursos personalizados(PodMonitor e Service Monitor). Observeque a única alteração necessária nos Recursos Personalizados (CRs) de OSS existentes para que sejam captados pelo Prometheus Gerenciado é o grupo de APIs - azmonitoring.coreos.com/v1.

Observação: Certifique-se de usar o labelLimit, labelNameLengthLimit e labelValueLengthLimit especificados nos modelos para que eles não sejam descartados durante o processamento.

Seus monitores de pod e serviço devem se parecer com os exemplos a seguir:

Exemplo de Monitor de Pod

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: PodMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector specifies which pods to filter for
  selector:

    # Filter by pod labels
    matchLabels:
      environment: test
    matchExpressions:
      - key: app
        operator: In
        values: [app-frontend, app-backend]

    # [Optional] Filter by pod namespace
    namespaceSelector:
      matchNames: [app-frontend, app-backend]

  # [Optional] Labels on the pod with these keys will be added as labels to each metric scraped
  podTargetLabels: [app, region, environment]

  # Multiple pod endpoints can be specified. Port requires a named port.
  podMetricsEndpoints:
    - port: metrics

Exemplo de Monitor de Serviço

# Note the API version is azmonitoring.coreos.com/v1 instead of monitoring.coreos.com/v1
apiVersion: azmonitoring.coreos.com/v1
kind: ServiceMonitor

# Can be deployed in any namespace
metadata:
  name: reference-app
  namespace: app-namespace
spec:
  labelLimit: 63
  labelNameLengthLimit: 511
  labelValueLengthLimit: 1023

  # The selector filters endpoints by service labels.
  selector:
    matchLabels:
      app: reference-app

  # Multiple endpoints can be specified. Port requires a named port.
  endpoints:
  - port: metrics

Implantar um pod ou monitor de serviço

Em seguida, você pode implantar o pod ou o monitor de serviço usando kubectl apply.

Quando aplicados, quaisquer erros nos recursos personalizados devem ser identificados e exibidos, e os monitores de pods ou serviços devem falhar na aplicação.
Uma criação de monitor de pod bem-sucedida se parece com a seguinte

podmonitor.azmonitoring.coreos.com/my-pod-monitor created

Exemplos

Criar um aplicativo de exemplo

Implante um aplicativo de amostra que exponha as métricas do Prometheus a serem configuradas pelo monitor de pod/serviço.

kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml

Criar um monitor de pod e/ou monitor de serviço para extrair métricas

Implante um monitor de pod que esteja configurado para extrair as métricas do aplicativo de exemplo da etapa anterior.

Monitor de Pod
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/pod-monitor/pod-monitor-reference-app.yaml
Monitor de Serviço
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/otelcollector/deploy/example-custom-resources/service-monitor/service-monitor-reference-app.yaml

Solução de problemas

Quando os monitores de pod ou de serviço forem aplicados com êxito, o complemento deverá começar automaticamente a coletar métricas dos destinos. Para confirmar isso, siga as instruções aqui para a solução de problemas gerais de recursos personalizados e também para garantir que os destinos apareçam em 127.0.0.1/destinos.

Captura de tela mostrando os destinos para o monitor de pod/serviço

Próximas etapas