1. 说明
此项目使用镜像 docker.io/prom/alertmanager:v0.24.0
,离线环境请在部署前将其导入至 containerd
或私有镜像源地址中。
AlertManager 配置放在 configmap/conf-alert-manager
中。
2. 创建配置
使用以下配置创建 AlertManager 需要的相关的配置文件.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
apiVersion: v1
kind: ConfigMap
metadata:
name: conf-alert-manager
namespace: monitor-app
labels:
app: alert-manager
data:
alertmanager.yml: |
global:
resolve_timeout: 30s
route:
group_by: [ 'instance' ]
group_wait: 30s
group_interval: 2m
repeat_interval: 6h
receiver: 'webhook'
receivers:
- name: 'webhook'
webhook_configs:
- url: 'http://172.16.63.51:8000/power-monitor/receive/receiveAlarmManagerAlarm.shtml'
inhibit_rules:
- source_matchers: [ severity="disaster" ]
target_matchers: [ severity=~"normal|critical" ]
equal: [ instanceIp ]
- source_matchers: [ severity="critical" ]
target_matchers: [ severity="normal" ]
equal: [ instanceIp,project ]
- source_matchers: [ priority="4" ]
target_matchers: [ priority=~"3|2|1" ]
equal: [ instance ]
- source_matchers: [ priority="3" ]
target_matchers: [ priority=~"2|1" ]
equal: [ instance ]
- source_matchers: [ priority="2" ]
target_matchers: [ priority="1" ]
equal: [ instance ]
3. 导入启动配置
使用以下配置创建 AlertManager 启动配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sts-alert-manager
namespace: monitor-app
labels:
app: alert-manager
spec:
serviceName: svc-alert-manager
selector:
matchLabels:
app: alert-manager
replicas: 1
template:
metadata:
labels:
app: alert-manager
spec:
containers:
- name: alert-manager
image: docker.io/prom/alertmanager:v0.24.0
args:
- "--config.file=/etc/alertmanager/alertmanager.yml"
volumeMounts:
- name: alert-manager-conf
mountPath: /etc/alertmanager/
volumes:
- name: alert-manager-conf
configMap:
name: conf-alert-manager
4. 创建 Service
使用以下配置,创建对应的 Service 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Service
metadata:
labels:
app: alert-manager
name: svc-alert-manager
namespace: monitor-app
spec:
ports:
- port: 9093
name: alert-manager
selector:
app: alert-manager
5. 创建 Ingress
Service 创建完成后,使用以下配置将对应的 Service 暴露到 Ingress 中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-alert-manager
namespace: monitor-app
labels:
app: alert-manager
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
ingressClassName: nginx-private
tls:
- hosts:
- alert-manager.internal.d7z.net
secretName: tls-pri-d7z
rules:
- host: alert-manager.internal.d7z.net
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-alert-manager
port:
name: alert-manager
6. 测试
配置导入完成后,使用如下命令查看结果:
1
kubectl get pods,svc,ingress,configmaps -n monitor-app -l app=alert-manager
待一切完成后,访问 https://alert-manager.internal.d7z.net
查看 web 页面。