zoukankan      html  css  js  c++  java
  • 监控框架

    基于SpringBoot2.0+ Actuator metrics的监控(基于Oracle JDK9,G1)

    引言

    SpringBoot2在spring-boot-actuator中引入了micrometer,对1.x的metrics进行了重构,另外支持对接的监控系统也更加丰富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront)。本文以Prometheus为例阐述SpringBoot2.0的监控。

    springboot2.0接入

    pom.xml

    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
          <version>2.1.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <version>1.1.5<version>
    </dependency>
    

      

    application.yml

    #======================= prometheus配置 ========================================#
    management:
      endpoints:
        web:
          exposure:
            include: "*"
      metrics:
        tags:
          application: ${spring.application.name}

     

    注入bean

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
    
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName){
        return registry -> registry.config().commonTags("application", applicationName);
    }

    访问

    ip+端口/actuator/prometheus

    SpringBoot2.0 Actuator监控指标分析

    查看ip+端口/actuator/prometheus. 搜索指定关键字 注意关键字  jvm.memory.max  在搜索的时候应该是  jvm_memory_max

    序号参数参数说明是否监控监控手段重要度
    --- JVM ---      
    1 jvm.memory.max JVM最大内存      
    2 jvm.memory.committed JVM可用内存 展示并监控堆内存和Metaspace 重要
    3 jvm.memory.used JVM已用内存 展示并监控堆内存和Metaspace 重要
    4 jvm.buffer.memory.used JVM缓冲区已用内存      
    5 jvm.buffer.count 当前缓冲区数      
    6 jvm.threads.daemon JVM守护线程数 显示在监控页面  
    7 jvm.threads.live JVM当前活跃线程数 显示在监控页面;监控达到阈值时报警 重要
    8 jvm.threads.peak JVM峰值线程数 显示在监控页面  
    9 jvm.classes.loaded 加载classes数      
    10 jvm.classes.unloaded 未加载的classes数      
    11 jvm.gc.memory.allocated GC时,年轻代分配的内存空间      
    12 jvm.gc.memory.promoted GC时,老年代分配的内存空间      
    13 jvm.gc.max.data.size GC时,老年代的最大内存空间      
    14 jvm.gc.live.data.size FullGC时,老年代的内存空间      
    15 jvm.gc.pause GC耗时 显示在监控页面  
    --- TOMCAT ---      
    16 tomcat.sessions.created tomcat已创建session数      
    17 tomcat.sessions.expired tomcat已过期session数      
    18 tomcat.sessions.active.current tomcat活跃session数      
    19 tomcat.sessions.active.max tomcat最多活跃session数 显示在监控页面,超过阈值可报警或者进行动态扩容 重要
    20 tomcat.sessions.alive.max.second tomcat最多活跃session数持续时间      
    21 tomcat.sessions.rejected 超过session最大配置后,拒绝的session个数 显示在监控页面,方便分析问题  
    22 tomcat.global.error 错误总数 显示在监控页面,方便分析问题  
    23 tomcat.global.sent 发送的字节数      
    24 tomcat.global.request.max request最长时间      
    25 tomcat.global.request 全局request次数和时间      
    26 tomcat.global.received 全局received次数和时间      
    27 tomcat.servlet.request servlet的请求次数和时间      
    28 tomcat.servlet.error servlet发生错误总数      
    29 tomcat.servlet.request.max servlet请求最长时间      
    30 tomcat.threads.busy tomcat繁忙线程 显示在监控页面,据此检查是否有线程夯住  
    31 tomcat.threads.current tomcat当前线程数(包括守护线程) 显示在监控页面 重要
    32 tomcat.threads.config.max tomcat配置的线程最大数 显示在监控页面 重要
    33 tomcat.cache.access tomcat读取缓存次数      
    34 tomcat.cache.hit tomcat缓存命中次数      
    --- CPU... ---      
    35 system.cpu.count CPU数量      
    36 system.load.average.1m load average 超过阈值报警 重要
    37 system.cpu.usage 系统CPU使用率      
    38 process.cpu.usage 当前进程CPU使用率 超过阈值报警  
    39 http.server.requests http请求调用情况 显示10个请求量最大,耗时最长的URL;统计非200的请求量 重要
    40 process.uptime 应用已运行时间 显示在监控页面  
    41 process.files.max 允许最大句柄数 配合当前打开句柄数使用  
    42 process.start.time 应用启动时间点 显示在监控页面  
    43 process.files.open 当前打开句柄数 监控文件句柄使用率,超过阈值后报警 重要

    监控dashboard可使用grafana。

    常见运算符

         (a) = 等号 表示 精确匹配
        (b) != 表示 不等于提供的字符串
        (c) =~ 表示 正则匹配
        (d) !~ 表示 正则不匹配

    prometheus使用文档

    https://fuckcloudnative.io/prometheus/3-prometheus/functions.html

  • 相关阅读:
    Lilo的实现
    通过Bochs分析Lilo启动Linux内核的过程
    Linux内核代码布局
    Linux启动过程的内核代码分析
    Linux启动过程的C语言代码分析
    Linux操作系统中对于NTFS读取目录功能的实现
    Linux初始化的汇编代码
    Linux文件映射的反思
    Xen的概况
    安装debian总结以及编译linux内核
  • 原文地址:https://www.cnblogs.com/JiangWJ/p/11117475.html
Copyright © 2011-2022 走看看