五 kubernetes搭建prometheusAlertmanager告警

可以配置告警策略,但无法发送告警信息到邮件或者其他终端媒介,就是实现将的告警信息发送到终端的一个插件 。
本文介绍的是通过将告警发送到企业微信中
准备:
需要一个企业微信账号,网页端登录后创建一个应用,需要应用中的、 和企业ID
、 这两个点开创建的应用后就能看见
企业ID 在我的企业中最下方可以看到
创建告警配置文件
--wx.yaml
apiVersion: v1kind: ConfigMapmetadata:# 配置文件名称name: alertmanager-confignamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: EnsureExistsdata:alertmanager.yml: |global: resolve_timeout: 5mreceivers:- name: 'wx'wechat_configs:- send_resolved: trueagent_id: '1000007'# 自建应用的agentIdto_user: '@all'# 接收告警消息的人员Idapi_secret: 'xxxxxxxxxxxxxxxxx' # 自建应用的secretcorp_id: 'xxxxxxxxxx'# 企业IDroute:group_interval: 1mgroup_wait: 10sreceiver: wxrepeat_interval: 1mtemplates:- /etc/alertmanager/config/template.tmp1
需要修改、 和
创建告警模板文件
用于将告警信息格式化输出到企业微信中
就是--wx.yaml 中的- /etc///.tmp1
-.yaml
apiVersion: v1kind: ConfigMapmetadata:# 配置文件名称name: alter-template-confignamespace: kube-systemlabels:kubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: EnsureExistsdata:template.tmp1: |{{ define "wechat.default.message" }}{{- if gt (len .Alerts.Firing) 0 -}}{{- range $index, $alert := .Alerts -}}{{- if eq $index 0 }}===异常告警===告警类型: {{ $alert.Labels.alertname }}告警级别: {{ $alert.Labels.severity }}告警详情: {{ $alert.Annotations.description}}故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}{{- if gt (len $alert.Labels.instance) 0 }}实例信息: {{ $alert.Labels.instance }}{{- end }}{{- if gt (len $alert.Labels.namespace) 0 }}命名空间: {{ $alert.Labels.namespace }}{{- end }}{{- if gt (len $alert.Labels.node) 0 }}节点信息: {{ $alert.Labels.node }}{{- end }}{{- if gt (len $alert.Labels.pod) 0 }}实例名称: {{ $alert.Labels.pod }}{{- end }}===END==={{- end }}{{- end }}{{- end }}{{- if gt (len .Alerts.Resolved) 0 -}}{{- range $index, $alert := .Alerts -}}{{- if eq $index 0 }}===异常恢复===告警类型: {{ $alert.Labels.alertname }}告警级别: {{ $alert.Labels.severity }}告警详情: {{ $alert.Annotations.description}}故障时间: {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}恢复时间: {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}{{- if gt (len $alert.Labels.instance) 0 }}实例信息: {{ $alert.Labels.instance }}{{- end }}{{- if gt (len $alert.Labels.namespace) 0 }}命名空间: {{ $alert.Labels.namespace }}{{- end }}{{- if gt (len $alert.Labels.node) 0 }}节点信息: {{ $alert.Labels.node }}{{- end }}{{- if gt (len $alert.Labels.pod) 0 }}实例名称: {{ $alert.Labels.pod }}{{- end }}===END==={{- end }}{{- end }}{{- end }}{{- end }}
创建服务
-.yaml
apiVersion: apps/v1kind: Deploymentmetadata:name: alertmanagernamespace: kube-systemlabels:k8s-app: alertmanagerkubernetes.io/cluster-service: "true"addonmanager.kubernetes.io/mode: Reconcileversion: v0.14.0spec:replicas: 1selector:matchLabels:k8s-app: alertmanagerversion: v0.14.0template:metadata:labels:k8s-app: alertmanagerversion: v0.14.0spec:priorityClassName: system-cluster-criticalcontainers:- name: prometheus-alertmanagerimage: "prom/alertmanager:v0.14.0"imagePullPolicy: "IfNotPresent"args:- --config.file=/etc/config/alertmanager.yml- --storage.path=/data- --web.external-url=/ports:- containerPort: 9093readinessProbe:httpGet:path: /#/statusport: 9093initialDelaySeconds: 30timeoutSeconds: 30volumeMounts:- name: config-volumemountPath: /etc/config- name: storage-volumemountPath: "/data"subPath: ""# 添加模板文件- name: templatemountPath: /etc/alertmanager/configresources:limits:cpu: 10mmemory: 50Mirequests:cpu: 10mmemory: 50Mi- name: prometheus-alertmanager-configmap-reload# 修改镜像image: "jimmidyson/configmap-reload:v0.4.0"imagePullPolicy: "IfNotPresent"args:- --volume-dir=/etc/config- --webhook-url=http://localhost:9093/-/reloadvolumeMounts:- name: config-volumemountPath: /etc/configreadOnly: true# 添加模板文件- name: templatemountPath: /etc/alertmanager/configresources:limits:cpu: 10mmemory: 10Mirequests:cpu: 10mmemory: 10Mivolumes:- name: config-volumeconfigMap:name: alertmanager-config# 修改为本地nfs挂载- name: storage-volumenfs:server: xxxxxxxx.cn-hangzhou.nas.aliyuncs.compath: /uat-pod-log/alertmanager# 挂载模板文件- configMap:name: alter-template-configname: template# - name: storage-volume#persistentVolumeClaim:#claimName: alertmanager