TiDB 报警配置快速指南

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' #收件人
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容