SpringBoot 监控
我们一般常用 SpringBoot-Actuator + Prometheus + Grafana 对我们的应用运行情况做监控。
# SpringBoot-Actuator
# 介绍
致动器(actuator)是2018年公布的计算机科学技术名词。
Spring Boot Actuator提供了对SpringBoot应用程序(可以是生产环境)监视和管理的能力, 可以选择通过使用HTTP Endpoint或使用JMX来管理和监控SpringBoot应用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2
3
4
# Endpoints
Spring Boot Actuator 允许你通过Endpoints对Spring Boot进行监控和交互。
Spring Boot 内置的Endpoint包括(两种 Endpoint: WEB和JMX, web方式考虑到安全性默认只开启了/health):
ID | JMX | Web | Endpoint功能描述 |
---|---|---|---|
auditevents | Yes | No | 暴露当前应用的audit events (依赖AuditEventRepository) |
beans | Yes | No | Spring中所有Beans |
caches | Yes | No | 暴露可用的缓存 |
conditions | Yes | No | 展示configuration 和auto-configuration类中解析的condition,并展示是否匹配的信息. |
configprops | Yes | No | 展示所有的@ConfigurationProperties |
env | Yes | No | 展示环境变量,来源于ConfigurableEnvironment |
flyway | Yes | No | flyway数据迁移信息(依赖Flyway) |
health | Yes | Yes | 展示应用的健康信息 |
heapdump | N/A | No | (web应用时)hprof 堆的dump文件(依赖HotSpot JVM) |
httptrace | Yes | No | 展示HTTP trace信息, 默认展示前100个(依赖HttpTraceRepository) |
info | Yes | No | 应用信息 |
integrationgraph | Yes | No | 展示spring集成信息(依赖spring-integration-core) |
jolokia | N/A | No | (web应用时)通过HTTP暴露JMX beans(依赖jolokia-core) |
logfile | N/A | No | (web应用时)如果配置了logging.file.name 或者 logging.file.path,展示logfile内容 |
loggers | Yes | No | 展示或者配置loggers,比如修改日志的等级 |
liquibase | Yes | No | Liquibase 数据迁移信息(依赖Liquibase) |
metrics | Yes | No | 指标信息 |
mappings | Yes | No | @RequestMapping映射路径 |
prometheus | N/A | No | (web应用时)向prometheus暴露监控信息(依赖micrometer-registry-prometheus) |
quartz | Yes | No | 展示 quartz任务信息 |
scheduledtasks | Yes | No | 展示Spring Scheduled 任务信息 |
sessions | Yes | No | session信息 |
shutdown | Yes | No | 关闭应用 |
startup | Yes | No | 展示ApplicationStartup的startup步骤的数据(依赖通在SpringApplication配置BufferingApplicationStartup) |
threaddump | Yes | No | 线程dump |
当然你也可以自己定义暴露哪些endpoint,
比如JMX时:
management:
endpoints:
jmx:
exposure:
include: "health,info"
2
3
4
5
web时(*代表所有):
management:
endpoints:
web:
exposure:
include: "*"
exclude: "env,beans"
2
3
4
5
6
# Prometheus
Prometheus 是由前Google 工程师从2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。 Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。
1、多维数据模型:由度量名称和键值对标识的时间序列数据
2、PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
3、不依赖分布式存储,单个服务器节点可直接工作
4、基于HTTP的pull方式采集时间序列数据
5、推送时间序列数据通过PushGateway组件支持
6、通过服务发现或静态配置发现目标
7、多种图形模式及仪表盘支持(grafana)
8、适用于以机器为中心的监控以及高度动态面向服务架构的监控
# Grafana
Grafana 是一个分析平台,可用于查询和可视化数据,然后根据可视化结果创建和共享仪表板。 Grafana 提供一个Azure 数据资源管理器插件,通过该插件可连接到Azure 数据资源管理器并可视化数据。 本文介绍如何将Azure 数据资源管理器设置为Grafana 的数据源,然后将来自示例群集的数据可视化。
# 环境搭建
参考教程即可
Mac部署Prometheus + Grafana监控 (opens new window)
# 简单示例
samples - springboot-actuator (opens new window)
# 效果预览
我随便加了几个监控指标