Grafana Alert告警

2023年 5月 4日 147.9k 0

grafana 4版本以上支持了alert功能,这使得利用grafana作为监控面板更为完整,因为只有alert功能才能称得上监控。
Grafana Alert告警
Grafana

Prometheus 原理介绍

新闻联播老司机

  • 19年6月17日
  • 喜欢:0
  • 浏览:6.4k
  • 除了Prometheus的AlertManager可以发送报警,grafana同时也支持高级。grafana可以无缝定义告警在数据中的位置,可视化的定义阈值,并可以通过钉钉、email等平台获取告警通知。最重要的是可直观的定义告警规则,不断的评估并发送通知。grafana只有在4.0以上版本才有,同时在Grafana 5.3及以上版本支持发送提醒,可以指定如何经常提醒应用使用的秒、分、或者小时
    官方文档https://grafana.com/docs/alerting/notifications/

    邮件报警配置

    如果要启动email告警,需要在启动grafana的时候配置/etc/grafana/grafana.ini开启smtp服务,我这里grafana是运行在k8s 环境中,这里直接使用configmap,如果是二进制或者docker环境中也可以配置修改grafana.ini

    cat >> grafana_configmap.yaml << EOF
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: grafana-config
      namespace: kube-system
    data:
      grafana.ini: |
        [server]
        [smtp]
        enabled = true
        host = smtp.163.com:465
        user = xxx@163.com
        password = <邮箱授权密码>
        skip_verify = true
        from_address = <发件人邮箱>
        [alerting]
        enabled = true
        execute_alerts = true
    EOF
    
    #我这里使用163邮件进发送邮件
    

    这里需要说明一下,邮箱密码不是登陆密码
    image_1de4ttjbo58e1ohmgrc1fl31l84m.png-348.7kB
    可以参考Zabbix邮件报警的配置

    Zabbix Web 邮件报警

    新闻联播老司机

  • 16年11月7日
  • 喜欢:0
  • 浏览:936
  • 接下来我们创建grafana的configmap

    [root@abcdocker grafana]# kubectl create -f grafana_config.yaml
    configmap/grafana-config created
    

    配置完configmap之后,我们还需要在grafana的deployment中挂载configmap
    添加如下

            volumeMounts:
            - mountPath: "/etc/grafana"
              name: config1
              ....
          - name: config1
            configMap:
              name: grafana-config
    

    如果前面grafana安装也是安装我的文档安装的,这里可以直接使用我的文档

    Prometheus 持久化安装

    新闻联播老司机

  • 19年6月19日
  • 喜欢:0
  • 浏览:4.4k
  • cat >> grafana_deployment.yaml <<EOF
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: grafana
      namespace: kube-system
      labels:
        app: grafana
    spec:
      revisionHistoryLimit: 10
      template:
        metadata:
          labels:
            app: grafana
        spec:
          containers:
          - name: grafana
            image: grafana/grafana:5.3.4
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 3000
              name: grafana
            env:
            - name: GF_SECURITY_ADMIN_USER
              value: admin
            - name: GF_SECURITY_ADMIN_PASSWORD
              value: abcdocker
            readinessProbe:
              failureThreshold: 10
              httpGet:
                path: /api/health
                port: 3000
                scheme: HTTP
              initialDelaySeconds: 60
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 30
            livenessProbe:
              failureThreshold: 3
              httpGet:
                path: /api/health
                port: 3000
                scheme: HTTP
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 1
            resources:
              limits:
                cpu: 100m
                memory: 256Mi
              requests:
                cpu: 100m
                memory: 256Mi
            volumeMounts:
            - mountPath: /var/lib/grafana
              subPath: grafana
              name: storage
            - mountPath: "/etc/grafana"
              name: config1
          securityContext:
            fsGroup: 472
            runAsUser: 472
          volumes:
          - name: storage
            persistentVolumeClaim:
              claimName: grafana
          - name: config1
            configMap:
              name: grafana-config
    EOF
    

    刷新配置文件

    [root@yzsjhl82-138 grafana]# kubectl apply -f  grafana_deployment.yaml
    deployment.extensions/grafana unchanged
    
    #这时候还需要重启pod
    
    [root@abcdocker grafana]# kubectl get pod -n kube-system |grep grafana
    grafana-849f76ddc7-mz4z4                1/1     Running     0          5h53m
    grafana-chown-qsctd                     0/1     Completed   0          5d6h
    [root@abcdocker grafana]# kubectl delete pod -n kube-system grafana-849f76ddc7-mz4z4
    pod "grafana-849f76ddc7-mz4z4" deleted
    
    #过滤出pod之后,进行删除就相当于重启了
    

    image_1de4tooe6n0e1q9o1peg9fn6as9.png-202.2kB
    删除完成之后,我们需要测试一下smtp邮箱服务器是否正常

    #先查看一下grafana service端口
    [root@abcdockergrafana]# kubectl get svc -n kube-system |grep grafana
    grafana                NodePort    10.98.192.213            3000:32452/TCP           5d6h
    monitoring-grafana     ClusterIP   10.104.104.130           80/TCP                   34d
    

    在任意节点访问ip+32452端口
    image_1de5321mp9pf1hbtmnb12ae1cnk13.png-128.1kB
    Send on all alerts 发送所有消息
    Send image 发送图像
    image_1de5342u54c317941a5m1cus1pav20.png-82kB
    这里我们点击Send Test 发送测试邮件
    image_1de53end38vouiuki9so81d0i2d.png-271.5kB
    多个邮箱账号可以使用分号分隔
    钉钉报警配置
    grafana报警不仅支持email报警,同时还支持钉钉报警
    由于公司不使用钉钉,特意随便找了个群Test一下
    点击群机器人
    image_1de5407put4q13soor3d3p1fal2q.png-205.3kB
    image_1de5413228uh16761por80o16f537.png-59.2kB
    选择自定义
    image_1de5425vh1tgjr4h1lje16sfsmu41.png-131.9kB
    点击添加
    image_1de541tsvf22731p0e6n31ni83k.png-97kB
    设置名称
    222222.png-80.3kB
    复制钉钉上面的Web hook
    image_1de548fl01bev1u61an9rle161n6a.png-48.2kB
    这里的配置和email路径一样,只需要将Type修改为DingDing
    333333333333.png-117.1kB
    点击Test,我们在钉钉就可以收到test提示
    image_1de54gh3o3uek091nhm16t510jll.png-33.7kB

    报警测试

    在邮箱报警和钉钉报警测试通过的时候,我们可以点击Save进行报错
    这里稍微说一下,如果出现无法发送mail的问题,可以通过kubectl log 查看grafana的日志
    image_1de54phde1vvf1k01cq57n014ir12.png-83.8kB
    我这里已经添加完毕
    image_1de54q42l8f6137i2tt1nvtrvf1f.png-50.8kB
    目前报警还不支持插件报警,只支持dashboard告警,我们这里可以使用之前监控k8s的模板配置进行告警

    Prometheus监控Kubernetes 集群节点及应用

    新闻联播老司机

  • 19年6月19日
  • 喜欢:0
  • 浏览:9.1k
  • image_1de556lv81qdt13sg15kr11k61obg1s.png-300.1kB
    点击Alert在点击创建Alert
    image_1de557re51gla122j1gd51fmksmb29.png-25.9kB
    alert配置如下
    image_1de55ehd6e91k7519qhh261a0r2m.png-107.8kB
    这里的阈值也可以手动拖拽
    我这里设置为0.02
    image_1de55fubc12ju10k21hfltsr1v8f33.png-233.8kB
    点击Alert选择Notifications 这里的告警发送是我们之前保存的,Message是发送告警内容
    image_1de55jf1a13551dbpv8s1oj3unl3g.png-53.8kB
    image_1de55kqck10lblcl19vpmk912ok3t.png-54.2kB
    这里我们点击Test Rule进行测试,返回true代表alert正常
    image_1de55mkqo1fcngos1chh2c4ntt4a.png-180.6kB
    然后我们就收到告警邮件
    image_1de55seh0197ln2tiqn129o189n4n.png-84.8kB
    钉钉报警和邮件是一样的,记得最后需要保存~
    由于Grafana alert告警比较弱,大部分告警都是通过Prometheus AlertManager进行告警

    相关文章:

    1. Kubernetes 1.14 二进制集群安装
    2. Kuerbernetes 1.11 集群二进制安装
    3. Kubenetes 1.13.5 集群二进制安装
    4. 基于Kubernetes Gitlab CICD

    相关文章

    对接alertmanager创建钉钉卡片(1)
    手把手教你搭建OpenFalcon监控系统
    无需任何魔法即可使用 Ansible 的神奇变量“hostvars”
    openobseve HA本地单集群模式
    基于k8s上loggie/vector/openobserve日志收集
    openobseve单节点和查询语法

    发布评论