|
|
51CTO旗下网站
|
|
移步端
  • 为什么我们放弃Zabbix利用Prometheus?

    2017 年以前,咱们运维体系的监察主要还是以 Zabbix 表现主流的解决方案。那时必发娱乐登录这部分的监察服务也是采取的监察运维团队提供的劳务。

    笔者:闫晓宇 来源:DBAplus 社群| 2019-12-30 08:34

    2017 年以前,咱们运维体系的监察主要还是以 Zabbix 表现主流的解决方案。那时必发娱乐登录这部分的监察服务也是采取的监察运维团队提供的劳务。

    图表来自 Pexels

    完全来说,Zabbix 的效应还是异样强大的,而且使用也比较简便,基本上写写脚本就能实现指定应用的监察。

    PS:脚下已经不是 Zabbix 了,运维团队基于 Open-Falcon 研制开发了一套统一的运维监控体系,当然这是后话了。

    咱们在 2016 年就已经尝试 MySQL 的容器化,2017 年开始大规模应用。容器化以后 MySQL 多少大幅度上升,穿过平台化进行管理。

    原本使用的 Zabbix 已经无法满足需要:

  • 监督指标太多,如果都接入到 Zabbix,传感器无法承受(那时的蒸发器资源情况下)。
  • 必发娱乐登录运维平台对监控告警的治本要求联动处理。
  • 必发娱乐登录运维平台上实例增删时要求监控体系自动发现实例。
  • 有趋势预测、数量快速统计的急需。
  • 对监控指标画图有自定义的急需。
  • 故此我们 DB 团组织内部想选型一款监控体系来支撑以上急需。

    艺术选型

    关于必发娱乐登录的监察,咱们并不想投入太多人力去维护,毕竟监控体系不是咱们的首要办事。

    故此需要选一款部署简单、传感器资源占用低、同时又能结合告警功能的监察体系。

    虽然眼下开源的监察体系还是有诸多之,但是最终评估下来,还是选择了更轻量化的 Prometheus,能够快速满足我们必发娱乐登录监控的急需。

    ①易用性

    批办制文件启动、轻量级 Server,便于迁移和保护、PromQL 计算函数丰富,统计维度广。

    ②高性能

    监督数据以时日为维度统计情况较多,时序必发娱乐登录更适用于监控数据的存储,按时间索引性能更高,数百万监控指标,每秒处理数十万之多寡点。

    ③扩展性

    Prometheus 支持联邦集群,可以让多个 Prometheus 老产生一个逻辑集群,顶单实例 Prometheus Server 拍卖的天职量过大时,穿过使用效益分区(Sharding)+阿联酋集群(Federation)可以对他进行扩张。

    ④易集成性

    Prometheus 镇区还提供了大量次三方实现的监察数据采集支持:JMX,EC2,MySQL,PostgresSQL,SNMP,Consul,Haproxy,Mesos,Bind,CouchDB,Django,Memcached,RabbitMQ,Redis,Rsyslog等等。

    ⑤可视化

    自带了 Prometheus UI,交通过这个 UI 可以直接对数据进行查询。重组 Grafana 可以灵活构建精美细致的监察趋势图。

    ⑥强有力的集聚语法

    内置查询语言,可以通过 PromQL 的函数实现对数据的询问、聚拢。同时基于 PromQL 可以快捷定制告警规则。

    实行

    监督的目的

    在做监控体系之前,第一我们要肯定监控的目的。

    在总结相关内容的时节,相当在水上看到了 CNCF 红十字会 Certified Kubernetes Administrator 郑云龙先生基于《SRE:Google 运维解密》对监控目的的总结,总结很成功,故此就直接引用过来了。

    引用来源:

          
    1. https://www.bookstack.cn/read/prometheus-book/AUTHOR.md 

    漫长趋势分析:穿过对监控样本数据的后续收集和统计,对监控指标进行旷日持久趋势分析。

    例如,穿过对磁盘空间增长率的论断,咱们可以提前预测在未来什么时间重点上要求对水源进行扩容。

    告警:顶系统出现或者即将出现故障时,监督体系需要迅速反应并通报管理员,故而能够对问题展开快速的拍卖或者提前预防问题的发生,避免出现对工作的影响。

    故障分析与稳定:顶问题发生之后,要求对问题展开考察和处理。穿过对不同监控监控以及历史数据的剖析,能够找到并解决根源问题。

    数量可视化:穿过可视化仪表盘能够直接获取系统之运作状态、能源利用状态、以及服务运行状态等直观的消息。

    一度监控体系满足了上述的那些点,涉及采集、剖析、告警、图片展示,圆满覆盖了监督体系应该具备的效应。下就讲解我们是如何基于 Prometheus 来打造必发娱乐登录监控体系之。

    咱们的监察体系架构简介

    咱们在 2016 岁尾开始采取到今天,中间也经历过几次架构演进。但是考虑到阅读体验,把替代的提案就不在这细说了,咱们重点讲一下目前的架构设计和利用状态。

    第一看一下总体的架构:

    咱们逐个介绍一下地方架构图中的内容:

    ①Agent

    这是咱们用 Golang 付出的监察信息采集 Agent,承担采集监控指标和案例日志。

    监督指标包括了该宿主机的相关信息(老、容器)。因为我们是容器化部署,裸机实例数量大概在 4-20 控制。

    随着运维平台的范例增删,该宿主机上的范例信息可能会发生变化。故此我们需要 Agent 能够感知到这个变化,故而决定采集哪些信息。

    此外采集间隔时间完成了 10s,监督颗粒度可以做的更细,防止遗漏掉突发性的监察指标抖动。

    ②Pushgateway

    这是咱们用之合法提供的组件,因为 Prometheus 是通过 Pull 的措施获取数据的。

    如果让 Prometheus Server 扮演每个节点拉数据,这就是说监控服务的压力就会很大。

    咱们是在监控几千个规矩的情况下做到 10s 的搜集间隔(当然采用联邦集群的全封闭式也得以,但是这样就要求部署 Prometheus Server。再增长告警相关的东西以后,任何架构会变的比较复杂)。

    故此 Agent 利用数据推送至 pushgateway,下一场由 Prometheus Server 扮演 pushgateway 地方 Pull 数量。

    这样在 Prometheus Server 写入性能满足的情况下,单台机器就足以承载整个系统之监察数据。

    考虑到跨机房采集监控数据的题材,咱们可以在每个机房都部署 pushgateway 重点,同时还能缓解单个 pushgateway 的压力。

    ③Prometheus Server

    名将 Prometheus Server 扮演 pushgateway 地方拉数据的年华间隔设置为 10s。多个 pushgateway 的情况下,就安排多个组即可。

    为了确保 Prometheus Server 的高可用,可以再加一个 Prometheus Server 放到异地容灾机房,安排和前面的 Prometheus Server 一样。

    如果监控需要保留时间长的话,也得以配置一个采集间隔时间较大的 Prometheus Server,比如 5 分钟一次,数量保留 1 年。

    ④Alertmanager

    采用 Alertmanager 明天,要求先在 Prometheus Server 地方定义好告警规则。咱们的监察体系因为是送 DBA 用,故此告警指标类型可以统一管理。

    但是也会有不同集群或者实例定义之报警阈值是不同之,此地怎么实现灵活调度,我后面再讲。

    为了消灭 Alertmanager 单点之题材(高可用见下图),咱们可以配置成 3 个点,Alertmanager 引入了 Gossip 公有制。

    Gossip 公有制为多个 Alertmanager 之间提供了信息传递的公有制。确保及时在多个 Alertmanager 离别接收到相同告警信息的情况下,也只有一度报警通知被发送给 Receiver。

    Alertmanager 支持多个项目的安排。自定义模板,比如发送 HTML 的邮件;告警路由,根据标签匹配确定如何处理告警;接受人,支持邮件、微信、Webhook 多种类型告警;inhibit_rules,穿过合理安排,可以减少垃圾告警的产生(比如机械宕机,该机器上面所有实例的报警信息就足以忽略掉,防止告警风暴)。

    咱们告警是通过 Webhook 的措施,名将触发的报警推送至指定 API,下一场通过这个接口的劳务开展二次加工。

    Prometheus 和 Alertmanager 的高可用

    ⑤Filter&Rewrite模块

    其一模块的效应就是促成 MySQL 集群告警规则过滤功能和告警内容改写。

    先说一下报警规则过滤,因为地方提到是统一设置了告警规则,这就是说如果有 DBA 要求对个别集群的报警阈值调整之话就会很辛苦,为了消灭这个题目,咱们在 Alertmanager 后面做了 Filter 模块。

    其一模块接收到报警内容后,会判断这条告警信息是否超过 DBA 针对集群或者实例(老优先级高于集群)安装阈值范围,如果超过就触发发送动作。

    告警发送按照等级不同,发送方式不同。比如我们定义了三个阶段,P0、P1、P2,依次由高到低:

  • P0,其它时间都会触发,并且同时触发电话和微信告警。
  • P1,8:00-23:00 只发微信告警,其它时间触发连续三次才触发发送。
  • P2,8:00-23:00 发送微信告警,其它时间触发不发送。
  • 下图是集群和案例的报警阈值管理页面(这是集成在必发娱乐登录运维平台内部的一个功能),针对每个集群和案例可以独立管理,兴建集群的时节会根据所选 CPU 内存配置,默认给出一组与布局对应的报警阈值。

    集群告警规则管理入口

    老告警规则管理入口

    告警规则管理

    接着看一下报警内容 Rewrite,比如上图看到的附加接收人,除了 DBA 局部开发同学也想接收告警。

    但是如果给她们发一个 Thread_running 大于多少的报警,她们可能不晓得是什么意思,或者什么情况下会出现这个告警,要求关怀什么。

    整整我们需要做一下报警内容的杂文,让开发也能看的了解。下图就是我们改写过以后的情节。

    告警内容 Rewrite

    还有告警关联,比如某个宿主机的录像带 IO 高了,但是可能需要一定是谁实例导致的,这就是说我们就足以通过这个告警,下一场去监控体系内部分析可能导致 IO 高的范例,并且管理报警。

    如图所示:

    IO 告警关联实例信息

    说到底说一下报警收敛,比如宿主机宕机,这就是说这个宿主机上面的 MySQL 老都会触发宕机告警(MySQL 老连续三个指标上报周期没有多少,则判定会为老异常),汪洋之报警会淹没掉重要告警,故此需要做一下报警收敛。

    咱们是这样做的,宕机后由宿主机的报警信息来带出实例的相关信息,一枝告警就能收看所有消息,这样就能通过一枝告警信息的情节,摸清哪些集群的范例受影响。

    如图所示:

    宿主机宕机关联实例

    ⑥Graph(图)

    Prometheus 圆满支持 Grafana,咱们可以通过 PromQL 语法结合 Grafana,很快实现监控图的展示。

    为了和运维平台关联,穿过 URL 传播参的措施,贯彻了运维平台直接打开指定集群和点名实例的监察图。

    老监控图

    集群监控图

    ⑦V-DBA

    这是一番 DBA 的无程序,可以依赖告警信息实现一些指定操作,此地举一个满载保护的例证,咱们的过载保护不是一直开启的,只有当触发了 thread_running 告警以后才会关联过载保护的动作。

    现实方案见下图:

    ⑧告警管理

    在运维平台上,咱们有专门的页面用于管理告警,在手机端也做了适配,富有 DBA 随时都能连收到平台查看处理告警。

    副下图中得以看出眼前触发的报警列表,产业化颜色标注的标识该告警已经把回复(属于维护性告警,回复以后不发送),有颜色的这个代表未被回复告警(希冀中的这个属于 P2 等级告警)。

    此外可以注意到,此地的报警内容因为是送 DBA 瞧,故此没有做改写。

    PC 头

    手机端

    基于告警日志,咱们结合 ES 和 Kibana 贯彻了告警数据分析的效应,这种交互式的数据分析展示,能够帮助 DBA 自在完成大规模必发娱乐登录运维下的家常巡检,很快稳定有问题的集群并及时优化。

    告警分析

    基于 Prometheus 的任何实践

    基于 Prometheus 的提案,咱们还做了另外监控告警相关功能扩展。

    ①集群评分

    出于我们做了告警分级,大多数之报警都是 P2 等级,也就是白天发送,这个来降低夜间的报警数量。

    但是这样一来可能会错过一些报警,导致问题决不能及时暴露,故此就做了集群评分的效应来分析集群健康状况。

    并且针对一个月的评估做了方向展示,富有 DBA 能够快速判断该集群是否需要优化。

    如下图所示:

    集群评分

    点击详情,可以进入该集群的全貌页面。可以查看 CPU、内存、光盘的采取状态(此地磁盘空间达到了 262%,意思是超过限额了)。

    此外还有 QPS、TPS、Thread_running 明日和 7 近期的比较曲线,用于观察集群请求量的转移情况。最下面的瞩目事项还会标出扣分项是什么几个,离别是哪些实例。

    详情页

    ②指标预测

    针对磁盘空间做了 7 日内小于 200G 的预测,因为多实例部署,故此需要针对目前宿主机上的范例进行当前数据大小、日志大小、日增长势头的算计。

    DBA 可以快捷稳定需要迁移扩容的兴奋点实例。贯彻方式就是用了 Prometheus 的 predict_linear 来促成的(现实用法可以参照官方文档)。

    光盘空间预警

    日志相关

    ①SlowLog

    SlowLog 管理,咱们是通过一套系统来开展采访、剖析的,因为要拿到原生日志,故此就没有采用 pt-query-digest 的措施。

    架构如下:

    穿过 Agent 募集,下一场将原来的日记格式化以后以 LPUSH 办法写入 Redis(出于数据量并不大,故此就没有用 Kafka 或者 MQ),下一场再由 slow_log_reader 其一程序通过 BLPOP 的措施读出,并且处理后写入 ES。

    其一步骤主要是促成了 SQL 指纹提取、分片库库大名鼎鼎重写为逻辑库名的借鉴。

    写入 ES 自此就足以用 Kibana 扮演查询数据。

    对吸收面向开发的必发娱乐登录一站式平台,工作开发的同窗可以查询自己有权力的必发娱乐登录,同时我们也集成了小米开源的 SOAR,可以用这个工具来查看 SQL 的僵化建议。

    穿过 ES 拓展聚合,可以给用户订阅慢查询的表格,有选择性的查看相关库的 TOP 慢 SQL 消息信息,有突破性的镜像优化。

    ②Processlist,InnoDBStatus 数据采集

    为了能够在故障回溯或者故障时查看当时的对话快照和 InnoDBStatus,咱们在监控 Agent 官方内置了这个意义,也是每 10 秒一次,分别是会判断当前 ThreadRunning 只是到达阈值,如果到达才会采集数据,否则不采集。

    这样的设定既解决了无用日志太多的题材,又解决了性能异常时能够获取到状态信息。

    下图是日记采集处理的逻辑,其中日志处理模块是和慢查询处理在一番程序中,对话快照的拍卖逻辑和慢查询类似,此地就不赘述了。

    总结

    监督体系没有绝对的谁好谁不好,最重要的是适当自己之团体,能够成立运用最小的资金解决问题。

    咱们从 2016 年开始采取 1.x 本子到线下的 2.x 本子,脚下基于 Prometheus 的监察体系,承载了整整平台所有实例、宿主机、容器的监察。

    采访周期 10秒,Prometheus 1 分钟内每秒平均摄取样本数 9-10W。

    1 台物理机(不包括高可用容灾资源)就足以承载当前的话务量,并且还有很大的增量空间(CPU\Memory\Disk)。如果未来单机无法支撑的情况下,可以扩容成联邦集群模式。

    此外本文中提出的监察体系只是咱们运维平台中的一个模块,并不是一番独立的体系,副我们实践经验来看,最好是可以集成到运维平台中去,贯彻技术栈收敛和系统产品化、平台化,降低使用的复杂性的。

    说到底说说在监控方面我们未来想做的作业,脚下我们监控数据有了,但是告警只是发送了指标的情节,现实的脚因还要求 DBA 剖析监控信息。

    咱们计划在重要阶段实现告警指标相关性分析之后,可以给出一番综合多个监控指标得出的总结,赞助 DBA 很快稳定问题;其次阶段能够更加分析结果给出处理建议。

    末了依赖整个监控系统,降低运维的复杂度,钻井运维与工作开发直接的关联壁垒,提升运维效率和服务质量。

    笔者:闫晓宇

    介绍:同程艺龙必发娱乐登录技术专家,具有多年互联网行业 DB 运维经验,在嬉戏、O2O 及电商行业从事过 DBA 运维工作。2016 年参加同程艺龙,脚下在集体负责必发娱乐登录架构设计及优化、运维自动化、MySQL 监督系统建设、DB 私有云平台设计及开发工作。

    【编纂推荐】

    1. 控制这些监控报警优化技巧,百万年薪不在话下!
    2. 阿里技术架构内部总结:HDFS监督落地的思辨
    3. 必看!5大IT基础设施监控工具,速来!
    4. 监督体系哪家强?EMonitor与CAT大比拼!
    5. 五招监控云账号劫持活动
    【义务编辑: 武晓燕 TEL:(010)68476606】

    点赞 0
  • Zabbix  Prometheus  监督
  • 分享:
    大家都在看
    猜你喜欢
  • 订阅专栏+更多

    一步到位玩儿透Ansible

    一步到位玩儿透Ansible

    Ansible
    共17章 | 骏马金龙1

    33人口订阅学习

    云架构师修炼手册

    云架构师修炼手册

    云架构师之必不可少技能
    共3章 | Allen在路上

    22人口订阅学习

    Devops的监控神器Prometheus

    Devops的监控神器Prometheus

    监督主流
    共22章 | 小罗ge11

    172人口订阅学习

    读 书 +更多

    稳中求进Oracle――必发娱乐登录管理、多极化与备份恢复

    该书从基础知识入手,详细讨论了Oracle必发娱乐登录的创造、OEM及iSQL*Plus等工具的采取、Oracle的字符集知识、他家之创造与管理、表面空间和数量文...

    订阅51CTO邮刊

    点击这里查看样刊

    订阅51CTO邮刊

    51CTO劳务号

    51CTO官微


    
       
        


      1.