1. Vue d'ensemble:
1.1 Environnement
La règle et le gestionnaire d'alertes de Thanos sont déployés dans le cluster kubernetes, les informations de version sont les suivantes:
a, cluster kubernetes: v1.18.5
b, règle de thanos: v0.11.0
c, alertmanager: v0.20.0
Introduction au fichier yaml de la règle thanos:
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: thanos-rule
name: thanos-rule
namespace: monitoring
spec:
replicas: 2
selector:
matchLabels:
app.kubernetes.io/name: thanos-rule
serviceName: thanos-rules
template:
metadata:
labels:
app.kubernetes.io/name: thanos-rule
spec:
containers:
- image: registry.cn-shenzhen.aliyuncs.com/gzlj/thanos-reloader:v0.1
imagePullPolicy: Always
name: reloader
resources:
limits:
cpu: 100m
memory: 100Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
- args:
- rule
- --grpc-address=0.0.0.0:10901
- --http-address=0.0.0.0:10902
- --rule-file=/etc/thanos/rules/*rules.yaml
- --data-dir=/var/thanos/rule
- --label=rule_replica="$(NAME)"
#请注意--alert.label-drop这行记录,值是带""
- --alert.label-drop="rule_replica"
- --query=dnssrv+_http._tcp.thanos-query.monitoring.svc.cluster.local
- --alertmanagers.url=http://alertmanager-main.monitoring.svc.cluster.local:9093
env:
- name: NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
image: quay.mirrors.ustc.edu.cn/thanos/thanos:v0.11.0
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 24
httpGet:
path: /-/healthy
port: 10902
scheme: HTTP
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
name: thanos-rule
ports:
- containerPort: 10901
name: grpc
protocol: TCP
- containerPort: 10902
name: http
protocol: TCP
readinessProbe:
failureThreshold: 18
httpGet:
path: /-/ready
port: 10902
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
volumeMounts:
- mountPath: /var/thanos/rule
name: data
- mountPath: /etc/thanos/rules
name: thanos-rules
restartPolicy: Always
serviceAccount: thanos-rules
serviceAccountName: thanos-rules
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 420
name: thanos-rules
name: thanos-rules
- emptyDir: {}
name: data
Les captures d'écran clés sont les suivantes
1.2 Phénomène
Alertmanager reçoit des alarmes en double. La seule différence entre les deux alarmes en double est que la valeur de l’étiquette personnalisée rule_replica est différente, comme illustré dans la figure:
Solution 2
J'ai essayé de passer à la version en miroir de la règle de thanos (v0.15.0), mais le phénomène reste le même.
Quand j'étais sur le point d'abandonner, j'ai changé le paramètre de commande de démarrage de la règle de thanos --alert.label-drop = "rule_replica" en --alert.label-drop = rule_replica, c'est-à-dire que je viens de supprimer les guillemets doubles et alertmanager a reçu à plusieurs reprises des alertes pour résoudre le problème.
3 Phénomène après résolution
La règle de Thanos jette l'étiquette rule_replica dans le message d'alerte, puis envoie l'alerte à alertmanager. Pour le moment, il n'y a qu'un seul message d'alerte dans alertmanager au lieu des deux précédents.