Prometheus + Grafana:一套 SpringBoot 应用的可视化监控方案!


点击加入:

后端技术内卷群,一起学习!

此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。

本文为Spring Boot 通过监控门面 micrometer 集成 Prometheus,再使用Grafana进行数据的实时展示

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASESpring 5.0.7-RELEASEDubbo 2.6.2

监控门面,概念同日志门面slf4j,均为基于外观设计模式所实现的规范,支持众多监控系统的应用程序Metrics外观

Micrometer

SpringBoot 2.x上已引入第三方实现的metrics Facade,默认与Micrometer集成,而Micrometer具有PrometheusMeterRegistry规范的实现。

Prometheus拉取及处理SpringBoot应用中的监控数据,最后通过Grafana提供的UI界面进行数据的实时展示。

更多关于Micrometer功能的信息,请参阅其参考文档,特别是概念部分:

  • https://micrometer.io/docs

metrics tag/label

关于metrics是否支持tag/label,则代表其metrics是否能够有多维度的支持。像statsd不支持tag,如果要区分多host的同一个jvm指标,则通常是通过添加prefix来解决,不过这个给查询统计以及后续扩展带了诸多的不变。

支持tag的好处就是可以进行多维度的统计和查询,以同一微服务但是不同实例的jvm指标来说,可以通过tag来添加host标识,这样监控系统就可以灵活根据tag查询过滤来查看不同主机粒度的,甚至是不同数据中心的粒度。

埋点

Maven依赖

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

<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>1.1.2</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埋点

servlet容器undertow

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

    public static void main(String[] args) {

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

    }
}

Prometheus

Prometheus是一个开源的监控系统,起源于SoundCloud。它由以下几个核心组件构成:

  • 数据爬虫: 根据配置的时间定期的通过HTTP抓去metrics数据。
  • time-series 数据库: 存储所有的metrics数据。
  • 简单的用户交互接口: 可视化、查询和监控所有的metrics。

Docker安装

docker run -d \
--name prometheus \
--net dubbo \
--hostname prom \
-p 9090:9090 \
-v /media/raid10/tmp/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus \
--config.file=/etc/prometheus/prometheus.yml

增加promtheus拉取数据的项目,需在挂载的配置文件prometheus.yml中增加对应的Endpoint设置并重启服务

Grafana

Grafana使你能够把来自不同数据源比如Elasticsearch, Prometheus, Graphite, influxDB等多样的数据以绚丽的图标展示出来。它也能基于你的metrics数据发出告警。当一个告警状态改变时,它能通知你通过email,slack或者其他途径。

Docker安装

docker run -d \
--name grafana \
--net dubbo \
-p 3000:3000 \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=secret" \
grafana/grafana

效果:

来源:tillend.blog.csdn.net/article/details/86768376


精彩推荐最全的java面试题库开源版的高仿 “ 微信 ”,吊炸天!

与其在网上拼命找题? 不如马上关注我们~

相关推荐

  • 高度近视父母1岁孩子近视600度;送餐小哥揪出113名吸贩毒人员;机器人液化后“越狱”;苏州一地火灾致6死28伤...|酷玩日爆
  • 我承认这次是美国赢了! | 每日一冷
  • 日本成立亚洲第一支太空军,到底想干什么?
  • 2022年,超5700家中国芯片公司消失
  • 一天18个小时离不开电子屏幕,谁来救救我的眼睛?
  • 中国风的“西餐叛徒”,要来整顿国内快餐行业了?
  • 北大校长的忠告火了!孩子14岁前,家长千万别在这件事上偷懒
  • 十几万库存!价格压至极低:超硬核的冲锋衣,99起
  • 韩检方提请批捕李在明;苏格兰“总统”斯特金宣布辞职;“毒气列车”事件受害居民讨说法,铁路公司因害怕未出面 | 每日大新闻
  • 联邦GNN综述与经典算法介绍
  • 从B站出发,用Chrome devTools performance分析页面如何渲染
  • Safari宣布支持声明式Shadow DOM
  • 开源中国宣布通过百度智能云接入百度文心一言能力,打造DevOps人工智能全系产品 / 服务
  • 多模数据库、“Serverless 化” | 开源数据库领域解读
  • 马斯克亿级粉丝帐号浏览量不到一千万,程序员被安排连夜改代码
  • 世界上第一个 BBS 诞生 | 历史上的今天
  • 数仓巨头在中国落幕,Teradata 退出国内市场!
  • ChatGPT创始人:普通人成功的13个建议
  • 使用 ChatGPT 、Stable Diffuison、React和NodeJS构建网站图库
  • ChatGPT 不仅是 AI 的成功,也是云计算的成功