K8S中安装alertmanager:v0.21及Prometheus告警模板
1.安装alertmanager:v0.21
1.1 准备docker镜像
docker pull docker.io/prom/alertmanager:v0.21.0
docker tag  c876f5897d7b harbor.st/infra/alertmanager:v0.21.0
docker push harbor.st/infra/alertmanager:v0.21.0
准备⽬录
mkdir /data/k8s-yaml/alertmanager
cd /data/k8s-yaml/alertmanager
1.2 准备cm资源清单
cat >cm0.21.yaml <<'EOF'
apiVersion: v1
kind: ConfigMap
metadata:
name: alertmanager-config
namespace: test
data:
global:
# 在没有报警的情况下声明为已解决的时间
resolve_timeout: 5m
# 配置邮件发送信息
smtp_smarthost: 'smtp.qq:465'
smtp_from: 'xxxxx@qq'
smtp_auth_username: 'xxxxx@qq'
smtp_auth_password: 'nxhwqcmaaaaaa'
# 这⾥为第三⽅登录 QQ 邮箱的授权码,⾮ QQ 账户登录密码
smtp_hello: 'xxxx@qq'
# 这⾥必须增加smtp_hello,否则⽆法发送
smtp_require_tls: false
templates:
- '/etc/alertmanager/*.tmpl'
# 所有报警信息进⼊后的根路由,⽤来设置报警的分发策略
route:
group_by: ['alertname', 'cluster']
# 当⼀个新的报警分组被创建后,需要等待⾄少group_wait时间来初始化通知,这种⽅式可以确保您能有⾜够的时间为同⼀分组来获取多个警报,然后⼀起触发这个报警信息。
group_wait: 30s
# 当第⼀个报警发送后,等待'group_interval'时间来发送新的⼀组报警信息。
group_interval: 5m
# 如果⼀个报警信息已经发送成功了,等待'repeat_interval'时间来重新发送它们
repeat_interval: 5m
# 默认的receiver:如果⼀个报警没有被⼀个route匹配,则发送给默认的接收器
receiver: 'default'
receivers:
- name: 'default'
email_configs:
- to: 'xxxx@qq'
send_resolved: true
html: '{{ template "html" . }}'
headers: { Subject: " {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}" }
{{ define "html" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{ range .Alerts }}
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }}  <br>
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}
{{ range .Alerts }}
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} <br>nodeselector
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
触发时间: {{ .StartsAt.Format "2021-01-01 08:00:00" }} <br>
恢复时间: {{ .EndsAt.Format "2021-01-01 08:00:00" }} <br>
{{ end }}{{ end -}}
EOF
1.3 准备dp资源清单
cat >dp0.21.yaml <<'EOF'
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: alertmanager
namespace: test
spec:
replicas: 1
selector:
matchLabels:
app: alertmanager
template:
metadata:
labels:
app: alertmanager
spec:
containers:
- name: alertmanager
image: harbor.st/infra/alertmanager:v0.21.0        args:
- "--config.file=/etc/l"          - "--storage.path=/alertmanager"
- "--cluster.advertise-address=0.0.0.0:9093"
ports:
- name: alertmanager
containerPort: 9093
volumeMounts:
- name: alertmanager-cm
mountPath: /etc/alertmanager
volumes:
- name: alertmanager-cm
configMap:
name: alertmanager-config
imagePullSecrets:
- name: harbor
1.4 准备svc资源清单
cat >svc0.21.yaml <<'EOF' apiVersion: v1
kind: Service
metadata:
name: alertmanager
namespace: test
spec:
selector:
app: alertmanager
ports:
- port: 80
targetPort: 9093
EOF
1.5 应⽤资源配置清单
kubectl apply -f
kubectl apply -f
kubectl apply -f
补充:
1.6 准备ingress资源清单
cat > ingress0.21.yaml <<'EOF' apiVersion: extensions/v1beta1 kind: Ingress
metadata:
name: alertmanager
namespace: test
spec:
rules:
- host: alertmanager.st
http:
paths:
- path: /
backend:
serviceName: alertmanager          servicePort: 80
kubectl apply -f
1.7 添加域名解析
alertmanager                A    192.168.40.13
增加ingress主要是为了外部⽹络可以通过浏览器直接访问查看。
排错1:
alertmanager版本过⾼(0.15以上)
报错:Failed to get final advertise address: No private IP address found, and explicit IP not provided 解决办法1
把alertmanager版本降低到prom/alertmanager:v0.14.0 就没有问题

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。