美文网首页
TiDB 报警配置快速指南

TiDB 报警配置快速指南

作者: Kassadar | 来源:发表于2019-11-08 15:13 被阅读0次

    TiDB 报警配置快速指南

    前言

    TiDB 使用 Prometheus + Alertmanger 进行报警,Grafana 仅作展示
    报警配置&规则文件都使用 YAML 格式,由 TiDB-Ansible 部署时生成

    报警规则文件位于 monitoring 服务器 {{deploy_dir}}/conf/xxx.rules.yml

    ll {{deploy_dir}}/conf/ | grep rules
    
    -rw-r--r--. 1 tidb tidb  3626 Nov  5 09:08 binlog.rules.yml
    -rw-r--r--. 1 tidb tidb  4708 Nov  5 09:08 blacker.rules.yml
    -rw-r--r--. 1 tidb tidb    37 Sep 10 09:59 bypass.rules.yml
    -rw-r--r--. 1 tidb tidb  2054 Nov  5 09:08 kafka.rules.yml
    -rw-r--r--. 1 tidb tidb   471 Sep 10 09:59 lightning.rules.yml
    -rw-r--r--. 1 tidb tidb  5376 Nov  5 09:08 node.rules.yml
    -rw-r--r--. 1 tidb tidb  6926 Nov  5 09:08 pd.rules.yml
    -rw-r--r--. 1 tidb tidb  5035 Nov  5 09:08 tidb.rules.yml
    -rw-r--r--. 1 tidb tidb 15603 Nov  5 09:08 tikv.rules.yml
    

    prometheus 服务通过配置文件中的 rule_files 字段加载该文件

    vi {{deploy_dir}}/conf/prometheus.yml
    
    ---
    global:
      scrape_interval:     15s # By default, scrape targets every 15 seconds.
      evaluation_interval: 15s # By default, scrape targets every 15 seconds.
      # scrape_timeout is set to the global default (10s).
      external_labels:
        cluster: 'test-cluster'
        monitor: "prometheus"
    
    # Load and evaluate rules in this file every 'evaluation_interval' seconds.
    rule_files:
      - 'node.rules.yml'
      - 'blacker.rules.yml'
      - 'bypass.rules.yml'
      - 'pd.rules.yml'
      - 'tidb.rules.yml'
      - 'tikv.rules.yml'
      - 'lightning.rules.yml'
    
    alerting:
     alertmanagers:
     - static_configs:
       - targets:
         - 'localhost:9093'
    

    重新加载规则

    如果修改了配置,可通过如下2个方法重新加载规则

    • 方法1:在 monitoring/alertmanager 服务器上重启 prometheus/alertmanager 服务
    systemctl restart prometheus-9090.service
    systemctl restart alertmanager-9093.service
    
    • 方法2:使用 HTTP POST request
    curl -XPOST http://{{monitoring_server}}:9090/-/reload
    curl -XPOST http://{{alertmanager_server}}:9093/-/reload
    

    报警规则

    警报规则允许您基于 PromQL 表达式定义警报条件,并向 Alertmanger 发送关于触发警报的通知。当警报表达式在给定的时间段内持续活动(满足判断条件)时,警报将被触发(Activing)。

    以 pd.rules.yml 文件为例

    groups:
    - name: alert.rules
      rules:
      - alert: PD_cluster_offline_tikv_nums
        expr: sum ( pd_cluster_status{type="store_down_count"} ) > 0
        for: 1m
        labels:
          env: ga-latest-cluster
          level: emergency
          expr:  sum ( pd_cluster_status{type="store_down_count"} ) > 0
        annotations:
          description: 'cluster: ga-latest-cluster, instance: {{ $labels.instance }}, values:{{ $value }}'
          value: '{{ $value }}'
          summary: PD_cluster_offline_tikv_nums
    

    expr 为自定义警报条件。可根据实际情况适当调整阈值。

    for 为 1 分钟内警报条件持续活动,然后才会触发警报,以防止误触。处于活动状态但尚未触发的警报处于挂起状态。

    labels 指定了一组附加到警报的标签。会覆盖现有的冲突标签。可以对 label 值进行模板化。

    annotation 指定了一组信息标签,用户最终所见,用于存储更长的附加信息,如警报描述或运维手册的链接。可以对 annotation 值进行模板化。

    报警触发

    要手动检查哪些警报处于活动状态(挂起或触发),请导航到您的 prometheus 的 Alerts 选项卡,默认是 monitoring 服务器 9090 端口。这将显示每个定义的警报当前处于活动状态的确切标签集。

    同样的,也可以在 Alertmanger 中看到,默认是 alertmanager 服务器 9093 端口

    PS:可以在 Alertmanger 中设置 Silence
    https://www.jianshu.com/p/882c8584b117

    发信配置

    Alertmanger 支持通过电子邮件、实时通知系统和聊天平台等方法发送通知。发信配置文件位于 alertmanager 服务器 {{deploy_dir}}/conf/alertmanger.yml

    以邮件通知为例

    vi alertmanger.yml
    
    global: #global设置,receivers 中也可单独配置
      smtp_smarthost: 'localhost:25' #smtp 邮件服务器地址,用于发送电子邮件,包括端口号。
      smtp_from: 'alertmanager@example.org' #发件人
      smtp_auth_username: 'alertmanager' #发件人账号
      smtp_auth_password: 'password' #发件人密码
      # smtp_require_tls: true #tls
    
      # 其它 api
      # [ slack_api_url: <secret> ]
      # [ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/" ]
      # [ wechat_api_secret: <secret> ]
      # [ wechat_api_corp_id: <string> ]
    
    
    route:
      receiver: "db-alert-email" #本规则的收件人,配置为下面的 receivers 中的 name 即可
    
      group_by: ['env','instance','alertname','type','group','job'] # 警报聚合规则,避免类似于一台服务器故障后,被各种规则的警报邮件刷屏的情况
    
      group_wait:      30s #警报聚合等待时间,收集更多的警报为同一组
    
      group_interval:  3m #添加到已发送的警报聚合邮件之前,新的警报需要等待多长时间
    
      repeat_interval: 3m #如果已经成功发送了警报邮件,那么在再次发送通知之前需要等待多长时间
    
    ……
    
    receivers:
    - name: 'db-alert-email' #收件名,上面 route 里会用到
      email_configs:
      - send_resolved: true #是否通知警报被解决,即 Alert 消失也发邮件
        to: 'xxx@xxx.com' #收件人
    

    相关文章

      网友评论

          本文标题:TiDB 报警配置快速指南

          本文链接:https://www.haomeiwen.com/subject/gglpbctx.html