内容简介:目前点我达的数据库集群主要集中在3个区域, 一个是杭州阿里云的rds集群, 一个是上海阿里云idc自建的数据库集群, 还有一个是杭州idc自建数据库集群,总的数据库实例规模大概在500左右, 阿里云rds的监控展示和报警推送,完全依赖于阿里云的云监控。当然,不是说阿里云的云监控不好, 是当集群规模达到一定数量之后1、实例纵向维度的对比很难做, 无法做时间跨度比较大的监控趋势查看
一、项目背景
目前点我达的数据库集群主要集中在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地址为: 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
配置好后, 把服务拉起来, Prometheus里的 这一段配置会把向exporter-address:9104 这个请求地址发送的scrape请求,添加上一个参数, target=__address__, 这个__address__是从consul里读取到的rds的 tcp的地址
比如我的这个地址:下发的给exporter的请求为:
然后exporter拿到这个地址请求后,把需要的实例信息解析出来,通过地址去数据库里拿去监控信息, 这样每次protheus下发新的地址后,exporter会拿新的地址去查询,就实现了一个exporter监控多个数据库的功能。
详细的mysqld_exporter的代码介绍和实现参见本人的开源项目, github地址为: 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地址为: node_exporter
5、报警推送
这里不再简述了, 就是在prometheus里设置阈值, 然后推送给Alertmanager, 然后Alertmanager后面还有一套报警推送和收敛的系统,详情请看上面的整体监控架构图。
四、图表展示 这里图表展示分为2部分,一部分是引擎层面的监控图,直接使用的是Grafana里的Percona插件。另一部分机器层面的监控需要自己手动画图。 关于这部分,我不打算详细说明,只给大家贴两张图好了。
五、总结
目前市面上还没有将数据库的监控exporter做成1对多的方案, 我的这次修改首次实现了这个功能,结合Prometheus,减少了运维成本。经过这次改造, 点我达的rds监控和本地自建数据库的监控有了一个完整统一的监控体系, 目前仍在持续接入中。我后面会持续更新迭代,解决和优化数据库性能、监控、高可用等方面的问题,并且输出一些其他的高质量实战 工具 和文章。同时本文章的几个服务已经开源,也希望能给提供给开发能力没有很突出的dba们,感兴趣的同学可以尝试一下。
以上所述就是小编给大家介绍的《点我达RDS监控系统改造》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- WGCLOUD 监控系统更新,集成 ES 在线监控工具
- WGCLOUD 监控系统更新,进程监控模块 bug 修复
- 分布式监控系统 WGCLOUD,新增 docker 状态监控
- 分布式监控系统 WGCLOUD,支持进程流量指标监控
- 安全监控 划重点!机房中最重要的监控系统你了解吗?
- xrkmonitor 字符云监控系统 v2.2 发布,新增 Linux 文件目录监控插件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
白话大数据与机器学习
高扬、卫峥、尹会生 / 机械工业出版社 / 2016-6 / 69
本书通俗易懂,有高中数学基础即可看懂,同时结合大量案例与漫画,将高度抽象的数学、算法与应用,与现实生活中的案例和事件一一做了关联,将源自生活的抽象还原出来,帮助读者理解后,又带领大家将这些抽象的规律与算法应用于实践,贴合读者需求。同时,本书不是割裂讲解大数据与机器学习的算法和应用,还讲解了其生态环境与关联内容,让读者更全面地知晓渊源与未来,是系统学习大数据与机器学习的不二之选: ·大数据产业......一起来看看 《白话大数据与机器学习》 这本书的介绍吧!