重新编译alertmanager源码,构建镜像
1.github
https://github.com/prometheus/alertmanager
2.dockerfile
FROM golang:1.17 ENV GO111MODULE=on \ GOPROXY="https://goproxy.cn,direct" COPY alertmanager-0.23.0 /apps/alertmanager-0.23.0 WORKDIR /apps/alertmanager-0.23.0 RUN make build RUN mkdir /etc/alertmanager RUN cp /apps/alertmanager-0.23.0/alertmanager /bin/alertmanager && cp /apps/alertmanager-0.23.0/amtool /bin/amtool && cp /apps/alertmanager-0.23.0/examples/ha/alertmanager.yml /etc/alertmanager/alertmanager.yml EXPOSE 9093 VOLUME [ "/alertmanager" ] WORKDIR /alertmanager ENTRYPOINT [ "/bin/alertmanager" ] CMD [ "--config.file=/etc/alertmanager/alertmanager.yml", \ "--storage.path=/alertmanager" ]
3.k8s部署
apiVersion: v1
data:
alertmanager.yml: |-
global:
resolve_timeout: 20m
route:
inhibit_rules:
receivers:
kind: ConfigMap
metadata:
name: alertmanager-config
namespace: paas
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: alertmanager-statefulset
namespace: paas
spec:
podManagementPolicy: OrderedReady
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
name: alertmanager
serviceName: alertmanager-svc
template:
metadata:
labels:
name: alertmanager
spec:
containers:
- command:
- /bin/sh
- -c
- /bin/alertmanager --log.level=debug --config.file=/etc/alertmanager/alertmanager.yml
--storage.path=/alertmanager --cluster.listen-address=[$(POD_IP)]:9094
--cluster.peer=alertmanager-statefulset-0.alertmanager-svc.$(POD_NAMESPACE).svc:9094 #这是集群模式配置
--cluster.peer=alertmanager-statefulset-1.alertmanager-svc.$(POD_NAMESPACE).svc:9094 #这是集群模式配置
--web.route-prefix=wdgde/alertmanager #这是给alertmanager的访问地址添加prefix
env:
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: alertmanager:0.23
imagePullPolicy: Always
name: container-0
ports:
- containerPort: 9093
name: http-c-0-p-0
protocol: TCP
- containerPort: 9094
name: mesh-tcp
protocol: TCP
resources:
limits:
cpu: 1
memory: 1.5Gi
requests:
cpu: 0.01
memory: 300Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /etc/alertmanager/
name: alertmanager-config
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 420
name: alertmanager-config
name: alertmanager-config
updateStrategy:
type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
name: alertmanager-svc
namespace: paas
spec:
externalTrafficPolicy: Cluster
ports:
- name: http-c-0-p-0
nodePort: 30000
port: 9093
protocol: TCP
targetPort: 9093
selector:
name: alertmanager
sessionAffinity: None
type: NodePort
参考链接:
https://www.modb.pro/db/46819
https://www.jianshu.com/p/417907140ab4

浙公网安备 33010602011771号