文章目录

  • 报警规则Rules
  • Alerts
  • grafana
  • 设置ingress-grafana
  • 找到用户/密码
  • grafana 图表介绍
  • 报警配置
  • 添加邮件



续 监控落地 - 指标完善、Grafana看板和邮件报警(中)

报警规则Rules

Rules报警规则expr 是promQL的条件,满足promQL条件出发报警。

grafana开启azuer AD grafana alert 规则_docker

rules如何定义?

还是来到prometheus-operator/values.yaml

➜  ~  vi ./prometheus-operator/values.yaml

有一些默认开启的报警规则:

grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_02

这些默认的报警规则对应:prometheus-operator/template/prometheus/rules文件夹下所有的规则模版

grafana开启azuer AD grafana alert 规则_监控类_03

所有的规则都是围绕prometheusRule 自定义资源,默认根据当前集群环境生存所有的默认规则

grafana开启azuer AD grafana alert 规则_docker_04


grafana开启azuer AD grafana alert 规则_ooc_05

自定义的规则不会被helm 删除,需要手动删除。

Alerts

Alerts是目前报警的情况,

绿色的是定义的rules规则,没有触发的。

红色的就是已经报警的。

黄色就是报警处于Pending等待状态,当事情发生的时候不一定马上触发,而是有一个等待,当达到一定条件才会变成红色。

grafana开启azuer AD grafana alert 规则_ooc_06

grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_07

grafana

设置ingress-grafana

1.首先查看下grafana的service,端口是80

➜  ~ kubectl get svc -n monitoring


grafana开启azuer AD grafana alert 规则_kubernetes_08

  1. 准备一个ingress
    ingress-grafana.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: prom-grafana
  namespace: monitoring
spec:
  rules:
  - host: prom-grafana.mooc.com
    http:
      paths:
      - backend:
          serviceName: imooc-prom-grafana # 对应grafana的service名字
          servicePort: 80
        path: /

创建一下

➜  ~ kubectl apply -f ingress-grafana.yaml
  1. 配置host
192.168.181.103 prom-grafana.mooc.com
  1. 访问

找到用户/密码

但是用户/密码是什么,来到/prometheus-operator/charts/grafana/Charts.yaml

➜  ~ vim ./prometheus-operator/charts/grafana/Charts.yaml

找到adminUser ,他用的 是一个Secret

grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_09

查找一下grafana的Secret

➜  ~ kubectl get Secret -n monitoring


grafana开启azuer AD grafana alert 规则_docker_10

查看用户/密码 ,都是base64的

➜  ~ kubectl get Secret -n monitoring imooc-prom-grafana -o yaml


grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_11

解密一下 用户名admin 密码是prom-operator

grafana开启azuer AD grafana alert 规则_docker_12

grafana开启azuer AD grafana alert 规则_监控类_13

grafana开启azuer AD grafana alert 规则_ooc_14

grafana开启azuer AD grafana alert 规则_docker_15

登录成功

grafana开启azuer AD grafana alert 规则_监控类_16

grafana 图表介绍

这个位置就是各种各样的面板


grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_17

grafana开启azuer AD grafana alert 规则_监控类_18

随便看一个监控指标etcd


grafana开启azuer AD grafana alert 规则_docker_19

这里就不一一查看了,本质上都是根据PromQL 做的数据查询

比如我们可以手动PromQL进行查询,直接在这里改容易出错,建议拿到PromQL去prometheus界面去调试,没有问题可以放到这里面。


grafana开启azuer AD grafana alert 规则_kubernetes_20

grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_21

同时也是可以自己创建图表

grafana开启azuer AD grafana alert 规则_监控类_22

报警配置

具体可以查阅alertmanager相关的文档,alertmanager 的报警方式很多,包括常见的可以发送到邮箱、短信、微信、钉钉 、企业微信…也可以发送到http接口实现对报警的自定义处理。这里通过邮箱我们配置一下。

添加邮件

找到 ./prometheus-operator/values.yamlalertmanager:位置下面有个 config: global:

借鉴

........
  config:
    global:
      resolve_timeout: 5m
      smtp_smarthost: 'smtp.163.com:25' # smtp
      smtp_from: 'imoocd@163.com' # 发件人
      smtp_auth_username: 'imoocd@163.com' # 用户名
      smtp_auth_password: 'aA111111' #密码
    route:
      group_by: ['job']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 12h
      receiver: 'email-alerts' # 接收消息方式
      routes:
      - match:
          alertname: .* # 改成全部的报警都发给这个receiver
        receiver: 'email-alerts' # 指定receiver
    receivers:
    - name: 'email-alerts'
      email_configs: 
      - to: 'liuyi16@163.com' #接收人
        send_resolved: true # 当问题解决也会发送一个邮件 默认5分钟没有达到报警的条件就是问题解决了
        ........

通过history | grep "helm upgrade"|grep imooc-prom查看修改后要升级的,然后升级

➜  ~ helm upgrad imooc-prom ./prometheus-operator/ -f ./prometheus-operator/values.yaml

grafana开启azuer AD grafana alert 规则_kubernetes_23

然后测试一下

我们故意把etcd停掉

➜  ~ service etcd stop

然后打开邮箱📮,报警邮件很快就发送过来了

grafana开启azuer AD grafana alert 规则_grafana开启azuer AD_24

Etcd报警邮件,当然这个邮件信息样式也是可以自己定义,这里不讲,没什么复杂的。


grafana开启azuer AD grafana alert 规则_监控类_25

关于Prometheus 监控我们就讲这么多,具体的细节还是需要自己多探索。