前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >平台统一监控的介绍和调研

平台统一监控的介绍和调研

作者头像
阿提说说
发布2023-01-08 10:25:28
1.2K0
发布2023-01-08 10:25:28
举报
文章被收录于专栏:Java技术进阶Java技术进阶

背景

目前平台缺少强有力的监控工具,单独依靠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等。

自定义埋点

代码语言:javascript
复制
public class DemoMetrics implements MeterBinder {

    public Counter counter;
    public Map<String, Double> map = new HashMap<>();


    @Override
    public 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可视化
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 需求
  • 产品调研
    • Zabbix
      • Nightingale(夜莺)(Open-Falcon)
        • Hertzbeat
          • Prometheus
            • Prometheus 架构
              • 什么是Exporter
                • 自定义埋点
                • 总结
                相关产品与服务
                Prometheus 监控服务
                Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档