使用 Prometheus Operator 来管理 Prometheus 实例、添加 targets 和告警规则是一个相对简单的过程。以下是如何通过 Prometheus Operator 添加 targets 和告警规则的详细步骤。
1. 安装 Prometheus Operator
如果尚未安装 Prometheus Operator,可以通过 Helm 或 Kubernetes 清单文件来安装。以下是使用 Helm 安装的示例:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack
2. 添加 Targets
Prometheus Operator 使用 ServiceMonitor
或 PodMonitor
对象来定义监控目标。以下是添加 targets 的步骤:
a. 使用 ServiceMonitor
创建一个 ServiceMonitor
对象,指定要监控的服务和相关配置。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-service-monitor
labels:
app: my-app
spec:
selector:
matchLabels:
app: my-app # 匹配要监控的服务标签
namespaceSelector:
matchNames:
- default # 选择服务所在的命名空间
endpoints:
- port: http # 服务暴露的端口名称
interval: 30s # 抓取间隔
将上述 YAML 文件保存为 servicemonitor.yaml
,然后应用它:
kubectl apply -f servicemonitor.yaml
b. 使用 PodMonitor
如果需要监控 Pod,而不是通过服务,可以使用 PodMonitor
。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: my-pod-monitor
labels:
app: my-app
spec:
selector:
matchLabels:
app: my-app
namespaceSelector:
matchNames:
- default
podMetricsEndpoints:
- port: metrics # Pod 中暴露的端口名称
interval: 30s
同样,将上述内容保存为 podmonitor.yaml
并应用:
kubectl apply -f podmonitor.yaml
3. 添加告警规则
在 Prometheus Operator 中,告警规则通过 PrometheusRule
对象进行定义。以下是添加告警规则的步骤:
a. 创建 PrometheusRule
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: my-alerts
labels:
app: my-app
spec:
groups:
- name: example-alerts
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{job="my-app"}[5m]) > 0.05
for: 10m
labels:
severity: warning
annotations:
summary: "High error rate detected in {{ $labels.instance }}"
description: "More than 5% of requests are failing over the last 10 minutes."
将上述 YAML 文件保存为 prometheusrule.yaml
,然后应用它:
kubectl apply -f prometheusrule.yaml
4. 查看和验证
-
查看 Targets:可以通过访问 Prometheus 的 UI,查看已添加的 targets。在浏览器中输入 Prometheus 的服务地址(例如
http://<prometheus-server>:9090/targets
)。 -
查看告警:同样,在 Prometheus 的 UI 中,可以查看触发的告警。
总结
使用 Prometheus Operator 添加 targets 和告警规则主要通过 ServiceMonitor
、PodMonitor
和 PrometheusRule
对象来完成。通过这些资源定义,可以灵活地监控 Kubernetes 中的服务,并配置相应的告警策略。确保在创建这些对象时,正确地设置标签和选择器,以便 Prometheus 能够成功抓取数据和触发告警。