Monitor Trident protege recursos
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.
O Alertmanager é um serviço que recebe os alertas enviados por ferramentas como o Prometheus e os encaminha para destinos que você configura.
|
|
As configurações e orientações incluídas nestas etapas são apenas exemplos; você precisa personalizá-las para que correspondam ao seu ambiente. Consulte a seguinte documentação oficial para obter instruções específicas e suporte: |
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.
Instale o kube-state-metrics
Você pode instalar o kube-state-metrics usando o Helm.
-
Adicione o gráfico Helm kube-state-metrics. 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 a seguinte configuração de exemplo para corresponder ao seu ambiente:metrics-config.yaml: configuração do gráfico Helm 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 o kube-state-metrics 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 do recurso personalizado kube-state-metrics" .
Instalar o Prometheus
Você pode instalar o Prometheus seguindo as instruções em "Documentação do Prometheus" .
Instalar o Alertmanager
Você pode instalar o Alertmanager seguindo as instruções em "Documentação do Alertmanager" .
Etapa 2: Configure as ferramentas de monitoramento para funcionarem em conjunto.
Após instalar as ferramentas de monitoramento, você precisa configurá-las para que funcionem em conjunto.
-
Integre o kube-state-metrics com o Prometheus. Edite o arquivo de configuração do 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 o Prometheus para encaminhar alertas para o Alertmanager. Edite o arquivo de configuração do 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
O Prometheus agora pode coletar métricas do kube-state-metrics e enviar alertas para o Alertmanager. Agora você está pronto para configurar quais condições acionam um alerta e para onde os alertas devem ser enviados.
Etapa 3: Configurar alertas e destinos de alerta
Depois de configurar as ferramentas para funcionarem em conjunto, você precisa configurar que tipo de informação aciona os alertas e para onde os alertas devem ser enviados.
Exemplo de alerta: falha no 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 este trecho de YAML no seu arquivo de configuração. 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 respectiva configuração no arquivo de configuração. alertmanager.yaml arquivo.
O exemplo a seguir configura o Alertmanager para enviar notificações para um canal do Slack. Para adaptar este exemplo ao seu ambiente, substitua o valor de api_url Chave com a URL do webhook do Slack usada em seu 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