Spring Cloud 微服务(19) --- Actuator(二)
运行时度量

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


运行时度量端点

metrics 端点

访问结果

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

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

http://localhost:8080/actuator/metrics

1
2
3
4
5
6
7
8
9
{
"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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{
"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.*tomcattomcat 相关内容
datasource.*数据源数据源链接数据等,仅当 Spring 上下文存在 DataSource 才会有这个信息

httptrace 端点

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"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/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"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/

1
2
3
{
"status": "UP"
}

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

Spring Boot 自带的监控指示器

健康指示器说明
noneApplicationHealthIndicator永远为 UP
dbDataSourceHealthIndicator如果数据库能连上,则内容为 UP 和数据库类型;否则为 DOWN
diskSpaceDiskSpaceHealthIndicator如果可用空间大于阈值,则内容为 UP 和可用磁盘内容;否则为 DOWN
jmsJmsHealthIndicator如果能连上消息代理,则为 UP 和 JMS 提供方名称;否则为 DOWN
mailMailHealthIndicator如果能连上邮件服务器,则内容为 UP 个邮件服务器主机、端口;否则为 DOWN
mongoMongoHealthIndicator如果能连上 MongoDb 服务器,则内容为 UP 和 MongoDB 服务器版本;否则为 DOWN
rabbitRabbitHealthIndicator如果能连上 Rabbit 服务器,则内容为 UP 和 Rabbit 版本号;否则为 DOWN
redisRedisHealthIndicator如果能连上 Redis 服务器,则内容为 UP 和 Redis 服务器版本;否则为 DOWN
solrSolrHealthIndicator如果能连上 Solr 服务器,则内容为 UP ;否则为 DOWN

关闭应用程序

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

1
2
3
4
5
6
7
{
"timestamp": "2019-02-13T07:46:54.614+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/actuator/shutdown"
}

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

1
2
3
4
management:
endpoint:
shutdown:
enabled: true

再次请求:

1
2
3
{
"message": "Shutting down, bye..."
}


获取应用信息

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

1
{}

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

1
2
3
4
info:
contect:
email: laiyy0728@gmail.com
phone: 18888888888

再次请求:

1
2
3
4
5
6
{
"contect": {
"email": "laiyy0728@gmail.com",
"phone": 18888888888
}
}


-------------本文结束 感谢您的阅读-------------
0%