• Spring接入Metric+Graphite+Grafana搭建监控系统


    环境搭建

    Metric

    主要是记录操作记录,把数据传给Graphite,这个只需要引入依赖就可以了

    • 日志收集系统,可以支持很多的监控系统
    • 一般在Spring项目中用其收集数据,可以发送到Graphite等监控系统中
    • 一般使用MerterTimer分别记录成功率和响应时间指标
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-core</artifactId>
            </dependency>
            <dependency>
                <groupId>io.dropwizard.metrics</groupId>
                <artifactId>metrics-graphite</artifactId>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Graphite

    这是一个开源的监控系统,我们这里只是存储数据使用
    可以使用docker安装,然后去8880端口进行访问,你也可以自定义端口在命令中的 -p
    默认账号密码都是 root

    docker run -d \
     --name graphite \
     --restart=always \
     -p 8880:80 \
     -p 2003-2004:2003-2004 \
     -p 2023-2024:2023-2024 \
     -p 8125:8125/udp \
     -p 8126:8126 \
     -v /opt/graphite_data/whisper:/opt/graphite/storage/whisper:rw \
     -v /opt/graphite_data/redis:/var/lib/redis:rw \
     -v /opt/graphite_data/log:/var/log:rw \
     graphiteapp/graphite-statsd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    Grafana

    主要使用Grafana接入Graphite中的数据,然后进行数据展示,不使用Graphite的数据展示原因是不够Grafana细致
    同时Grafana还可以接入多种数据源
    可使用下面docker命令安装,然后访问3000端口
    默认账号密码都是 admin
    进去过后,先连接Graphite,看下面图片操作即可

    docker run -d \
      --name grafana \
      -p 3000:3000 \
      -v /opt/grafana:/var/lib/grafana \
      grafana/grafana
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    就可以看到下面这个界面

    在这里插入图片描述

    Spring中使用

    我已经写好了一个starter,可以直接拿来使用即可,但是也可能存在bug,存在问题可提issue
    点击这个链接 metrics-spring-boot-starter
    使用起来是非常简单的,默认的report是console
    如果要看具体是如何使用的可查看代码仓库中的readme文档

    也可查看官方文档 官方文档
    如果要自己使用也是很简单的

    public class MeterExample {
        
        //注册
        public final static MetricRegistry registry = new MetricRegistry();
        
        //生成一个meter
        public final static Meter meter = registry.meter("tqs");
        public static void main(String[] args) {
            
            //生成一个report
            ConsoleReporter reporter = ConsoleReporter
                    .forRegistry(registry)
                    .convertRatesTo(TimeUnit.MINUTES)
                    .convertDurationsTo(TimeUnit.MINUTES)
                    .build();
            reporter.start(10,TimeUnit.SECONDS);
            
            meter.mark();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    Metrics

    简单介绍一下其中的五种数据类型

    Meter

    Meters中文名称可以翻译为TPS计数器。它是一种只能自增的计数器,通常用来度量一系列事件发生的比率(例如记录succeed和failed可以直到接口成功率)。

    • 平均每秒请求数
    • 最近1分钟平均每秒请求数
    • 最近5分钟平均每秒请求数
    • 最近15分钟平均每秒请求数

    Counter

    Counters中文名称可以翻译为计数器。它是一种累计型的度量指标,数值只能单调递增

    • 服务请求数
    • 任务完成数
    • 错误出现次数

    Gauge

    Gauges中文名称可以翻译为计量器。它可以表示一个既可以增加, 又可以减少的度量指标值。它是最简单和最基本的Metrics类型,只有一个简单的返回值,通常用来记录一些对象或者事物的瞬时值。

    • 温度
    • 内存使用量

    Histogram

    Histograms中文名称可以翻译为直方图。它可以用来度量流数据中value的分布情况,Histrogram可以计算最大/小值、平均值,方差,分位数(如中位数,或者95th分位数),如75%,90%,98%,99%的数据在哪个范围内。最大的特点是提供了多种多样的数据统计方式。

    • 流量最大值
    • 流量最小值
    • 流量平均值
    • 流量中位值

    Timer

    Timers中文名称可以翻译为计时器。Histogram跟Meter的一个组合,另外还提供了对于某段代码执行的耗时的统计及计算功能。

    • 请求时延
    • 磁盘读时延
  • 相关阅读:
    高度关注,2022开放原子开源峰会最新议程一览
    第1关:Hive的安装与配置
    PHP 使用 PhpSpreadsheet
    HDU 2602: Bone Collector ← 0-1背包问题
    [Mono Depth/3DOD]单目3D检测基础
    SCADA系统是什么意思?
    SpringBoot--列表添加新增功能
    Java从零学起(十一)----LinkedList集合
    如何使用VMware12PRO安装Mac OS
    Java发送/接收消息示例
  • 原文地址:https://blog.csdn.net/m0_74787523/article/details/134463988