dubbo-spring-boot-actuator 提供 Production-Ready 特性:
健康檢查
控制斷點
外部化配置
版本
目前,dubbo-spring-boot-actuator將支持Spring Boot 2.x和1.x兩個版本:
0.2.x是Spring Boot 2.x的主流發行版
0.1.x是用於維護Spring Boot 1.x的舊版本
與Maven整合
您可以通過向pom.xml添加以下依賴項,將最新的dubbo-spring-boot-actuator引入到您的項目中,
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-actuator</artifactId>
<version>0.2.0</version>
</dependency>
還依賴
<!-- dubbo actuator 依賴spring boot actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
如果您的項目無法解決依賴關係,請嘗試添加以下存儲庫:
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
健康檢查
dubbo-spring-boot-actuator支持標準的Spring Boot健康指示器作爲生產就緒特性,它將聚合到Spring Boot的健康中,並在運行MVC (Spring Web MVC)和JMX (Java管理擴展)的HealthEndpoint上導出(如果它們都可用的話)。
Web端點:/health
假設Spring Boot Web應用程序未指定management.server.port,您可以通過Web Client訪問http://localhost:8080/actuator/health,你可以可以專門爲訪問端點設置端口號,通過management.server.port設置。獲得JSON格式的響應,如下所示:
{
"status": "UP",
"dubbo": {
"status": "UP",
"memory": {
"source": "management.health.dubbo.status.defaults",
"status": {
"level": "OK",
"message": "max:3641M,total:383M,used:92M,free:291M",
"description": null
}
},
"load": {
"source": "management.health.dubbo.status.extras",
"status": {
"level": "OK",
"message": "load:1.73583984375,cpu:8",
"description": null
}
},
"threadpool": {
"source": "management.health.dubbo.status.extras",
"status": {
"level": "OK",
"message": "Pool status:OK, max:200, core:200, largest:0, active:0, task:0, service port: 12345",
"description": null
}
},
"server": {
"source": "[email protected]()",
"status": {
"level": "OK",
"message": "/192.168.1.103:12345(clients:0)",
"description": null
}
}
}
// ignore others
}
在上面的例子中,內存,負載,線程池和服務器是Dubbo的內置StatusCheckers。 Dubbo允許應用程序擴展StatusChecker的SPI。
默認,內存和負載將添加到Dubbo的HealthIndicator中,它可以被外部化配置StatusChecker的默認值覆蓋。
JMX端點:健康
Health是一個JMX (Java管理擴展)端點,具有ObjectName org.springframework.boot:type=Endpoint,name=Health,它可以由JMX代理管理,例如。JDK工具:jconsole等等。
內置StatusCheckers
META-INF /dubbo/internal/com.alibaba.dubbo.common.status.StatusChecker聲明內置StatusCheckers如下:
memory=com.alibaba.dubbo.common.status.support.MemoryStatusChecker
load=com.alibaba.dubbo.common.status.support.LoadStatusChecker
spring=com.alibaba.dubbo.config.spring.status.SpringStatusChecker
datasource=com.alibaba.dubbo.config.spring.status.DataSourceStatusChecker
server=com.alibaba.dubbo.rpc.protocol.dubbo.status.ServerStatusChecker
threadpool=com.alibaba.dubbo.rpc.protocol.dubbo.status.ThreadPoolStatusChecker
registry=com.alibaba.dubbo.registry.status.RegistryStatusChecker
作爲StatusChecker名稱的屬性鍵可以是外部化配置中的management.health.dubbo.status.*的有效值。
端點
Actuator端點dubbo支持Actuator端點:
ID | Enabled | HTTP URI | HTTP Method | Description | Content Type |
---|---|---|---|---|---|
dubbo |
true |
/actuator/dubbo |
GET |
Exposes Dubbo's meta data | application/json |
dubbo-properties |
true |
/actuator/dubbo/properties |
GET |
Exposes all Dubbo's Properties | application/json |
dubbo-services |
false |
/dubbo/services |
GET |
Exposes all Dubbo's ServiceBean |
application/json |
dubbo-references |
false |
/actuator/dubbo/references |
GET |
Exposes all Dubbo's ReferenceBean |
application/json |
dubbo-configs |
true |
/actuator/dubbo/configs |
GET |
Exposes all Dubbo's *Config |
application/json |
dubbo-shutdown |
false |
/actuator/dubbo/shutdown |
POST |
Shutdown Dubbo services | application/json |
# Dubbo Endpoints Default Properties is loaded by @PropertySource with low order,
# those values of properties can be override by higher PropertySource
# @see DubboEndpointsAutoConfiguration
# Set enabled for Dubbo Endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-shutdown.enabled = false
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-services.enabled = false
management.endpoint.dubbo-references.enabled = false
management.endpoint.dubbo-properties.enabled = true
# "management.endpoints.web.base-path" should not be configured in this file
# Re-defines path-mapping of Dubbo Web Endpoints
management.endpoints.web.path-mapping.dubbo-shutdown = dubbo/shutdown
management.endpoints.web.path-mapping.dubbo-configs = dubbo/configs
management.endpoints.web.path-mapping.dubbo-services = dubbo/services
management.endpoints.web.path-mapping.dubbo-references = dubbo/references
management.endpoints.web.path-mapping.dubbo-properties = dubbo/properties
Web端點
/actuator/dubbo
/dubbo暴露了Dubbo的元數據:
{
"timestamp": 1516623290166,
"versions": {
"dubbo-spring-boot": "0.2.0"
"dubbo": "2.6.2"
},
"urls": {
"dubbo": "https://github.com/alibaba/dubbo",
"google-group": "http://groups.google.com/group/dubbo",
"github": "https://github.com/dubbo/dubbo-spring-boot-project",
"issues": "https://github.com/dubbo/dubbo-spring-boot-project/issues",
"git": "https://github.com/dubbo/dubbo-spring-boot-project.git"
}
}
/actuator/dubbo/properties
/actuator/dubbo/properties從Spring Boot外化配置(a.k.a PropertySources)公開所有Dubbo的屬性:
{
"dubbo.application.id": "dubbo-provider-demo",
"dubbo.application.name": "dubbo-provider-demo",
"dubbo.application.qos-enable": "false",
"dubbo.application.qos-port": "33333",
"dubbo.protocol.id": "dubbo",
"dubbo.protocol.name": "dubbo",
"dubbo.protocol.port": "12345",
"dubbo.registry.address": "N/A",
"dubbo.registry.id": "my-registry",
"dubbo.scan.basePackages": "com.alibaba.boot.dubbo.demo.provider.service"
}
JSON的結構是簡單的Key-Value格式,鍵是屬性名稱,值是屬性值。
/actuator/dubbo/services
/actuator/dubbo/services公開在Spring ApplicationContext中通過<dubbo:service />或@Service聲明的所有Dubbo的ServiceBean
{
"[email protected]#defaultDemoService": {
"accesslog": null,
"actives": null,
"cache": null,
"callbacks": null,
"class": "com.alibaba.dubbo.config.spring.ServiceBean",
"cluster": null,
"connections": null,
"delay": null,
"document": null,
"executes": null,
"export": null,
"exported": true,
"filter": "",
"generic": "false",
"group": null,
"id": "com.alibaba.boot.dubbo.demo.api.DemoService",
"interface": "com.alibaba.boot.dubbo.demo.api.DemoService",
"interfaceClass": "com.alibaba.boot.dubbo.demo.api.DemoService",
"layer": null,
"listener": "",
"loadbalance": null,
"local": null,
"merger": null,
"mock": null,
"onconnect": null,
"ondisconnect": null,
"owner": null,
"path": "com.alibaba.boot.dubbo.demo.api.DemoService",
"proxy": null,
"retries": null,
"scope": null,
"sent": null,
"stub": null,
"timeout": null,
"token": null,
"unexported": false,
"uniqueServiceName": "com.alibaba.boot.dubbo.demo.api.DemoService:1.0.0",
"validation": null,
"version": "1.0.0",
"warmup": null,
"weight": null,
"serviceClass": "com.alibaba.boot.dubbo.demo.provider.service.DefaultDemoService"
}
}
關鍵是ServiceBean的Bean名稱,ServiceBean的屬性組成值。
/actuator/dubbo/references
/actuator/dubbo/references公開所有通過@Reference on Field或Method聲明的Dubbo的ReferenceBean:
{
"private com.alibaba.boot.dubbo.demo.api.DemoService com.alibaba.boot.dubbo.demo.consumer.controller.DemoConsumerController.demoService": {
"actives": null,
"cache": null,
"callbacks": null,
"class": "com.alibaba.dubbo.config.spring.ReferenceBean",
"client": null,
"cluster": null,
"connections": null,
"filter": "",
"generic": null,
"group": null,
"id": "com.alibaba.boot.dubbo.demo.api.DemoService",
"interface": "com.alibaba.boot.dubbo.demo.api.DemoService",
"interfaceClass": "com.alibaba.boot.dubbo.demo.api.DemoService",
"layer": null,
"lazy": null,
"listener": "",
"loadbalance": null,
"local": null,
"merger": null,
"mock": null,
"objectType": "com.alibaba.boot.dubbo.demo.api.DemoService",
"onconnect": null,
"ondisconnect": null,
"owner": null,
"protocol": null,
"proxy": null,
"reconnect": null,
"retries": null,
"scope": null,
"sent": null,
"singleton": true,
"sticky": null,
"stub": null,
"stubevent": null,
"timeout": null,
"uniqueServiceName": "com.alibaba.boot.dubbo.demo.api.DemoService:1.0.0",
"url": "dubbo://localhost:12345",
"validation": null,
"version": "1.0.0",
"invoker": {
"class": "com.alibaba.dubbo.common.bytecode.proxy0"
}
}
}
關鍵是@Reference Field或Method的字符串表示,ReferenceBean的屬性組成值。
/actuator/dubbo/configs
actuator / dubbo / configs暴露所有Dubbo的* Config:
{
"ApplicationConfig": {
"dubbo-consumer-demo": {
"architecture": null,
"class": "com.alibaba.dubbo.config.ApplicationConfig",
"compiler": null,
"dumpDirectory": null,
"environment": null,
"id": "dubbo-consumer-demo",
"logger": null,
"name": "dubbo-consumer-demo",
"organization": null,
"owner": null,
"version": null
}
},
"ConsumerConfig": {
},
"MethodConfig": {
},
"ModuleConfig": {
},
"MonitorConfig": {
},
"ProtocolConfig": {
"dubbo": {
"accepts": null,
"accesslog": null,
"buffer": null,
"charset": null,
"class": "com.alibaba.dubbo.config.ProtocolConfig",
"client": null,
"codec": null,
"contextpath": null,
"dispatcher": null,
"dispather": null,
"exchanger": null,
"heartbeat": null,
"host": null,
"id": "dubbo",
"iothreads": null,
"name": "dubbo",
"networker": null,
"path": null,
"payload": null,
"port": 12345,
"prompt": null,
"queues": null,
"serialization": null,
"server": null,
"status": null,
"telnet": null,
"threadpool": null,
"threads": null,
"transporter": null
}
},
"ProviderConfig": {
},
"ReferenceConfig": {
},
"RegistryConfig": {
},
"ServiceConfig": {
}
}
關鍵是Dubbo *Config類的簡單名稱,值是*Config bean的名稱屬性映射。
/actuator/dubbo/shutdown
/ actuator / dubbo / shutdown關閉Dubbo的組件,包括註冊表,協議,服務和引用:
{
"shutdown.count": {
"registries": 0,
"protocols": 1,
"services": 0,
"references": 1
}
}
“shutdown.count”表示Dubbo組件的關閉計數,該值表示已關閉的組件數。
外部化配置
默認的StatusChecker
management.health.dubbo.status.defaults是用於設置StatusCheckers名稱的屬性名稱,其值允許爲多個值,例如
management.health.dubbo.status.defaults = registry,memory,load
默認值
默認值是
management.health.dubbo.status.defaults = memory,load
StatusChecker額外功能
management.health.dubbo.status.extras用於覆蓋[StatusChecker的默認值],多個值由逗號分隔:
management.health.dubbo.status.extras = load,threadpool
健康檢查已啓用
management.health.dubbo.enabled是一個啓用配置來打開或關閉運行狀況檢查功能,其默認值爲true。
如果您要禁用運行狀況檢查,則應將management.health.dubbo.enabled應用於false:
management.health.dubbo.enabled = false
端點啓用
Dubbo Spring Boot提供執行器端點,但其中一些是禁用的。 如果您要啓用它們,請將以下屬性添加到外部配置中:
# Enables Dubbo All Endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-shutdown.enabled = true
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-services.enabled = true
management.endpoint.dubbo-references.enabled = true
management.endpoint.dubbo-properties.enabled = true
源碼地址:https://gitee.com/niugangxy/dubbo
JAVA程序猿成長之路
分享學習資源,學習方法,記錄程序員生活。