监控改造之路1
入职新公司已经三个月了,据说招我来的目的就是为了做监控的需求,因为我之前有过设计监控告警平台的一些经验吧……
现状
新公司监控解决方案是大家所熟知的Prometheus+Grafana那一套,对于来说也算是驾轻就熟了。由于团队是做大数据相关的,对ZooKeeper(后文简称zk)有比较强的依赖(zk是部署在K8s中的),所以我首先了解了一下之前是如何实现对zk的监控:
是通过jmx实现的,以下是wiki上对jmx的释义:
JMX是Java平台上为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
openai是这么描述的:
JMX代表Java管理扩展,是Java平台上的一种管理和监控技术。它允许应用程序提供一个MBean(管理bean)接口,这个接口暴露了应用程序的运行时属性、性能统计信息和方法操作。这些MBean可以被远程管理和监控,通过JMX客户端可以实时查看和修改这些MBean的状态。
我觉得openai的描述我更容易理解,具体实现步骤如下所示:
团队开发了一个exporter的http server;
exporter负责从支持 jmx 的接口(如 zk )获取监控数据,并将其转化为 prometheus metrics格式;
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 MetricsProviderby settingmetricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProviderin the zoo.cfg.
这里背景需要稍微说明一下:在我入职之前,团队其它人均是3年以下工作经验,对监控完全没有概念,能够从0做到1,我个人觉得已经是不错的了。
总结
搜索:笔者觉得搜索是一项挺重要的能力的,特别是要学会用google+英文搜索,可以大大提高解决问题的能力,现在有了openai,更方便了。
借鉴:笔者认为,非底层技术的软件公司,不太能遇到或者解决难度很大的技术问题,我们遇到的许多问题,别人可能都已经解决过了,创新当然是好的,但如果能够参考、借鉴前人的做法,大概率能帮助我们减少弯路。
参考