RDS数据库本地化监控改造

一、项目背景

目前点我达的数据库集群主要集中在3个区域, 一个是杭州阿里云的rds集群,  一个是上海阿里云idc自建的数据库集群, 还有一个是杭州idc自建数据库集群,总的数据库实例规模大概在500左右, 阿里云rds的监控展示和报警推送,完全依赖于阿里云的云监控。


需要解决的问题

当然,不是说阿里云的云监控不好, 是当集群规模达到一定数量之后

1、实例纵向维度的对比很难做, 无法做时间跨度比较大的监控趋势查看

2、实例横向的对比很难去做,比如订单分片后,各个分片节点rds的负载、请求等情况,无法做横向对比

3、监控指标较单一, 无法新增新的监控指标

4、报警规则比较单一,无法做定制化的报警规则和推送

5、引擎层的监控数据采集频率无法控制,且如果小于60s需要额外付费用

所以基于以上几点原因, 本人做了rds数据库监控的本地化改造, 即将rds的引擎监控、机器层面监控、以及报警推送等转为dba自己来做, 脱离阿里云云监控, 同时监控系统同样适用于idc自建数据库,达到监控体系的统一。



二、项目架构

思考:

本地化监控改造大概分为以下几个部分:

1、定监控体系架构, 决定采用当前比较流行并且本人比较熟悉的prometheus监控体系

2、1对多问题,常规的自建数据库监控一般使用prometheus的官方mysqld_exporter,在ecs上部署一个exporter,1对1进行监控。 但是rds没有实体机器来部署exporter 所以需要对官方的mysqld_exporter 进行改造或者重新开发,让exporter支持1对多的监控。 这里我是采用比较快的方法,直接拿官方mysqld_exporter 进行源码修改。

3、机器层面的监控,node_exporter 跟mysqld_exporter 一样, 直接拿官方源码进行修改,支持1对多的监控

4、rds实例过多, 如果一一把配置都写进prometheus比较繁琐,故这里使用prometheus 里的consul config特性,将数据库实例信息注册到consul,然后prometheus 从consul里抓取实例信息,下发给exporter, exporter 再去具体实例上抓取需要的监控信息。

5、报警收敛和分级推送。 点我达已经有了一套报警收敛、推送的自研系统, 所以这里只需把报警推送到Alertmanager 就可以了。

6、监控图表展示, 毫无疑问使用grafana。 grafana里有一个percona的插件,可以直接生成各种监控图表,且能与mysqld_exporter 和node_exporter无缝对接(rds这里不一样,需要自己画图)。

具体架构:

解决了以上6个问题,那么就有了下面的监控体系架构。



三、相关服务模块

1、consul注册服务

点我达目前的ops运维管理平台是比较open的,每个人都可以自己开发服务, 开放http接口,然后就可以接入ops平台了。  因为数据库实例的特殊性,一般都是在新建或者删除的时候,才把注册信息更新, 所以这里,我直接用go开发了一个consul注册的服务, 接入了ops管理平台,同时又有了流程审批控制, 一举两得。

目前注册和注销均在点我达ops运维平台里做, 具体流程如下:

注册完成后,consul上显示的信息如下:


具体注册接口与注册操作方法,详细请参考本人的开源项目:iushas/consul_register

github地址为: https://github.com/iushas/consul_register

2、promehteus里的配置

promehteus里的配置最为关键,因为同时涉及到mysqld_exporter 和 node_exporter ,所以这里同时把两个配置同时贴出来,供大家参考。

1)mysqld_exporter的配置:

同时支持不接入consul,1对1监控和接入consul,实例id下发,1对多监控。

2)node_exporter的配置:

配置里的tag是第一步consul注册的时候注册进去的数据库属性, 可以为 hz-ali 代表杭州的rds, 可以为 sh-idc 代表上海的自建机房。 所以第一步注册信息很重要,后面不同的prometheus里的region和其他属性的区分,都是通过consul里打的tag来实现的。

3、mysqld_exporter

定制化exporter 支持一对多, 由于consul里没有注册每台rds实例的监控账号,所以要求每台实例的监控账号和密码权限统一。

这里只解释下如何实现以对多的监控。

这里配置很简单,只要在.my.cnf里把账号密码配置进去就可以了, host可以随便写。

配置好后, 把服务拉起来, Prometheus里的 这一段配置会把向exporter-address:9104 这个请求地址发送的scrape请求,添加上一个参数,

target=__address__, 这个__address__是从consul里读取到的rds的 tcp的地址

比如我的这个地址:


下发的给exporter的请求为:

然后exporter拿到这个地址请求后,把需要的实例信息解析出来,通过地址去数据库里拿去监控信息, 这样每次protheus下发新的地址后,exporter会拿新的地址去查询,就实现了一个exporter监控多个数据库的功能。

详细的mysqld_exporter的代码介绍和实现参见本人的开源项目:

github地址为:https://github.com/iushas/mysqld_exporter

4、node_exporter

node_exporter 跟mysqld_exporter 差不多,也是基于Prometheus官方提供的监控插件来修改,但是这里跟mysqld_exporter 不同的是,

1、阿里云rds机器层面的监控,只能通过阿里云aliyun的监控和属性API进行获取,使用阿里云aliyun的 API,又涉及到角色授权等。

2、对于真实的虚拟机监控,还是只能做1对1的监控,即一个node_exporter 对应一个ecs机器。

3、调用阿里云API的监控,可以实现1对多。

所以这里可以看到第二步Prometheus里的配置一部分还是原来的node配置,一部分是新增加的监控参数配置(带Rds的)

详细介绍参见本人的开源项目:

github地址为:https://github.com/iushas/node_exporter

5、报警推送

这里不再简述了, 就是在prometheus里设置阈值, 然后推送给Alertmanager,  然后Alertmanager后面还有一套报警推送和收敛的系统,详情请看上面的整体监控架构图。


四、图表展示

这里图表展示分为2部分,一部分是引擎层面的监控图,直接使用的是Grafana里的Percona插件。另一部分机器层面的监控需要自己手动画图。

关于这部分,我不打算详细说明,只给大家贴两张图好了。

五、总结

目前市面上还没有将数据库的 监控exporter做成1对多 的方案, 我的这次修改首次实现了这个功能,结合Prometheus,减少了运维成本。经过这次改造, 点我达的rds监控和本地自建数据库的监控有了一个完整统一的监控体系, 目前仍在持续接入中。我后面会持续更新迭代,解决和优化数据库性能、监控、高可用等方面的问题,并且输出一些其他的高质量实战工具和文章。同时本文章的几个服务已经开源,也希望能给提供给开发能力没有很突出的dba们,感兴趣的同学可以尝试一下。


更多详细内容,参考本人的相关文档:

点我达博客:rds数据库本地化改造

微信公众号:rds数据库本地化改造

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

推荐阅读更多精彩内容

  • 介绍部署方式的文档很多,这里就不多做介绍了,更多的本次部署的经验教训,框架的模式等的总结。 公司需要发...
    怕水河马阅读 6,816评论 1 1
  • 公司的监控系统有Zabbix和Prometheus+Grafana,对于Prometheus这一块本人不大熟悉。挂...
    super_pcm阅读 844评论 0 0
  • 在第1章中为了采集主机的监控样本数据,我们在主机上安装了一个Node Exporter程序,该程序对外暴露了一个用...
    super_pcm阅读 1,483评论 0 0
  • 监控的目标 在《SRE: Google运维解密》一书中指出,监控系统需要能够有效的支持白盒监控和黑盒监控。通过白盒...
    逗比的一生阅读 541评论 0 1
  • “时间是让人猝不及防的东西” 人越大越怕分别。打从我们出生的那一刻就开始经历着分别,与亲人与朋友与同学与爱人。越...
    人圭雨路阅读 263评论 0 3