Personalizar a coleção usando CRDs (Service e Pod Monitors)
A ativação do Managed Prometheus 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) que os monitores OSS Pod e os monitores de serviço OSS para Prometheus, exceto por uma alteração no nome do grupo. Se você tiver CRDs Prometheus existentes e recursos personalizados em seu cluster, esses CRDs não entrarão em conflito com os CRDs criados pelo complemento. Ao mesmo tempo, o addon Prometheus gerenciado não pega os CRDs criados para o OSS Prometheus. Esta separação é intencional para efeitos de isolamento dos trabalhos de raspagem.
Criar um Pod ou Monitor de Serviço
Use os modelos Pod e Service Monitor e siga a especificação da API para criar seus recursos personalizados (PodMonitor e Service Monitor). Observe que a única alteração necessária para os CRs (Recursos Personalizados) OSS existentes para serem coletados pelo Managed Prometheus é o grupo de API - 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.
Seu pod e monitores de serviço devem se parecer com os seguintes exemplos:
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 monitor de serviço usando kubectl apply.
Quando aplicado, quaisquer erros nos recursos personalizados devem aparecer e os monitores de pod ou serviço devem falhar na aplicação.
Uma criação bem-sucedida de pod monitor se parece com o seguinte -
podmonitor.azmonitoring.coreos.com/my-pod-monitor created
Exemplos
Criar um aplicativo de exemplo
Implante um aplicativo de exemplo expondo métricas prometheus a serem configuradas pelo pod/service monitor.
kubectl apply -f https://github.com/Azure/prometheus-collector/blob/main/internal/referenceapp/prometheus-reference-app.yaml
Crie um monitor de pod e/ou monitor de serviço para coletar métricas
Implante um monitor de pod configurado para extrair métricas do aplicativo de exemplo da etapa anterior.
Pod Monitor
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
Resolução de Problemas
Quando o pod ou os monitores de serviço são aplicados com sucesso, o addon deve começar automaticamente a coletar métricas dos alvos. Para confirmar isso, siga as instruções aqui para solução de problemas gerais de recursos personalizados e também para garantir que os destinos apareçam em 127.0.0.1/targets.