kube-prometheus 系列2 初始配置

2023-11-10

kube-prometheus 安装完后每个组件会都有默认配置,但是如果要满足基本的生产可用,默认配置是不够的,如数据持久化存储等。这篇文章介绍一些常见的需要初始化的配置。

  1. prometheus相关配置
 kubectl -n monitoring edit prometheuses k8s

1.1 首先需要修改的就是数据持久化存储。否则pod重启监控数据就没有了。在spec中加入storage配置(以下是以阿里云的storageClassName为例,根据实际情况配置)

  storage:
    volumeClaimTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: alicloud-disk-efficiency
  1. Alertmanager配置
    当生产环境有告警发生,肯定要及时的接收到,以企业微信为例进行配置。
    2.1 企业微信
    #查看并导出已有配置的方法
kubectl -n monitoring get secret alertmanager-main -o "jsonpath={.data.alertmanager\.yaml}" | base64 -d

#将现有配置另存为一个文件alertmanager.yaml,在此基础上进行修改。

kubectl -n monitoring get secret alertmanager-main -o "jsonpath={.data.alertmanager\.yaml}" | base64 -d > alertmanager.yaml

#先修改alertmanager.yaml 配置,之后重新创建名为alertmanager-main 的 secret

kubectl -n monitoring delete secrets alertmanager-main 
kubectl -n monitoring create secret generic alertmanager-main --from-file ./alertmanager.yaml

配置会自动更新并生效。

下面看具体配置

先申请企业微信号,创建应用。这个另外有文章介绍。
修改alertmanager配置文件添加企业微信接口配置,告警i信息模板配置,receivers配置(先修改Default和Watchdog这两个receivers)。按上述描述的方法重建 secret alertmanager-main 使配置生效。
"global":
  "resolve_timeout": "5m"
  "wechat_api_url": "https://qyapi.weixin.qq.com/cgi-bin/"
"templates":
  - "/etc/alertmanager/template/*.tmpl"
"receivers":
- "name": "Default"
  "wechat_configs":
  - "send_resolved": true
    "api_secret": "4nEuU312Sb041212341qF6ogwb4Tkzf7fDdk"
    "corp_id": "ww21a123495b76b"
    "to_party": "1"
    "agent_id": "1000002"
    "message": '{{ template "wechat.html" . }}'
- "name": "Watchdog"
  "wechat_configs":  
  - "send_resolved": true
    "api_secret": "4nEuU312Sb041212341qF6ogwb4Tkzf7fDdk"
    "corp_id": "ww21a123495b76b"
    "to_party": "1"
    "agent_id": "1000002"
    "message": '{{ template "wechat.html" . }}' 
创建告警信息模板

#创建一个微信告警模板的configmap (如果修改了模板的内容,alertmanager并不能自动生效,虽然 configmap 能够自动加载到pod 中,但是程序本身还需要另外有机制reload 这个配置才行。)
模板文件alertmanager-wechat.tmpl内容如下

	{{ define "wechat.html" }}
	{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts.Firing }}
	@故障告警
	告警类型: {{ .Labels.alertname }}
	告警服务: {{ .Labels.service }}
	告警主机: {{ .Labels.instance }}
	告警信息: {{ .Annotations.summary }}
	详细信息: {{ .Annotations.description }}
	开始时间: {{ (.StartsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	{{ end }}{{ end -}}
	{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts.Resolved }}
	@故障恢复
	告警类型: {{ .Labels.alertname }}
	告警服务: {{ .Labels.service }}
	告警主机: {{ .Labels.instance }}
	告警信息: {{ .Annotations.summary }}
	详细信息: {{ .Annotations.description }}
	开始时间: {{ (.StartsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	恢复时间: {{ (.EndsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	{{ end }}{{ end -}}
	{{- end }}
创建模板configmap
kubectl -n monitoring create configmap alert-wechat-template --from-file alertmanager-wechat.tmpl
将模板以volume挂载到alertmanager,需要修改CRD alertmanagers
kubectl -n monitoring edit alertmanagers.monitoring.coreos.com main 
在spec中添加如下(在这个CRD中volumeMounts与volumes是并列的层级)
  volumeMounts:
  - mountPath: /etc/alertmanager/template
    name: alert-wechat-template
  volumes:
  - configMap:
      name: alert-wechat-template
    name: alert-wechat-template

#重启alertmanager pod,以加载template配置文件

kubectl -n monitoring rollout restart statefulset alertmanager-main
  1. 在Prometheus中查看已发生的告警,有些告警是由于默认配置与环境不匹配造成的,修改配置,消除这些无效告警。(例如:https://chaiyingchao.blog.csdn.net/article/details/121826573 这篇文章说到的问题)

至此基本的使用kube-prometheus监控和告警就可以正常使用了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kube-prometheus 系列2 初始配置 的相关文章

随机推荐