平台统一监控的介绍和调研
创始人
2024-05-08 11:15:58
0

背景

目前平台缺少强有力的监控工具,单独依靠Spring Boot Admin 还太欠缺,没有大屏、没有分布式链路追踪、自定义告警繁琐,在我的《Spring Boot Admin2》专栏中自定义过JVM监控和异常监控,都需要自己编码定义监控规则和告警,效率很低。

需求

为了解决如上的问题,我整理了一下内部对应监控的可能需求:

1、内部服务的监控(Metrics)
2、网站、服务接口外部可用性监控
3、服务器硬件相关指标监控
4、数据库、中间件等监控
5、自定义的一些业务指标监控(Exporter)
6、灵活的自定义告警规则(AlertManager)
7、链路监控(skywalking)

产品调研

Zabbix

传统监控产品,主要在服务器相关监控方面有优势,不支持云原生监控,C语言开发,资料多

在这里插入图片描述

📌 Zabbix 告警机制不完善,设置繁琐; 监控微服务能力太弱,了解到只能监控微服务的在线状态

Nightingale(夜莺)(Open-Falcon)

国产监控,云原生监控分析系统,采用 All-In-One 的设计,集数据采集、可视化、监控告警、数据分析于一体,与Prometheus、VictoriaMetrics、Grafana、Telegraf、Datadog 等生态紧密协同集成,提供开箱即用的企业级监控分析和告警能力,产品较新2020年发布,符合国人风格,资料少,部分插件需要购买或自研,GO语,https://n9e.github.io/docs/prologue/introduction/

在这里插入图片描述

📌 本来个人更倾向于选择该产品,深入产品交流群后,群里交流不活跃,很多问题没人回复,如果用开源产品肯定会碰到很多问题,没有一个良好的交流环境会很难继续使用。
📌 后期调研了企业版,企业版价格昂贵,按年收费,费用堪比一个高级程序员。

Hertzbeat

国产小众监控,主打无侵入式,无Agent监控,支持JVM,MYSQL,Linux, Kubernetes等应用服务,数据库,操作系统,中间件,云原生等监控。更自由化的阈值告警配置,支持邮箱,短信,webhook,钉钉,企业微信,飞书机器人等告警通知。提供Custom-Monitoring,通过不同的协议SSH,JDBC,JMX,SNMP,HTTP等,仅需配置YML就能自定义监控指标并快速接入监控系统,Java语言
https://hertzbeat.com/docs/

监控三角塔

📌 刚看到的个人开源监控产品,群交流活跃,个人觉得功能够用但是不够美观

Prometheus

云原生时代监控产品,支持自定义配置告警,自定义监控,Go语言开发,资料较多
在这里插入图片描述
这是监控三字塔,可见Prometheus+Grafana的组合已经覆盖了大部分的监控。

在这里插入图片描述
这是Prometheus的管理界面,Prometheus本身也是一个TSDB(时序数据库)。

在这里插入图片描述

配合Grafana大屏工具,对指标进行展示,并且官方商城有很多免费的大屏可以直接使用,几乎可以做到开箱即用,上图就是使用了免费的JVM指标大屏。

📌 Grafana 具有很强大的功能,相关教程文章可见《Grafana》

Prometheus 架构

在这里插入图片描述

什么是Exporter

广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方式定期从这些target中获取样本数据:
在这里插入图片描述

  • 社区提供的
    Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。下表列举一些社区中常用的Exporter:
    在这里插入图片描述
  • 用户自定义的
    除了直接使用社区提供的Exporter程序以外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。

自定义埋点


public class DemoMetrics implements MeterBinder {public Counter counter;public Map map = new HashMap<>();@Overridepublic void bindTo(MeterRegistry meterRegistry) {//定义并注册一个计数器this.counter = Counter.builder("prometheus.demo.counter").tags(new String[]{"name", "counter1"}).description("demo counter").register(meterRegistry);//设置动态变化的仪表盘Gauge.builder("prometheus.demo.gauge", map, x -> x.get("x")).tags("name", "gauge1").description("This is Gauge").register(meterRegistry);}
}

总结

综上所述,为了既省成本又有扩展性,决定选择开源的Prometheus+Grafana,虽然有一定的学习成本,但毕竟是目前的主流监控产品。

作者其他文章:

Grafana 系列文章,版本:OOS v9.3.1

  1. Grafana 的介绍和安装
  2. Grafana监控大屏配置参数介绍(一)
  3. Grafana监控大屏配置参数介绍(二)
  4. Grafana监控大屏可视化图表
  5. Grafana 查询数据和转换数据

Spring Boot Admin 2 系列文章:

  1. Spring Boot Admin 参考指南
  2. SpringBoot Admin服务离线、不显示健康信息的问题
  3. Spring Boot Admin2 @EnableAdminServer的加载
  4. Spring Boot Admin2 AdminServerAutoConfiguration详解
  5. Spring Boot Admin2 实例状态监控详解
  6. Spring Boot Admin2 自定义JVM监控通知
  7. Spring Boot Admin2 自定义异常监控
  8. Spring Boot Admin 监控指标接入Grafana可视化

相关内容

热门资讯

多地加大对“暴骑团”等违法行为...   央视网消息: 近年来,随着绿色出行的理念深入人心,骑行热潮再度兴起。然而,有些骑行团却让骑行变了...
​财务报表分析里怎么分析毛利率... 财务报表分析里怎么分析毛利率变化销售结构变化:首先,你需要分析销售结构的变化。具体来说,比较各产品在...
不到48小时涉案7000余元!...   近日,江西鹰潭  有群众向消防部门举报  有人打着“消防检查”的幌子  骗取店家信任  以达到推...
女子名下竟有138辆车!起底“...   山西左权县的一位普通农妇李某,在完全不知情的情况下,名下被登记了足足138辆机动车,其中大量车辆...
长期炎症会“唤醒”癌细胞!这份...   持续性疲劳、全身疼痛酸痛、皮肤发红湿疹、经常腹泻或便秘……这些生活中很常见的表现,可能是长期慢性...
安徽当涂:网络安全宣传周 安全...   当涂县公安局网安大队开展“网络安全宣传进网吧”主题活动。  2025年9月17日,正值国家网络安...
女子坠井54小时“绝境求生”   9月17日福建泉州(发布),女子坠井54小时“绝境求生”,紧抓井璧,最难熬时好几条蛇爬身上,“被...
能“骑”的机器人你见过吗?    9月17日,山东济南。国务院新闻办公室组织30余名中外记者,来到山东优宝特智能机器人公司深入探...
黄河安澜 幸福滋味   黄河之水天上来  奔流到海不复回  她从雪域青海奔涌而出  穿越山川峡谷  流过平原大地  最终...
音乐节、消费券……文旅部介绍国...   国新办17日就扩大服务消费有关政策措施举行新闻发布会。会上,有记者提问:国庆中秋假期临近,居民文...