重新编译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

posted @ 2022-08-28 17:41  wdgde  阅读(203)  评论(0)    收藏  举报