SpringBoot - Actuator指标监控

引入自动配置

创建一个SpringBoot工程引入Actuator启动器。这里没有引入版本号是因为我们当前的SpringBoot工程的父工程为我们做了版本裁定,从pom文件中点进去查看你就会发现内置的对应的版本

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

开启指标监控

在配置文件中开启(application.properties),默认的情况下我们所有的指标在JMX的模式下才开启的,http模式下需要我们手动开启

#开启全部结点
management.endpoints.enabled-by-default= true  
#默认开启web的访问方式(JMX方式默认时全部开启的)
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

事例

接下来我们就能以http的方式访问我们SpringBoot工程的一些指标了

http://localhost:8080/actuator 查看当前有哪些指标可以查看

{
    "_links": {
        "self": {
            "href": "http://localhost:8080/actuator",
            "templated": false
        },
        "beans": {
            "href": "http://localhost:8080/actuator/beans",
            "templated": false
        },
        "caches-cache": {
            "href": "http://localhost:8080/actuator/caches/{cache}",
            "templated": true
        },
        "caches": {
            "href": "http://localhost:8080/actuator/caches",
            "templated": false
        },
        "health": {
            "href": "http://localhost:8080/actuator/health",
            "templated": false
        },
        "health-path": {
            "href": "http://localhost:8080/actuator/health/{*path}",
            "templated": true
        },
        "info": {
            "href": "http://localhost:8080/actuator/info",
            "templated": false
        },
        "conditions": {
            "href": "http://localhost:8080/actuator/conditions",
            "templated": false
        }
    .....省略很多.....
    }
}

http://localhost:8080/actuator/health 查看当前系统的健康状态

{
    "status": "UP",
    "components": {
        "db": {
            "status": "UP",
            "details": {
                "database": "MySQL",
                "validationQuery": "isValid()"
            }
        },
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 512094846976,
                "free": 376973795328,
                "threshold": 10485760,
                "exists": true
            }
        },
        "ping": {
            "status": "UP"
        }
    }
}

http://localhost:8080/actuator/beans 能查看当前工程中有哪些bean,以及是否是单实例、依赖关系、类型等等

从中我们就能得到类似的信息:sqlSessionTemplate这个实例是一个单实例,类型为:org.mybatis.spring.SqlSessionTemplate,依赖org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration和sqlSessionFactory

{
	"contexts": {
		"application": {
			"beans": {

                .....省略很多实例.....

				"sqlSessionTemplate": {
					"aliases": [],
					"scope": "singleton",
					"type": "org.mybatis.spring.SqlSessionTemplate",
					"resource": "class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]",
					"dependencies": [
						"org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration",
						"sqlSessionFactory"
					]
				}
			},
			"parentId": null
		}
	}
}

http://localhost:8080/actuator/conditions 查看当前系统配置类的情况、为什么配置成功了、为什么没有配置成功等等

{
	"contexts": {
		"application": {
			"positiveMatches": {
                .....省略很多....
				"DruidDataSourceAutoConfigure": [{
					"condition": "OnClassCondition",
					"message": "@ConditionalOnClass found required class 'com.alibaba.druid.pool.DruidDataSource'"
				}],
				"LocalDevToolsAutoConfiguration.RestartConfiguration#conditionEvaluationDeltaLoggingListener": [{
					"condition": "OnPropertyCondition",
					"message": "@ConditionalOnProperty (spring.devtools.restart.log-condition-evaluation-delta) matched"
				}]
			},
			"negativeMatches": {
                 .....省略很多....
				"RemoteDevToolsAutoConfiguration": {
					"notMatched": [{
						"condition": "OnPropertyCondition",
						"message": "@ConditionalOnProperty (spring.devtools.remote.secret) did not find property 'secret'"
					}],
					"matched": [{
						"condition": "OnClassCondition",
						"message": "@ConditionalOnClass found required classes 'javax.servlet.Filter', 'org.springframework.http.server.ServerHttpRequest'"
					}]
				}
			},
			"unconditionalClasses": [
                 .....省略很多....
				"org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration",
				"org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration"
			]
		}
	}
}

http://localhost:8080/actuator/configprops 获取系统配置文件信息

{
	"contexts": {
		"application": {
			"beans": {

        .....省略很多.....

				"spring.jdbc-org.springframework.boot.autoconfigure.jdbc.JdbcProperties": {
					"prefix": "spring.jdbc",
					"properties": {
						"template": {
							"fetchSize": -1,
							"maxRows": -1
						}
					},
					"inputs": {
						"template": {
							"fetchSize": {},
							"maxRows": {}
						}
					}
				},
				"spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties": {
					"prefix": "spring.jackson",
					"properties": {
						"serialization": {},
						"visibility": {},
						"parser": {},
						"deserialization": {},
						"generator": {},
						"mapper": {}
					},
					"inputs": {
						"serialization": {},
						"visibility": {},
						"parser": {},
						"deserialization": {},
						"generator": {},
						"mapper": {}
					}
				},
				"management.health.db-org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthIndicatorProperties": {
					"prefix": "management.health.db",
					"properties": {
						"ignoreRoutingDataSources": false
					},
					"inputs": {
						"ignoreRoutingDataSources": {}
					}
				},
			}
		}

端点和描述的功能可以查看SpringBoot的官方文档

https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.endpoints

开启与禁用

#我们可以选择性的开启、关闭对应的节点
management.endpoint.{节点名字}.enabled=false

猜你喜欢

转载自blog.csdn.net/qq_27062249/article/details/118362720