Micrometer监控库

Micrometer 是一个多平台的监控库,支持多种度量后端(如 Prometheus、Grafana、Datadog 等)。不同的度量后端和库提供的度量内容可能会有所不同,但一些常见的内置度量包括:

常见的 Micrometer 度量

  1. JVM 度量

    • JVM 内存
      • jvm.memory.used:JVM 使用的内存量。
      • jvm.memory.max:JVM 最大内存量。
      • jvm.memory.committed:JVM 已提交的内存量。
    • JVM 垃圾回收
      • jvm.gc.pause:GC 暂停时间。
      • jvm.gc.live.data.size:GC 活跃数据大小。
    • JVM 线程
      • jvm.threads.count:当前线程数。
      • jvm.threads.states:线程状态分布。
  2. 系统级度量

    • CPU 使用率
      • system.cpu.usage:系统 CPU 使用率。
    • 文件描述符
      • system.files.open:系统中打开的文件描述符数量。
    • 系统负载
      • system.load.average:系统负载平均值。
  3. 应用程序级度量

    • HTTP 请求
      • http.server.requests:HTTP 请求的总量和响应时间。
    • 数据库
      • db.query.count:数据库查询的数量。
      • db.query.time:数据库查询的耗时。
    • 自定义度量
      • 可以自定义度量,记录应用程序中的各种业务指标,例如处理时间、成功率等。

度量后端支持

  1. Prometheus

    • 常见 Prometheus 度量
      • http_server_requests_seconds_count:HTTP 请求计数。
      • http_server_requests_seconds_sum:HTTP 请求总耗时。
      • jvm_memory_bytes_used:JVM 内存使用量。
  2. Datadog

    • 常见 Datadog 度量
      • system.cpu.idle:系统 CPU 空闲率。
      • system.memory.used:系统内存使用量。
      • app.custom_metric:自定义应用程序指标。
  3. StatsD

    • 常见 StatsD 度量
      • app.requests.count:应用程序请求计数。
      • app.response.time:应用程序响应时间。
  4. 自定义度量示例

       这是一个实际的示例,演示如何注册一个返回磁盘剩余空间的 Gauge

  1. import io.micrometer.core.instrument.Gauge;
    import io.micrometer.core.instrument.Metrics;
    
    import java.io.File;
    import java.util.function.Supplier;
    
    public class DiskSpaceMetrics {
    
        public static void main(String[] args) {
            // Create a Supplier that returns the disk free space in bytes
            Supplier<Number> diskFreeSpaceSupplier = () -> {
                File file = new File("/"); // Root directory
                return file.getFreeSpace(); // Return free space in bytes
            };
    
            // Register the Gauge with Metrics.globalRegistry
            registerDiskFreeSpaceGauge(diskFreeSpaceSupplier);
    
            // Check the value for demonstration
            Gauge gauge = Metrics.globalRegistry.find("disk.free.space").gauge();
            if (gauge != null) {
                System.out.println("Disk free space: " + gauge.value() + " bytes");
            } else {
                System.out.println("Gauge not found.");
            }
        }
    
        public static void registerDiskFreeSpaceGauge(Supplier<Number> supplier) {
            Gauge.builder("disk.free.space", supplier)
                    .description("Disk free space")
                    .baseUnit("bytes")
                    .register(Metrics.globalRegistry);
        }
    }
    

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Micrometer提供了许多内置的指标,可以用来监控Java应用程序的各种指标。这些内置的指标包括: - JVM指标:用于监控JVM的各种指标,如垃圾回收、内存使用、线程池等。 - HTTP客户端指标:用于监控HTTP客户端的各种指标,如请求延迟、请求成功率等。 - HTTP服务器指标:用于监控HTTP服务器的各种指标,如请求延迟、请求成功率等。 - 数据指标:用于监控数据的各种指标,如连接池状态、查询延迟等。 - 缓存指标:用于监控缓存的各种指标,如缓存命中率、缓存大小等。 要获取Micrometer内置的指标,你可以通过Maven或Gradle等构建工具将相应的添加到你的项目中。例如,要添加JVM指标,你可以在Maven中添加以下依赖: ```xml <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.6.3</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.6.3</version> </dependency> ``` 然后你就可以使用Micrometer内置的JVM监控器来监控JVM指标了,例如: ```java import io.micrometer.core.instrument.*; import io.micrometer.core.instrument.binder.jvm.*; public class JvmMonitor { public static void main(String[] args) { MeterRegistry registry = new SimpleMeterRegistry(); new ClassLoaderMetrics().bindTo(registry); new JvmMemoryMetrics().bindTo(registry); new JvmGcMetrics().bindTo(registry); new ProcessorMetrics().bindTo(registry); new JvmThreadMetrics().bindTo(registry); // ... } } ``` 在上面的示例代码中,我们使用了Micrometer内置的JVM监控器来监控JVM的各种指标,包括类加载器、内存使用、垃圾回收、CPU使用和线程池等。然后我们将这些监控器绑定到Micrometer的MeterRegistry中,使其可以被监控系统收集和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任错错

如果对您有帮助我很开心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值