k8s部署prometheus之钉钉告警

1.部署prometheus-webhook-dingtalk

kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml

configmap.yaml

apiVersion: v1
data:
  config.yml: |-
    targets:
      webhook1:
        #钉钉机器人webhook设置
        url: https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXX
        # secret for signature
        secret: XXXXXXXXXXXXX
kind: ConfigMap
metadata:
  name: dingtalk-conf
  namespace: monitoring

deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: svc-webhook-dingtalk
  namespace: monitoring
spec:
  #type: NodePort
  type: ClusterIP
  ports:
  - port: 8060
    protocol: TCP
    targetPort: 8060
  selector:
    app: webhook-dingtalk
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webhook-dingtalk
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webhook-dingtalk
  template:
    metadata:
      labels:
        app: webhook-dingtalk
    spec:
      imagePullSecrets:
        - name: shu-cn
      containers:
      - image: shu.cn/prom/prometheus-webhook-dingtalk:v2.1.0
        name: webhook-dingtalk
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 50m
            memory: 128Mi
          limits:
            cpu: 100m
            memory: 512Mi
        ports:
        - containerPort: 8060
          name: tcp-8060
          protocol: TCP
        volumeMounts:
        - name: host-time
          mountPath: /etc/localtime
        - name: dingtalk-conf
          mountPath: /etc/prometheus-webhook-dingtalk/config.yml
          subPath: config.yml
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
        - name: dingtalk-conf
          configMap:
            name: dingtalk-conf

2.部署alertmanager

kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml

configmap.yaml

apiVersion: v1
data:
  alertmanager.yml: |-
    route:
      group_by: ['alertname'] #根据告警规则组名进行分组
      group_wait: 30s  #分组内第一个告警等待时间,若30s内触发同一个组的另一个告警则会合并发送
      group_interval: 5m #发送新告警时间间隔
      repeat_interval: 1h #重复告警间隔发送时间
      receiver: 'web.hook' #选择的告警接收者,与下面的receivers中定义的名称要一致
    receivers:
      - name: 'web.hook' #定义告警接收者
        webhook_configs:
          - url: 'http://svc-webhook-dingtalk.monitoring.svc:8060/dingtalk/webhook1/send'
    inhibit_rules:
      - source_match:
          severity: 'warning' #已经触发告警的规则标签
        target_match:
          severity: 'warning'  #准备发送告警的规则标签
        equal: ['pod', 'namespace'] #告警的标签是否匹配这三个标签,可修改
kind: ConfigMap
metadata:
  name: alertmanager-conf
  namespace: monitoring

deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: svc-alertmanager
  namespace: monitoring
spec:
  #type: NodePort
  type: ClusterIP
  ports:
  - port: 9093
    protocol: TCP
    targetPort: 9093
  selector:
    app: alertmanager
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: alertmanager
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: alertmanager
  template:
    metadata:
      labels:
        app: alertmanager
    spec:
      imagePullSecrets:
        - name: shu-cn
      containers:
      - image: shu.cn/prom/alertmanager:v0.25.0
        name: alertmanager
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 50m
            memory: 128Mi
          limits:
            cpu: 100m
            memory: 512Mi
        ports:
        - containerPort: 9093
          name: tcp-9093
          protocol: TCP
        volumeMounts:
        - name: host-time
          mountPath: /etc/localtime
        - name: alertmanager-conf
          mountPath: /etc/alertmanager/alertmanager.yml
          subPath: alertmanager.yml
      volumes:
        - name: host-time
          hostPath:
            path: /etc/localtime
        - name: alertmanager-conf
          configMap:
            name: alertmanager-conf

3.alertmanager内部访问地址

svc-alertmanager.monitoring.svc:9093

4.prometheus主配置文件中添加alertmanager配置

...
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
               - svc-alertmanager.monitoring.svc:9093
...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲
### 回答1: 要在Kubernetes 1.26上部署Prometheus钉钉告警,可以遵循以下步骤: 1. 首先,您需要创建一个Prometheus的配置文件,其中包含Prometheus服务器的相关配置信息。您可以通过使用Prometheus Operator或手动创建一个配置文件。 2. 在该配置文件中,您需要定义钉钉告警的接收者。您可以添加一个名为"dingtalk"的接收者,并提供钉钉机器人的Webhook地址。这将允许Prometheus发送告警通知到钉钉机器人。 3. 接下来,您需要将该配置文件应用到Kubernetes集群中。您可以使用kubectl命令应用一个YAML文件,其中定义了Prometheus服务器的Deployment和Service。 4. 在Prometheus服务器运行后,您可以使用kubectl port-forward命令将Prometheus的端口映射到本地,以便可以访问Prometheus的Web界面。 5. 在Prometheus的Web界面中,您可以配置和监控各种指标,并设置相应的报警规则。您可以通过PromQL查询语言定义报警规则,并指定钉钉接收者。 6. 当报警规则触发时,Prometheus将发送告警通知到钉钉机器人。您可以在钉钉中收到告警通知,并进行相应的处理。 总结:以上是在Kubernetes 1.26上部署Prometheus钉钉告警的大致步骤。具体的实施方式可能会根据您的环境和需求而有所不同。需要注意的是,配置和使用Prometheus钉钉告警需要一定的技术知识和经验。 ### 回答2: 部署k8s 1.26版本中的Prometheus并配置钉钉告警需要以下步骤: 1. 安装Prometheus:根据k8s版本选择适当的Prometheus版本,并将其部署kubernetes集群中。可以使用Helm进行安装:`helm install prometheus stable/prometheus` 2. 配置告警规则:在Prometheus中创建告警规则,以定义要监控的指标和阈值。可以通过编辑Prometheus配置文件或使用Prometheus的API来创建规则。 3. 设置钉钉告警:首先,需要在钉钉开发者平台上创建一个机器人,并获取其Webhook地址。然后,在Prometheus的配置文件中添加相应的钉钉告警配置,包括Webhook地址和其他相关参数。 4. 测试告警:修改某些指标或触发条件,以便使Prometheus触发告警规则。可以使用下面的命令手动触发告警:`kubectl -n <prometheus-namespace> delete po -l <label-selector>` 5. 验证告警:检查钉钉群组中是否收到Prometheus告警通知。如果一切配置正确,钉钉机器人将发送告警消息到指定的群组中。 需要注意的是,部署Prometheus和配置钉钉告警可能会因k8s版本和Prometheus版本的不同而有所差异。以上步骤仅提供了一个大致的实现方案,在实际操作中可能需要根据具体版本和需求进行一些调整和修改。 ### 回答3: 在k8s 1.26版本中部署Prometheus并配置钉钉告警的过程如下: 1. 在k8s集群中创建一个命名空间,用于部署和管理Prometheus及相关组件。 2. 在k8s集群中创建一个ConfigMap,用于存储Prometheus的配置文件。配置文件包含了需要监控的目标(例如,Pod、Service等)和具体的告警规则。 3. 创建一个ServiceAccount,并为其授权访问钉钉的权限。这是为了Prometheus能够发送告警通知到钉钉。 4. 部署Prometheus Operator。Prometheus Operator是一个用于管理Prometheus实例的部署程序。 5. 创建Prometheus资源。使用Prometheus Operator创建一个Prometheus资源,并关联之前创建的ConfigMap。 6. 配置Prometheus钉钉告警规则。在ConfigMap内部,添加相应的告警规则配置,用于定义在何种情况下触发告警,并发送通知到钉钉。 7. 部署Alertmanager。Alertmanager是Prometheus的一个组件,用于接收来自Prometheus告警通知,并将其发送到相应的接收者。 8. 配置Alertmanager的钉钉通知方式。在Alertmanager的配置文件中,添加钉钉的通知方式,并填写相应的钉钉机器人Webhook地址。 9. 部署钉钉机器人。在钉钉中创建一个机器人,并获取其Webhook地址。 10. 部署完成后,Prometheus会开始监控集群中的目标,并根据配置的告警规则发送告警通知到Alertmanager。Alertmanager会将告警通知通过钉钉机器人的Webhook地址发送到钉钉。 通过以上步骤,我们成功在k8s 1.26版本中部署Prometheus,并配置了钉钉告警。这样就能及时获取到集群中的异常情况,并通过钉钉进行告警通知,便于及时处理和监控运维。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值