监控Trident保护资源
您可以使用 kube-state-metrics、Prometheus 和 Alertmanager 开源工具来监控Trident Protect 保护的资源的健康状况。
kube-state-metrics 服务从 Kubernetes API 通信生成指标。将其与Trident Protect 结合使用,可以显示有关环境中资源状态的有用信息。
Prometheus 是一个工具包,它可以接收 kube-state-metrics 生成的数据,并将其呈现为关于这些对象的易于阅读的信息。 kube-state-metrics 和 Prometheus 共同提供了一种方法,让您可以监控使用Trident Protect 管理的资源的健康状况和状态。
Alertmanager 是一项服务,它可以接收 Prometheus 等工具发送的警报,并将它们路由到您配置的目标位置。
|
|
这些步骤中包含的配置和指导仅供参考;您需要根据自己的环境进行自定义。请参阅以下官方文档以获取具体说明和支持: |
步骤 1:安装监控工具
要在Trident Protect 中启用资源监控,您需要安装和配置 kube-state-metrics、Promethus 和 Alertmanager。
安装 kube-state-metrics
您可以使用 Helm 安装 kube-state-metrics。
-
添加 kube-state-metrics Helm chart。例如:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update -
将 Prometheus ServiceMonitor CRD 应用到集群:
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -
为 Helm chart 创建一个配置文件(例如,
metrics-config.yaml)。您可以根据自身环境自定义以下示例配置:metrics-config.yaml:kube-state-metrics Helm chart 配置--- 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 -
通过部署 Helm chart 来安装 kube-state-metrics。例如:
helm install custom-resource -f metrics-config.yaml prometheus-community/kube-state-metrics --version 5.21.0 -
按照以下说明配置 kube-state-metrics,以生成Trident Protect 使用的自定义资源的指标: "kube-state-metrics 自定义资源文档" 。
安装 Prometheus
您可以按照以下说明安装 Prometheus: "普罗米修斯文档" 。
安装 Alertmanager
您可以按照以下说明安装 Alertmanager: "Alertmanager 文档" 。
步骤 2:配置监控工具以协同工作
安装完监控工具后,需要配置它们以使其协同工作。
-
将 kube-state-metrics 与 Prometheus 集成。编辑 Prometheus 配置文件(
prometheus.yaml)并添加 kube-state-metrics 服务信息。例如:prometheus.yaml:kube-state-metrics 服务与 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'] -
配置 Prometheus 将警报路由到 Alertmanager。编辑 Prometheus 配置文件(
prometheus.yaml)并添加以下部分:prometheus.yaml:向 Alertmanager 发送警报alerting: alertmanagers: - static_configs: - targets: - alertmanager.trident-protect.svc:9093
Prometheus 现在可以从 kube-state-metrics 收集指标,并可以向 Alertmanager 发送警报。现在您可以配置哪些条件会触发警报以及警报应该发送到哪里。
步骤 3:配置警报和警报目标
配置好工具协同工作后,还需要配置哪些类型的信息会触发警报,以及警报应该发送到哪里。
警报示例:备份失败
以下示例定义了一个关键警报,当备份自定义资源的状态设置为“是”时,该警报将被触发。 `Error`持续5秒或更长时间。您可以自定义此示例以匹配您的环境,并将此 YAML 代码片段包含在您的项目中。 `prometheus.yaml`配置文件:
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."
配置 Alertmanager 以将警报发送到其他渠道
您可以配置 Alertmanager,使其将通知发送到其他渠道,例如电子邮件、PagerDuty、Microsoft Teams 或其他通知服务,只需在配置文件中指定相应的配置即可。 `alertmanager.yaml`文件。
以下示例配置 Alertmanager 向 Slack 频道发送通知。要根据您的环境自定义此示例,请替换以下值: `api_url`密钥包含您环境中使用的 Slack webhook URL:
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