Prometheus Operator配置Alertmanager告警

1、管理 Alertmanager configuration

1.1 方式一,使用存储在Kubernetes secret中的本地Alertmanager配置文件

1、编写alertmanager配置alertmanager.yaml

route:
  group_by: ['job']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: 'webhook'
receivers:
- name: 'webhook'
  webhook_configs:
  - url: 'http://example.com/'

2、创建secret资源

kubectl create secret generic alertmanager-k8s-alertmanager --from-file=alertmanager.yaml -n monitoring

# secret命名必须为alertmanager-{ALERTMANAGER_NAME},secret中保存配置数据的密钥的名称必须为alertmanager.yaml,如果要使用不同的secret名称,可以在Alertmanager资源中定义spec.configSecret字段

同样可以引用模板文件

apiVersion: v1
kind: Secret
metadata:
  name: alertmanager-example
data:
  alertmanager.yaml: {BASE64_CONFIG}
  template_1.tmpl: {BASE64_TEMPLATE_1}
  template_2.tmpl: {BASE64_TEMPLATE_2}

Alertmanager配置引用

templates:
- '/etc/alertmanager/config/*.tmpl'
1.2 方式二,定义主Alertmanager配置选择哪些AlertmanagerConfig对象

1、编写AlertmanagerConfig配置清单,alertmanagerconfig.yaml

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: config-example
  labels:
    alertmanagerConfig: example
spec:
  route:
    groupBy: ['job']
    groupWait: 30s
    groupInterval: 5m
    repeatInterval: 12h
    receiver: 'webhook'
  receivers:
  - name: 'webhook'
    webhookConfigs:
    - url: 'http://example.com/'

2、Alertmanager配置引用

apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
  name: example
spec:
  replicas: 3
  alertmanagerConfigSelector:
    matchLabels:
      alertmanagerConfig: example
1.3 方式三,使用AlertmanagerConfig进行全局配置

1、编写AlertmanagerConfig配置清单,alertmanagerconfig.yaml

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
  name: config-example
  labels:
    alertmanagerConfig: example
spec:
  route:
    groupBy: ['job']
    groupWait: 30s
    groupInterval: 5m
    repeatInterval: 12h
    receiver: 'webhook'
  receivers:
  - name: 'webhook'
    webhookConfigs:
    - url: 'http://example.com/'

2、Alertmanager配置引用,使用AlertmanagerConfig资源来代替secret配置

apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
  name: example
  namespace: default
spec:
  replicas: 3
  alertmanagerConfiguration:
    name: config-example
---
# 名为example-config的AlertmanagerConfig资源在命名空间中default将是一个全局警报管理器配置。当operator 从中生成Alertmanager配置时,不会对路由和禁止规则强制使用名称空间标签。

2、管理Prometheus Rules配置

1、编写PrometheusRule配置清单,prometheusrule.yaml

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  creationTimestamp: null
  labels:
    prometheus: example
    role: alert-rules
  name: prometheus-example-rules
spec:
  groups:
  - name: ./example.rules
    rules:
    - alert: ExampleAlert
      expr: vector(1)

2、Prometheus配置引用

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: example
spec:
  serviceAccountName: prometheus
  replicas: 2
  alerting:
    alertmanagers:
    - namespace: default
      name: alertmanager-example
      port: web
  serviceMonitorSelector:
    matchLabels:
      team: frontend
  ruleSelector:
    matchLabels:
      role: alert-rules
      prometheus: example
  ruleNamespaceSelector:
    matchLabels:
      team: frontend
---
# ruleSelector、ruleNamespaceSelector会选择具有定义相关属性标签的PrometheusRule。默认情况下,Prometheus资源仅发现同一命名空间中的PrometheusRule资源。要从所有名称空间中发现规则,传递一个空的{}(ruleNamespaceSelector: {})。

3、其他

# 查询自定义资源列表
kubectl get prometheuses,servicemonitors,podmonitors,prometheusrules,alertmanagers,alertmanagerconfigs,probes,thanosrulers --all-namespaces
posted @   wanghongwei-dev  阅读(662)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示