author:longzhuquan

背景

随着公司XC改造步伐的前进,越来越多的业务选择 TiDB,由于各个业务之间需要物理隔离,避免不了的 TiDB 集群数量越来越多。虽然每套 TiDB 集群均有两个详细的监控 Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。

“融合工具” - 拥抱开源

虽然 TiDB 本身的 Prometheus 也可进行数据的整合,但场景太过于单一,达不到预想效果。对于运维以及业务来说几十套集群上百个节点均需要做到告警消息及时告知、监控大盘、可在单一页面上便捷的查看所有Grafana信息、Dashboard监控可进行语句级别的查询。TiDB 是一款优秀的开源软件,本着拥抱开源的心态,经过大量的调研以及基于成本的考量,最终选择了在监控领域的开源产品夜莺。夜莺产品架构如下:

选择夜莺监控主要有两点:

1、兼容多个数据源接口,Prometheus、Zabbix、ES 等。这使得对于多套集群的 TiDB 无需做额外改动,只需要将 Prometheus 数据源接入即可获得所有采集数据。从而进行后续告警数据加工,且 ES 等数据源的支持也可为后续多集群日志整合提供可能性。

2、完全开源,成本低。无论是适配成本以及资源成本在同类产品中都占据优势。

工具安装

工具安装

详细的安装步骤请参考官网 安装部署详解 这里不在赘述。

由于整体项目为XC,监控也需要进行XC考量,所以将监控底层存储 MYSQL 替换为TiDB。Redis替换为某国产中间价。实际测试可百分百兼容。

业务组设计

整个监控的告警、监控不仅仅是面向 DBA,对应业务组的重要应用人员也有权知道后端数据库资源使用情况。业务组之间耦合性较低,每个业务仅关心自己的业务,DBA 则需要管控所有集群。针对此种场景在进行监控具体指标设计之前,需要按照不同需求进行业务组、角色、团队设计。

设计规则

用户管理:1、LDAP用户登录帐号,2、虚拟机器人+token地址(内部飞书告警)

团队管理:以一级部门名称+产品名称+业务系统命名(对应飞书接收群组名称),对应告警接收组 eg :ITXX部门- TiDB-XXX业务系统

业务组管理:以产品名称+一级部门+产品名称+系统名称命名(对应告警规则组),此处第一个产品名称为自动折叠设置。

角色管理:告警机器人账户、业务组人员账户、监控管理员账户,不同角色不同权限。

告警规则制定

制定完成业务组后,第一步实现飞书自动告警功能。

添加数据源

为方便管理数据源命名规范为:

部门_中间件名_业务系统_环境_IP(prometheus)

eg:XXIT_TiDB_ JAVA_PRO_127_0_0_1

添加告警规则

告警管理-告警规则-点击对于业务组-新增,同样为后续运维性考量,需严格设置规范命名规则。其中PromQL规则则按照自我需求编写即可,后续我司规则将会提交至开源社区,感兴趣可参考。

规则名称:业务系统描述+告警简介

备注:对应告警集群

数据源:只关联业务系统对应的数据源

告警接收组:对应业务组

告警模板制定(此处可根据需求自行编写通知模板)

系统配置-通知模板-飞书

告警环境: 测试环境
服务名称: {{index .TagsMap "paasName"}}{{index .TagsMap "serviceName"}}
级别状态: S{{.Severity}} {{if .IsRecovered}}Recovered {{else}}Triggered{{end}}
告警对象: {{if.TargetIdent}}{{.TargetIdent}} {{else}}{{index .TagsMap "instance"}}{{end}}
规则名称: {{.RuleName}}{{if .RuleNote}}
规则备注: {{.RuleNote}}{{end}}
监控指标: {{.TagsJSON}}
{{if .IsRecovered}}
恢复时间: {{timeformat .LastEvalTime}}
{{else}}
触发时间: {{timeformat .TriggerTime}}
触发时值: {{.TriggerValue}}
{{end}}
发送时间: {{timestamp}}

成果展示

告警管理-业务组告警规则-不同业务组不同集群全部整合

飞书告警效果

结语

本篇文章粗浅的介绍了如何通过夜莺补齐 TiDB 告警融合缺失的问题,当然文章篇幅有限,实际会有更多细节,如感兴趣欢迎垂询。

下一章将会介绍如何融合多集群 Grafana ,以及 Dashboard 部分功能实现,做到一个页面即可查看几十甚至上百节点集群的难题。

TiDB 多集群告警监控-初章-监控融合、自动告警处理的更多相关文章

  1. 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章

    菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...

  2. 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

    菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...

  3. TiDB数据库集群安装以及注意事项

    今天尝试安装tidb集群.详细的安装步骤我们参考:https://pingcap.com/docs-cn/op-guide/ansible-deployment/ . 不过安装之前需要一些注意事项. ...

  4. redis集群的远程管理与监控

    一.redis集群的重要性 目前大部分的互联网平台,都会用到Redis内存数据库,以提高响应速度,提升用户使用体验. 为了实现Redis的高可用,通常都会布署Redis集群,使用Redis-Senti ...

  5. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  6. Standalone集群搭建和Spark应用监控

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6815920501530034696/ 承接上一篇文档<Spark词频前十的统计练习> Spark on ...

  7. Hadoop集群+Spark集群搭建(一篇文章就够了)

    本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢) 一.准备 1.1 软件版本 Ub ...

  8. Redis集群(九):Redis Sharding集群Redis节点主从切换后客户端自动重新连接

    上文介绍了Redis Sharding集群的使用,点击阅读 本文介绍当某个Redis节点的Master节点发生问题,发生主从切换时,Jedis怎样自动重连新的Master节点 ​一.步骤如下: 1.配 ...

  9. CHD-5.3.6集群上Flume的文件监控

    收集hive的log     hive的运行日志:    /home/hadoop/CDH5.3.6/hive-0.13.1-cdh5.3.6/log/hive.log * memory *hdfs  ...

  10. 如何扩展单个Prometheus实现近万Kubernetes集群监控?

    引言 TKE团队负责公有云,私有云场景下近万个集群,数百万核节点的运维管理工作.为了监控规模如此庞大的集群联邦,TKE团队在原生Prometheus的基础上进行了大量探索与改进,研发出一套可扩展,高可 ...

随机推荐

  1. 力扣383(java&python)-赎金信(简单)

    题目: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . m ...

  2. 谢老师2024春 - Day2:期望DP

    Day2:期望DP​​ A - CF148D Bag of mice 设 \(dp_{i,j}\) 表示还剩下 \(i\) 只白鼠,\(j\) 只黑鼠 A 的胜率. 大家都没有拿到白鼠,那么 B 赢, ...

  3. 在阿里巴巴,我们如何先于用户发现和定位 Kubernetes 集群问题?

    ​简介:本文整理自阿里云高级研发工程师彭南光(光南) 在 KubeCon China 2021 大会的演讲实录,分享了阿里巴巴是如何通过自研通用链路探测+定向巡检工具 KubeProbe 应对大规模集 ...

  4. 国内唯一!阿里云容器服务进入 Forrester 领导者象限

    ​简介:近日,国际权威咨询机构 Forrester 发布< The Forrester WaveTM: Public Cloud Container Platforms, Q1 2022 > ...

  5. 从右边开始寻找整数的第k位

    从右边开始寻找整数的第k位 Implement match_k, which takes in an integer k and returns a function that takes in a ...

  6. .NET Emit 入门教程:第七部分:实战项目1:将 DbDataReader 转实体

    前言: 经过前面几个部分学习,相信学过的同学已经能够掌握 .NET Emit 这种中间语言,并能使得它来编写一些应用,以提高程序的性能. 随着 IL 指令篇的结束,本系列也已经接近尾声,在这接近结束的 ...

  7. 【Python爬虫案例】用python爬1000条哔哩哔哩搜索结果

    目录 一.爬取目标 二.讲解代码 三.同步讲解视频 四.完整源码 一.爬取目标 大家好,我是 @马哥python说 ,一名10年程序猿. 今天分享一期爬虫的案例,用python爬哔哩哔哩的搜索结果,也 ...

  8. 简说Python之flask初体验

    目录 flask初体验 1.安装Flask 2.创建"Hello, World" Flask应用 3.执行结果 flask是python web的轻量框架,简单的几条命令就可以创建 ...

  9. 密钥存储在过时的 trusted.gpg 密钥环中(/etc/apt/trusted.gpg)

    密钥存储在过时的 trusted.gpg 密钥环中(/etc/apt/trusted.gpg) 问题: 解决: cd /etc/opt sudo cp trusted.gpg trusted.gpg. ...

  10. vue+js实现点击图片,图片放大

    1.首先在template中插入image,并赋予点击事件(这个时候是小图) <template> <div> <img src="@/assets/image ...