监控改造之路1

·

1 min read

入职新公司已经三个月了,据说招我来的目的就是为了做监控的需求,因为我之前有过设计监控告警平台的一些经验吧……

现状

新公司监控解决方案是大家所熟知的Prometheus+Grafana那一套,对于来说也算是驾轻就熟了。由于团队是做大数据相关的,对ZooKeeper(后文简称zk)有比较强的依赖(zk是部署在K8s中的),所以我首先了解了一下之前是如何实现对zk的监控:

是通过jmx实现的,以下是wiki上对jmx的释义:

JMX是Java平台上为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

openai是这么描述的:

JMX代表Java管理扩展,是Java平台上的一种管理和监控技术。它允许应用程序提供一个MBean(管理bean)接口,这个接口暴露了应用程序的运行时属性、性能统计信息和方法操作。这些MBean可以被远程管理和监控,通过JMX客户端可以实时查看和修改这些MBean的状态。

我觉得openai的描述我更容易理解,具体实现步骤如下所示:

  1. 团队开发了一个exporter的http server;

  2. exporter负责从支持 jmx 的接口(如 zk )获取监控数据,并将其转化为 prometheus metrics格式;

  3. prometheus从exporter中抓取数据;

改造

这么做也不是不可以,至少功能上是实现了,但是直觉上我觉得不应该这么复杂,毕竟prometheus几乎成为了监控的一套标准,zk虽然比较老,但应用广泛,也应该有支持才对呀,于是翻阅了zk的官方文档,果然,只需要配置一下即可

Prometheus

  • Running a Prometheus monitoring service is the easiest way to ingest and record ZooKeeper's metrics.

  • Pre-requisites:

  • enable the Prometheus MetricsProvider by setting metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider in the zoo.cfg.

这里背景需要稍微说明一下:在我入职之前,团队其它人均是3年以下工作经验,对监控完全没有概念,能够从0做到1,我个人觉得已经是不错的了。

总结

  • 搜索:笔者觉得搜索是一项挺重要的能力的,特别是要学会用google+英文搜索,可以大大提高解决问题的能力,现在有了openai,更方便了。

  • 借鉴:笔者认为,非底层技术的软件公司,不太能遇到或者解决难度很大的技术问题,我们遇到的许多问题,别人可能都已经解决过了,创新当然是好的,但如果能够参考、借鉴前人的做法,大概率能帮助我们减少弯路。

参考