微服务框架(二十四)Prometheus 监控埋点

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。本文为Prometheus 监控埋点本系列文章中所使用的框架版本为Spring Boot 2.0.3-REL...

  此系列文章将会描述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
}

Kong埋点

可用指标

  • Status codes:上游服务返回的HTTP状态码。这些服务适用于所有服务和所有服务。
  • Latencies Histograms:在Kong测量的延迟:
    • Request:Kong和上游服务为请求服务所花费的总时间。
    • Kong:Kong为路由请求并运行所有已配置的插件所花费的时间。
    • Upstream:上游服务响应请求所花费的时间。
  • Bandwidth:流经Kong的总带宽(出口/入口)。该指标可用于每项服务,也可作为所有服务的总和。
  • DB reachability:值为0或1的仪表类型,表示Kong节点是否可以到达DB。
  • Connections:各种Nginx连接指标,如活动,读取,写入和已接受连接的数量。

详见Kong prometheus插件

Elasticsearch埋点

es-prometheus监控插件:
elasticsearch_exporter

相关文章
|
5月前
|
Prometheus 监控 Cloud Native
云原生监控实战:Prometheus+Grafana快速搭建指南
云原生监控实战:Prometheus+Grafana快速搭建指南
|
5月前
|
存储 Prometheus 监控
OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
本方案基于Prometheus构建OSS监控系统,涵盖架构设计、指标采集、可视化、告警及性能优化,助力企业实现高可用、低成本的自建监控体系。
572 1
|
6月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
530 79
|
5月前
|
存储 监控 Cloud Native
云原生监控实战:Prometheus+Grafana打造RDS多维度预警体系
本方案构建了基于Prometheus与Thanos的云原生RDS监控体系,涵盖数据采集、存储、可视化与告警全流程。支持10万+QPS采集、90%存储压缩,具备&lt;30秒告警延迟能力。通过自定义指标与智能预警策略,显著提升故障发现效率,实现分钟级响应。
440 5
|
5月前
|
Prometheus 监控 Cloud Native
|
4月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
513 0
|
6月前
|
人工智能 数据可视化 JavaScript
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
Juggle是国内首个开源的微服务编排框架,专注于解决企业微服务进程中接口重复开发、系统对接复杂等问题。它提供零代码、低代码和AI增强功能,通过可视化拖拽快速组装简单API为复杂接口,支持多协议、多语言脚本和流程多版本管理。相比国外框架如Conductor,Juggle更贴合国内需求,具备高效开发、企业级可靠性及信创适配等优势,助力企业实现敏捷创新与数字化转型。
颠覆开发效率!国内首个微服务编排框架Juggle开源啦!
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
1130 3
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
732 3
|
8月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
459 22

热门文章

最新文章