kube-promethues配置钉钉告警

这篇具有很好参考价值的文章主要介绍了kube-promethues配置钉钉告警。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kube-promethues配置钉钉告警

前置:k8s部署kube-promethues

一.配置钉钉机器人

  • 打开钉钉的智能群助手,点击添加机器人

  • 选择自定义机器人

  • 勾选加签,复制后保存

  • 复制webhook地址后点击保存

二.编写dingtalk的yaml部署文件

vi dingtalk.yaml
apiVersion: v1
kind: Service
metadata:
  name: dingtalk
  namespace: monitoring
spec:
  selector:
    app: dingtalk
  ports:
    - name: http
      protocol: TCP
      port: 8060
      targetPort: 8060
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dingtalk
  namespace: monitoring
  labels:
    app: dingtalk
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  selector:
    matchLabels:
      app: dingtalk
  template:
    metadata:
      labels:
        app: dingtalk
    spec:
      restartPolicy: "Always"
      containers:
        - name: dingtalk
          image: timonwong/prometheus-webhook-dingtalk:v2.1.0
          imagePullPolicy: "IfNotPresent"
          volumeMounts:
            - name: dingtalk-conf
              mountPath: /etc/prometheus-webhook-dingtalk/
          resources:
            limits:
              cpu: "400m"
              memory: "500Mi"
            requests:
              cpu: "100m"
              memory: "100Mi"
          ports:
            - containerPort: 8060
              name: http
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            periodSeconds: 5
            initialDelaySeconds: 30
            successThreshold: 1
            tcpSocket:
              port: 8060
          livenessProbe:
            tcpSocket:
              port: 8060
            initialDelaySeconds: 30
            periodSeconds: 10
      volumes:
        - name: dingtalk-conf
          configMap:
            name: dingtalk-cm

prometheus-webhook-dingtalk是一个开源的钉钉告警的插件,目前最新版停留于v2.1.0

三.编写钉钉告警模板dingtalk-configmap.yaml

vi dingtalk-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: dingtalk-cm
  namespace: monitoring
data:
  config.yml: |-
    templates:
      - /etc/prometheus-webhook-dingtalk/dingding.tmpl
    targets:
      webhook:
        url: https://oapi.dingtalk.com/robot/send?access_token=<复制的webhook地址>
        secret: "<加签的时候复制的secret>"
        message:
          text: '{{ template "dingtalk.to.message" . }}'
  dingding.tmpl: |-
    {{ define "dingtalk.to.message" }}
    {{- if gt (len .Alerts.Firing) 0 -}}
    {{- range $index, $alert := .Alerts -}}

    =========  **监控告警** =========

    **告警集群:**     k8s
    **告警类型:**    {{ $alert.Labels.alertname }}
    **告警级别:**    {{ $alert.Labels.severity }}
    **告警状态:**    {{ .Status }}
    **故障主机:**    {{ $alert.Labels.instance }} {{ $alert.Labels.device }}
    **告警主题:**    {{ .Annotations.summary }}
    **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
    **主机标签:**    {{ range .Labels.SortedPairs  }}  </br> [{{ .Name }}: {{ .Value | markdown | html }} ]
    {{- end }} </br>

    **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    ========= = **end** =  =========
    {{- end }}
    {{- end }}

    {{- if gt (len .Alerts.Resolved) 0 -}}
    {{- range $index, $alert := .Alerts -}}

    ========= **故障恢复** =========
    **告警集群:**     k8s
    **告警主题:**    {{ $alert.Annotations.summary }}
    **告警主机:**    {{ .Labels.instance }}
    **告警类型:**    {{ .Labels.alertname }}
    **告警级别:**    {{ $alert.Labels.severity }}
    **告警状态:**    {{ .Status }}
    **告警详情:**    {{ $alert.Annotations.message }}{{ $alert.Annotations.description}}
    **故障时间:**    {{ ($alert.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
    **恢复时间:**    {{ ($alert.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

    ========= = **end** =  =========
    {{- end }}
    {{- end }}
    {{- end }}

四.编写文件alertmanager-secret.yaml

该文件是 用来顶替原本kube-promethues部署时的,alertmanager的配置文件

vi alertmanager-secret.yaml
apiVersion: v1
data: { }
kind: Secret
metadata:
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    global:
      resolve_timeout: 5m
    route:
      group_by: ['alertname']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 30m
      receiver: 'webhook'
      routes:
      - match:
          severity: 'info'
        continue: true
        receiver: 'null'
      - match:
          severity: 'none'
        continue: true
        receiver: 'null'
    receivers:
    - name: 'null'
    - name: 'webhook'
      webhook_configs:
      - send_resolved: true
        url: 'http://dingtalk:8060/dingtalk/webhook/send'

五.添加Prometheus告警规则

因为kube-promethues默认的告警规则大部分都和K8s的pod相关,所以需要新增一些关于node节点的告警规则

    - name: 主机状态-监控告警
      rules:
        - alert: 节点内存
          expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100 > 85
          for: 1m
          labels:
            severity: warning
          annotations:
            summary: "内存使用率过高!"
            description: "节点{{$labels.instance}} 内存使用大于85%(目前使用:{{$value}}%)"
        - alert: 节点TCP会话
          expr: node_netstat_Tcp_CurrEstab > 1000
          for: 1m
          labels:
            severity: warning
          annotations:
            summary: "TCP_ESTABLISHED过高!"
            description: "{{$labels.instance }} TCP_ESTABLISHED大于1000%(目前使用:{{$value}}%)"
        - alert: 节点磁盘容量
          expr: max((node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"}) *100/(node_filesystem_avail_bytes {fstype=~"ext.?|xfs"}+(node_filesystem_size_bytes{fstype=~"ext.?|xfs"}-node_filesystem_free_bytes{fstype=~"ext.?|xfs"})))by(instance) > 80
          for: 1m
          labels:
            severity: warning
          annotations:
            summary: "节点磁盘分区使用率过高!"
            description: "{{$labels.instance }} 磁盘分区使用大于80%(目前使用:{{$value}}%)"
        - alert: 节点CPU
          expr: (100 - (avg by (instance) (irate(node_cpu_seconds_total{job=~".*",mode="idle"}[5m])) * 100)) > 85
          for: 1m
          labels:
            severity: warning
          annotations:
            summary: "节点CPU使用率过高!"
            description: "{{$labels.instance }} CPU使用率大于80%(目前使用:{{$value}}%)"

将此段配置添加到kube-promethues解压目录manifests/prometheus中的prometheus-rules.yaml底部即可。

#然后执行更新prometheus-rules.yaml
kubectl apply -f prometheus-rules.yaml
#重启Promethus看见下图有新增的告警规则即配置成功

六.部署其他并检查是否运行成功

kubectl apply -f alertmanager-secret.yaml
kubectl apply -f dingtalk-configmap.yaml
kubectl apply -f dingtalk.yaml
#查看是否部署成功
kubectl get pods -n  monitoring | grep dingtalk

dingtalk部署成功后,重新部署alertmanager就行了。文章来源地址https://www.toymoban.com/news/detail-728918.html

到了这里,关于kube-promethues配置钉钉告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • grafana配置钉钉告警模版(一)

    1、配置钉钉告警模版 创建钉钉告警模版,然后在创建钉钉告警时调用模版。 定义发送内容具体代码 my_text_alert_list 是模版名称后面再配置钉钉告警时需要调用。 在创建一个标题模版 定义标题具体代码 my.title 是模版名称后面再配置钉钉告警时需要调用。 创建完成 2、添加钉

    2024年02月21日
    浏览(45)
  • zabbix配置钉钉机器人告警

    1.在钉钉上创建一个钉钉群组 2.在群组中添加一个机器人           3.配置zabbix server调用钉钉接口的代码( 使用python ) 查看是否有python环境 python --version  找到zabbix 的AlertScriptsPath目录路径  cat /etc/zabbix/zabbix_server.conf|grep AlertScriptsPath 将调用钉钉接口的python文件放在AlertScripts

    2024年02月11日
    浏览(47)
  • linux系统zabbix监控配置钉钉告警

    配置钉钉告警 环境准备 配置钉钉脚本文件 钉钉日志目录 编写脚本 浏览器配置钉钉告警 中文消息告警模版 为用户添加报警媒介 添加监控项=》添加触发器=》 添加玩监控项和触发器后添加动作 至此,监控钉钉报警就配置完成了

    2024年02月22日
    浏览(40)
  • zabbix4.0配置钉钉机器人告警详细教程

            在钉钉中创建群聊,然后在设置中创建钉钉机器人。             机器人名字随便,安全设置我选择【自定义】,并设置内容为zabbix,即机器人收到的每条消息内容均需要带“zabbix”才可以发出。         复制保留Webhook的内容,以便后面使用。         在

    2024年02月11日
    浏览(43)
  • kube-prometheus实现企业微信机器人告警

    公司kubernetes生产环境部署了kube-prometheus-release-0.3用于监控kubernetes集群状态,但是默认预置了告警规则,但是不能发送告警信息。本文着重介绍自己在公司环境实现alertmanager通过企业微信发送告警信息。具体实现方式的逻辑如下图:  实现方式: 1.查看部署的kube-prometheus 2.在

    2023年04月08日
    浏览(37)
  • k8s--基础--26.6--监控告警系统--kube-state-metrics

    kube-state-metrics 会监听API Server生成有关资源对象的状态指标,比如Deployment、Node、Pod。 kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,我们可以使用Prometheus来抓取这些数据然后存储。 指标数据 Deployment、Pod、副本状态等 调度了多少个replicas 现在可用

    2023年04月08日
    浏览(39)
  • 使用zabbix实现邮箱/钉钉告警

    目录 一、zabbix部署 1、安装zabbix服务端 2、准备数据库(mariadb简单点) 3、修改服务的配置 二、登录zabbix 三、客户端配置 1、安装软件包 2、修改配置文件 3、启动客户端服务 四、报错解决 五、添加监控主机 1、安装软件包 2、修改配置文件 3、启动客户端服务 4、回到zabbix添

    2024年03月17日
    浏览(44)
  • 利用钉钉机器人Webhook向钉钉群推送告警通知

    一、配置钉钉群 1、新建一个接收通知的钉钉群 如下图,创建一个接收通知的钉钉群   选择项目群,点创建   输入群名称,右侧选择群成员,最后点击右下角的创建   2、对群进行设置 点群右上角的设置按钮    点击 “智能群助手”   点 “添加机器人”   点 添加机器人

    2023年04月15日
    浏览(49)
  • python调用钉钉发送告警消息

    zabbix和prometheus都能做监控告警调用企业微信和钉钉。那么问题来了做为一名合格的运维和开发人员,脚本发现故障告警,自动调用发送详细告警内容,这点儿东西得会。 效果图如下:  普通发送方式 dingtalkchatbot发送方式 

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包