微服務框架(二十四)Prometheus 監控埋點

此係列文章將會描述Java框架Spring Boot、服務治理框架Dubbo、應用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等開源框架,其中穿插着Spring Boot中日誌切面等技術的實現,然後通過gitlab-CI以持續集成爲Docker鏡像。

本文爲Prometheus 監控埋點

本系列文章中所使用的框架版本爲Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Prometheus + Grafana

SpringBoot2.x上已引入第三方實現的metrics Facade,默認與micrometer集成,而micrometer具有PrometheusMeterRegistry規範的實現。

Prometheus通過Micrometer拉取及處理SpringBoot應用中的監控數據,最後通過Grafana提供的UI界面進行數據的實時展示。

快速集成

Parent POM

版本1.1.2+後支持

<parent>
    <groupId>com.linghit</groupId>
    <artifactId>dubbo.common.pom</artifactId>
    <version>1.1.2</version>
</parent>

Maven依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
    <version>${springboot.version}</version>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>${micrometer.version}</version>
</dependency>

application配置

需開啓server.portmanagement.port;若未定義management.port則會默認使用server.port

# dubbo endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-properties.enabled = true
management.health.dubbo.status.defaults = memory
management.health.dubbo.status.extras = load,threadpool

# metrics
management.metrics.export.prometheus.enabled = true
management.metrics.export.prometheus.step = 1m
management.metrics.export.prometheus.descriptions = true
management.web.server.auto-time-requests = true
management.endpoints.web.exposure.include = env,health,info,metrics,threaddump,prometheus,dubbo,dubbo-configs,dubbo-properties

Web埋點

Spring boot支持Web及JMX(Java管理拓展)的健康指標監控,JMX的方式不適合於可視化監控。現有使用Prometheus拉取監控數據,並以Grafana進行數據可視化展示的方案更優

此處Spring Boot Actuator通過REST API提供對應用系統的自省和監控的集成功能

依賴

spring bootdubboactuator起步依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
    <version>${springboot.version}</version>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>${micrometer.version}</version>
</dependency>

application配置

management.metrics.export.prometheus.enabled=true
management.metrics.export.prometheus.step=1m
management.metrics.export.prometheus.descriptions=true
management.web.server.auto-time-requests=true
management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump

web容器

undertow的servlet容器

@SpringBootApplication
@EnableAspectJAutoProxy(proxyTargetClass = true)
@ComponentScan("com.linghit")
public class Starter {

    public static void main(String[] args) {

        new SpringApplicationBuilder(Starter.class)
                .web(WebApplicationType.SERVLET).run(args);

    }

}

Log4j2 Metrics

Spring Boot 2.1.0.RELEASE纔開始支持Log4j2 metrics的自動裝配,低版本只支持Logback metrics,欲使用需升級版本或自實現

詳見Spring Boot 2.1.0

Dubbo埋點

dubbo-spring-boot-actuator提供生產就緒(Production-Ready)特性 (比如健康檢查,OPS端點,及外部化配置)

詳見Dubbo Spring Boot Production-Ready

依賴

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-actuator</artifactId>
    <version>${dubbo.springboot.version}</version>
</dependency>

application配置

# dubbo endpoints
management.endpoint.dubbo.enabled = true
management.endpoint.dubbo-configs.enabled = true
management.endpoint.dubbo-properties.enabled = true
management.health.dubbo.status.defaults = memory
management.health.dubbo.status.extras = load,threadpool

注:需在management.endpoints.web.exposure.include添加對應的endpoints,如:dubbo,dubbo-configs,dubbo-properties

Docker埋點

要將Docker守護程序配置爲Prometheus目標,您需要指定 metrics-address。最好的方法是通過daemon.json,默認情況下位於以下位置之一。(如果該文件不存在,請創建它)

  • Linux:/etc/docker/daemon.json
  • Windows Server:C:\ProgramData\docker\config\daemon.json
  • Docker Desktop for Mac / Docker Desktop for Windows:單擊工具欄中的Docker->Preferences->Daemon->高級

如果文件當前爲空,請粘貼以下內容:

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章