Monitorar recursos do Trident Protect
Você pode usar as ferramentas de código aberto kube-state-metrics, Prometheus e Alertmanager para monitorar a integridade dos recursos protegidos pelo Trident Protect.
O serviço kube-state-metrics gera métricas a partir da comunicação da API do Kubernetes. Ao utilizá-lo com o Trident Protect, você obtém informações úteis sobre o estado dos recursos em seu ambiente.
O Prometheus é um conjunto de ferramentas que pode ingerir os dados gerados pelo kube-state-metrics e apresentá-los como informações facilmente legíveis sobre esses objetos. Em conjunto, o kube-state-metrics e o Prometheus oferecem uma maneira de monitorar a integridade e o status dos recursos que você está gerenciando com o Trident Protect.
Alertmanager é um serviço que ingere os alertas enviados por ferramentas como Prometheus e os encaminha para destinos que você configura.
|
|
As configurações e orientações incluídas nessas etapas são apenas exemplos; você precisa personalizá-las para corresponder ao seu ambiente. Consulte a seguinte documentação oficial para obter instruções e suporte específicos: |
Passo 1: Instale as ferramentas de monitoramento
Para habilitar o monitoramento de recursos no Trident Protect, você precisa instalar e configurar o kube-state-metrics, o Promethus e o Alertmanager.
Instalar métricas de estado do kube
Você pode instalar métricas de estado do kube usando o Helm.
-
Adicione o gráfico Helm de métricas de estado kube. Por exemplo:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
Aplique o Prometheus ServiceMonitor CRD ao cluster:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
Crie um arquivo de configuração para o gráfico Helm (por exemplo,
metrics-config.yaml). Você pode personalizar o seguinte exemplo de configuração para corresponder ao seu ambiente:Metrics-config.yaml: Configuração do gráfico Helm do kube-State-metrics--- extraArgs: # Collect only custom metrics - --custom-resource-state-only=true customResourceState: enabled: true config: kind: CustomResourceStateMetrics spec: resources: - groupVersionKind: group: protect.trident.netapp.io kind: "Backup" version: "v1" labelsFromPath: backup_uid: [metadata, uid] backup_name: [metadata, name] creation_time: [metadata, creationTimestamp] metrics: - name: backup_info help: "Exposes details about the Backup state" each: type: Info info: labelsFromPath: appVaultReference: ["spec", "appVaultRef"] appReference: ["spec", "applicationRef"] rbac: extraRules: - apiGroups: ["protect.trident.netapp.io"] resources: ["backups"] verbs: ["list", "watch"] # Collect metrics from all namespaces namespaces: "" # Ensure that the metrics are collected by Prometheus prometheus: monitor: enabled: true -
Instale as métricas de estado do kube implantando o gráfico Helm. Por exemplo:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
Configure o kube-state-metrics para gerar métricas para os recursos personalizados usados pelo Trident Protect, seguindo as instruções em "documentação de recursos personalizados de métricas de estado do kube" .
Instale Prometheus
Você pode instalar o Prometheus seguindo as instruções no "Documentação do Prometheus".
Instale o Alertmanager
Você pode instalar o Alertmanager seguindo as instruções no "Documentação do Alertmanager".
Passo 2: Configure as ferramentas de monitoramento para trabalhar em conjunto
Depois de instalar as ferramentas de monitoramento, você precisa configurá-las para trabalhar em conjunto.
-
Integre o kube-State-metrics com Prometheus. Edite o arquivo de configuração Prometheus (
prometheus.yaml) e adicione as informações do serviço kube-State-metrics. Por exemplo:prometheus.yaml: integração do serviço kube-state-metrics com o Prometheus--- apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: trident-protect data: prometheus.yaml: | global: scrape_interval: 15s scrape_configs: - job_name: 'kube-state-metrics' static_configs: - targets: ['kube-state-metrics.trident-protect.svc:8080'] -
Configure Prometheus para rotear alertas para Alertmanager. Edite o arquivo de configuração Prometheus (
prometheus.yaml) e adicione a seguinte seção:prometheus.yaml: Enviar alertas para o Alertmanageralerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheus agora pode coletar métricas de kube-State-metrics e enviar alertas para Alertmanager. Agora você está pronto para configurar quais condições acionam um alerta e onde os alertas devem ser enviados.
Etapa 3: Configurar alertas e destinos de alerta
Depois de configurar as ferramentas para trabalhar em conjunto, você precisa configurar que tipo de informação aciona alertas e para onde os alertas devem ser enviados.
Exemplo de alerta: Falha de backup
O exemplo a seguir define um alerta crítico que é acionado quando o status do recurso personalizado de backup é definido como Error por 5 segundos ou mais. Você pode personalizar este exemplo para corresponder ao seu ambiente e incluir esse snippet YAML em seu prometheus.yaml arquivo de configuração:
rules.yaml: |
groups:
- name: fail-backup
rules:
- alert: BackupFailed
expr: kube_customresource_backup_info{status="Error"}
for: 5s
labels:
severity: critical
annotations:
summary: "Backup failed"
description: "A backup has failed."
Configure o Alertmanager para enviar alertas para outros canais
Você pode configurar o Alertmanager para enviar notificações para outros canais, como e-mail, PagerDuty, Microsoft Teams ou outros serviços de notificação especificando a respetiva configuração no alertmanager.yaml arquivo.
O exemplo a seguir configura o Alertmanager para enviar notificações para um canal do Slack. Para personalizar este exemplo para o ambiente, substitua o valor da api_url chave pelo URL do webhook do Slack usado no ambiente:
data:
alertmanager.yaml: |
global:
resolve_timeout: 5m
route:
receiver: 'slack-notifications'
receivers:
- name: 'slack-notifications'
slack_configs:
- api_url: '<your-slack-webhook-url>'
channel: '#failed-backups-channel'
send_resolved: false