美文网首页
Spring Cloud 学习(18) --- Actuato

Spring Cloud 学习(18) --- Actuato

作者: laiyy0728 | 来源:发表于2019-03-05 11:25 被阅读0次

    运行时度量端点,包括: /metrics、/trace、/threaddump、/health 等


    运行时度量端点

    metrics 端点

    访问结果

    metrics 端点主要用于在项目运行中,查看计数器、度量器等,如:当前可用内存、空闲内存等

    访问:http://localhost:8080/actuator/metrics ,可用查看所有的计数器、度量器名称, 访问 http://localhost:8080/actuator/metrics/{name} 可以查看具体信息

    http://localhost:8080/actuator/metrics

    {
        "names": [
            "jvm.memory.max",
            "jvm.threads.states",
            "jvm.gc.pause",
            "http.server.requests",
            "jvm.gc.memory.promoted"
        ]
    }
    

    http://localhost:8080/actuator/metrics/jvm.memory.max

    {
        "name": "jvm.memory.max",   // 名称
        "description": "The maximum amount of memory in bytes that can be used for memory management",    // 介绍
        "baseUnit": "bytes",    // 单位
        "measurements": [{
            "statistic": "VALUE",
            "value": 5579472895     // 大小,单位 bytes
        }],
        "availableTags": [{
                "tag": "area",
                "values": [
                    "heap",
                    "nonheap"
                ]
            },
            {
                "tag": "id",
                "values": [
                    "Compressed Class Space",
                    "PS Survivor Space",
                    "PS Old Gen",
                    "Metaspace",
                    "PS Eden Space",
                    "Code Cache"
                ]
            }
        ]
    }
    

    http://localhost:8080/actuator/metrics/http.server.requests

    {
        "name": "http.server.requests",
        "description": null,
        "baseUnit": "seconds",   
        "measurements": [{
                "statistic": "COUNT",
                "value": 28   // 发起的请求总数
            },
            {
                "statistic": "TOTAL_TIME",
                "value": 1.9647074519999999   // 总时长
            },
            {
                "statistic": "MAX",
                "value": 0.002769728
            }
        ],
        "availableTags": [{
                "tag": "exception",
                "values": [
                    "None"
                ]
            },
            {
                "tag": "method",
                "values": [
                    "GET"
                ]
            },
            {
                "tag": "uri",
                "values": [     // 访问过的 uri
                    "/actuator/caches",
                    "/**/favicon.ico",
                    "/actuator/threaddump",
                    "/actuator/env/{toMatch}",
                    "/actuator/loggers",
                    "/actuator/mappings",
                    "/actuator/auditevents",
                    "/**",
                    "/actuator/env",
                    "/actuator/metrics/{requiredMetricName}",
                    "/actuator",
                    "/actuator/beans",
                    "/actuator/httptrace",
                    "/actuator/loggers/{name}",
                    "/actuator/scheduledtasks",
                    "/actuator/conditions",
                    "/actuator/heapdump",
                    "/actuator/metrics"
                ]
            },
            {
                "tag": "outcome",
                "values": [
                    "CLIENT_ERROR",
                    "SUCCESS"
                ]
            },
            {
                "tag": "status",
                "values": [
                    "404",
                    "200"
                ]
            }
        ]
    }
    

    metrics 端点介绍

    前缀 分类 介绍
    jvm.gc.* 垃圾收集器 已经发生过的垃圾收集次数、消耗时间,使用与标记-请求垃圾收集器和并行垃圾收集器java.lang.management.GarbageCollectorMXBean
    jvm.memory.* 内存相关 分配给应用程序的内存数量和空闲的内容数量等 java.lang.Runtime
    jvm.classes.* 类加载器 JVM 类加载器加载与卸载的类的数量 java.lang.management.ClassLoadingMXBean
    process.*、system.cpu 系统 系统信息,如:处理器数量java.lang.Runtime、运行时间java.lang.management.RuntimeMXBean、平均负载java.lang.management.OperatingSystemMXBean
    jvm.threads.* JVM 线程池 JVM 线程、守护线程数量、峰值等 java.lang.management.ThreadMXBean
    tomcat.* tomcat tomcat 相关内容
    datasource.* 数据源 数据源链接数据等,仅当 Spring 上下文存在 DataSource 才会有这个信息

    httptrace 端点

    httptrace 端点主要用于报告所有的 web 请求的详细信息,包括:请求方法、路径、时间戳、头信息等。http://localhost:8080/actuator/httptrace/

    {
        "traces": [{
            "timestamp": "2019-02-13T06:29:35.039Z",            // 时间戳
            "principal": null,
            "session": null,    
            "request": {        // 请求
                "method": "GET",        // 请求方式
                "uri": "http://localhost:8080/actuator/httptrace/",     // 请求路径
                "headers": {        // 请求 Headers
                    "cookie": [     
                        "yfx_c_g_u_id_10000001=_ck19021309350014873926766957773; yfx_f_l_v_t_10000001=f_t_1550021700485__r_t_1550021700485__v_t_1550021700485__r_c_0"
                    ]
                },
                "remoteAddress": null       // 远程地址
            },
            "response": {   // 响应
                "status": 200,      // 响应码
                "headers": {        // 响应 Header
                    "Content-Type": [
                        "application/vnd.spring-boot.actuator.v2+json;charset=UTF-8"
                    ]
                }
            },
            "timeTaken": 36     // 用时
        }]
    }
    

    需要注意,/httptrace 端点只能显示最近的 100 个请求信息,其中也包含对 /httptrace 端点自己的请求。

    threaddump 端点

    threaddump 端点可以查看的应用程序的每个线程,其中包含线程的阻塞状态、所状态等,http://localhost:8080/actuator/threaddump/

    {
        "threads": [{
                "threadName": "DestroyJavaVM",      // 线程名称
                "threadId": 44,     // 线程 id
                "blockedTime": -1,  
                "blockedCount": 0,
                "waitedTime": -1,
                "waitedCount": 0,
                "lockName": null,
                "lockOwnerId": -1,
                "lockOwnerName": null,
                "inNative": false,
                "suspended": false,
                "threadState": "RUNNABLE",  // 线程状态
                "stackTrace": [],       // 跟踪栈
                "lockedMonitors": [],
                "lockedSynchronizers": [],
                "lockInfo": null
            }
        ]
    }
    

    health 端点

    health 端点:查看当前应用程序的运行状态。 http://localhost:8080/actuator/health/

    {
        "status": "UP"
    }
    

    health 端点在特定情况下,会有额外的信息,如:登录状态、数据库状态等

    Spring Boot 自带的监控指示器

    健康指示器 说明
    none ApplicationHealthIndicator 永远为 UP
    db DataSourceHealthIndicator 如果数据库能连上,则内容为 UP 和数据库类型;否则为 DOWN
    diskSpace DiskSpaceHealthIndicator 如果可用空间大于阈值,则内容为 UP 和可用磁盘内容;否则为 DOWN
    jms JmsHealthIndicator 如果能连上消息代理,则为 UP 和 JMS 提供方名称;否则为 DOWN
    mail MailHealthIndicator 如果能连上邮件服务器,则内容为 UP 个邮件服务器主机、端口;否则为 DOWN
    mongo MongoHealthIndicator 如果能连上 MongoDb 服务器,则内容为 UP 和 MongoDB 服务器版本;否则为 DOWN
    rabbit RabbitHealthIndicator 如果能连上 Rabbit 服务器,则内容为 UP 和 Rabbit 版本号;否则为 DOWN
    redis RedisHealthIndicator 如果能连上 Redis 服务器,则内容为 UP 和 Redis 服务器版本;否则为 DOWN
    solr SolrHealthIndicator 如果能连上 Solr 服务器,则内容为 UP ;否则为 DOWN

    关闭应用程序

    关闭应用程序可以使用 /actuator/shutdown 端点,使用 POST 请求 http://localhost:8080/actuator/shutdown

    {
        "timestamp": "2019-02-13T07:46:54.614+0000",
        "status": 404,
        "error": "Not Found",
        "message": "No message available",
        "path": "/actuator/shutdown"
    }
    

    这是因为为了保护应用程序,shutdown 端点没有打开的原因,需要打开 shutdown 端点

    management:
      endpoint:
        shutdown:
          enabled: true
    

    再次请求:

    {
        "message": "Shutting down, bye..."
    }
    

    获取应用信息

    获取应用信息使用 /actuator/info 端点,默认的响应是:

    {}
    

    可以通过带 info 前缀的属性,向 info 端点的响应增加内容,如:

    info:
      contect:
        email: laiyy0728@gmail.com
        phone: 18888888888
    

    再次请求:

    {
        "contect": {
            "email": "laiyy0728@gmail.com",
            "phone": 18888888888
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring Cloud 学习(18) --- Actuato

          本文链接:https://www.haomeiwen.com/subject/fmjnuqtx.html