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

news2025/1/12 15:55:49

背景

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145855.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OSPF综合实验

1.首先把IP跟环回配上 [R4]int g 0/0/0 [R4-GigabitEthernet0/0/0]ip add 12.1.1.2 24 [R4-GigabitEthernet0/0/0]int g 0/0/2 [R4-GigabitEthernet0/0/2]ip add 32.1.1.2 24 [R4-GigabitEthernet0/0/2]int g 0/0/1 [R4-GigabitEthernet0/0/1]ip add 22.1.1.2 24 [R4-GigabitE…

SRM系统如何应对数字化浪潮,打造万商互联

近几年&#xff0c;大量的大中型企业开始了数字化的采购管理&#xff0c;这意味着从传统的采购方式转向了数字化的采购&#xff0c;从根本上改变了传统的采购方式&#xff0c;实现了对采购系统的优化重组&#xff0c;是战略和战术体系的系统化变革&#xff0c;也为采购数智化、…

STM32 DMA编程时的一个应用小提醒

有人使用STM32H7芯片做些事情&#xff0c;发现基于ST公司的HAL库开发UART1的DMA收发时可以轻松实现&#xff0c;而当使用ST的LL库组织代码时&#xff0c;却没法实现UART的DMA传输。感觉上就是使用HAL库编写代码功能正常而基于LL库则不行。真是这样吗&#xff1f;使用STM32CubeM…

磁盘管理与配置

磁盘管理的概念 Windows Server 2012 R2支持基本分区和动态分区两类分区&#xff0c;实现了跨区卷、带区卷、镜像卷等功能。使用动态存储技术&#xff0c;可以创建、扩充或监视磁盘卷&#xff0c;添加新磁盘&#xff0c;用户无须重启系统&#xff0c;多数配置即可立即生效 分…

TCP/IP 网络模型

应用层最上层的&#xff0c;也是我们能直接接触到的就是应用层&#xff08;Application Layer&#xff09;&#xff0c;我们电脑或手机使用的应用软件都是在应用层实现。那么&#xff0c;当两个不同设备的应用需要通信的时候&#xff0c;应用就把应用数据传给下一层&#xff0c…

V2X,路测单元,RSU,Map消息集

前言 MAPMAP消息即地图消息&#xff0c;由路侧单元RSU&#xff08;RodeSide Unit&#xff09;广播&#xff0c;向车辆传递局部区域的地图信息。包括局部区域路口消息、路段消息、车道消息、道路之间的连接关系等。用于传递多种类型的地理道路信息&#xff0c;内容应该包括&…

JS 代理第一篇:在代理中使用反射

理解代理的概念 有过 java 或者 c# 经验的同学&#xff0c;比较容易理解代理的概念和作用&#xff0c;可以类比类中的 setter 和 getter 没有相关经验&#xff0c;读完下面内容&#xff0c;也可以初步理解JS中的代理了 有下面一个对象 const duck {name: Maurice,color: whi…

iOS WeexSDK 如何将 Vue 文件绘制成原生UI

废话开篇&#xff1a;现在的跨平台开发尤其是以 vue 语法为主的 uniapp 框架&#xff0c;可以实现 vue 语法直接转换为原生 UI 组件的功能&#xff08;.nvue 文件&#xff09;&#xff0c;可以理解成 .nvue 文件下的标签与 weex 库的原生注册的 UI 有对应的映射关系&#xff0c…

String类详解(java)

文章目录&#x1f4d6;前言&#xff1a;&#x1f380;String类的构造方法两种创建形式&#x1fa85;**隐式创建&#xff1a;**&#x1fa85;**显式创建&#xff1a;**&#x1f380;String类底层结构&#xff1a;&#x1f380;String类常用方法&#xff1a;&#x1f4d6;前言&am…

神经网络漫谈(一):科普篇

神经网络漫谈(一):科普篇 发表时间&#xff1a; 2023年1月6日创作地点&#xff1a;湖北省武汉市作者&#xff1a;ixy_com&[Bill Kromydas]封面图片来源&#xff1a;Towards Data Science 1、背景 基本概念&#xff1a;神经网络&#xff0c;也称为人工神经网络 (ANN) 或…

Ubuntu22.04安装Docker以及Docker安装微信、企业微信、Docker常用命令

Ubuntu22.04安装Docker以及Docker安装微信、企业微信、Docker常用命令1 Docker引擎官网安装1.1 访问Docker官网下载社区版引擎并按照官网指导进行初步安装1.2 检查安装是否成功1.3 添加当前用户到docker组&#xff0c;不用每次都输入sudo。2 Docker安装微信2.1 拉取微信镜像2.2…

CSS基础(八)——CSS3新增样式

概述 前面7篇博客记录的所有 CSS 知识&#xff0c;都是 CSS2 版本的功能。 CSS3 在 CSS2 版本的基础上&#xff0c;新增了很多特性&#xff0c;例如边框圆角、动画效果。 在 CSS2 的时代&#xff0c;实现圆角必须要用图片才能实现&#xff0c;而 CSS3 只要一行样式就能实现…

SpringBoot+MySQL(官方案例)

在线文档项目结构 1.源码克隆&#xff1a;git clone https://github.com/spring-guides/gs-accessing-data-mysql.git 2.包含两个项目initial和complete&#xff0c;initial可以根据文档练习完善&#xff0c;complete是完整项目 3.功能描述&#xff1a;构建应用程序&#xff0c…

【jQuery】jQuery基础概念

一、JavaScript库1.仓库可以把很多东西放到这个仓库里面。找东西只需要到仓库里面查找到就可以了。2. JavaScript库即 library&#xff0c;是一个封装好的特定的集合&#xff08;方法和函数)。从封装一大堆函数的角度理解库&#xff0c;就是在这个库中&#xff0c;封装了很多预…

信息技术 安全技术 密钥管理

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 前 言 GB/T 17901《信息技术 安全技术 密钥管理》分为六个部分&#xff1a; ——第1部分&#xff1a;框架&#xff1b; ——第2部分&#xff1a;使用对称技术的…

Odoo 16 企业版手册 - 库存管理之库位管理

库存位置 配置和管理Odoo 库存模块中可用位置的平台将帮助您定义仓库中存放产品的地方。在单个仓库中&#xff0c;您可以管理库存的多个位置。从库存模块的「设置」菜单中&#xff0c;您可以激活存储位置功能&#xff0c;如下所示&#xff0c;该功能将帮助您跟踪仓库中的产品位…

为什么使用消息中间件

为什么要使用消息中间件 如有一个电商交易的场景&#xff0c;用户下单之后调用库存系统减库存&#xff0c;然后调用物流系统进行发货&#xff0c;如果刚开始交易&#xff0c;库存&#xff0c;物流都是属于一个系统&#xff0c;那么他们之间就是接口调用。但是随着系统的发展&a…

FRP 内网穿透搭建(无域名)

一、为什么要内网穿透 FRP 可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp, http, https 协议。 使用场景&#xff1a;公网服务器监听某个端口等待内网服务器连接&#xff0c;内网服务器连接成功后&#xff0c;用户访问公网的某一个端口&#xff0c;访问的所…

Domino Web应用早就想到了环保

大家好&#xff0c;才是真的好。 前几周我们讲了Notes&#xff0c;上周讲了点管理&#xff0c;这周我们可以讲点开发。 我现在要讲的技术真的很古老&#xff0c;但现在却被越来越多的人提倡。 传统的Notes应用可以很简单地通过浏览器访问&#xff0c;以一个非常简单但又很使…

ESP32设备驱动-MCP9808数字温度传感器驱动

MCP9808数字温度传感器驱动 文章目录 MCP9808数字温度传感器驱动1、MCP9808介绍2、硬件准备3、软件准备4、驱动实现1、MCP9808介绍 MCP9808 数字温度传感器将 -20C 和 +100C 之间的温度转换为精度为 0.5C(最大值)的数字字。 MCP9808 带有用户可编程寄存器,可为温度传感应用…