介绍
- Actuator Spring Boot提供的一个功能强大的管理和监控工具.可以提供对应用程序的运行时信息、健康状况、性能指标、日志等进行监控和管理。
#Spring Boot 2.0的端点基础路径由“/”调整到”/actuator”下,如:/info调整为/actuator/info
/actuator/info 端点获取应用程序的自定义信息,例如版本号、构建信息等。
/actuator/threaddump端点获取应用程序当前的线程信息。
/actuator/metrics/memory.used端点获取应用程序当前的内存使用情况。
actuator/loggers端点获取和修改应用程序的日志级别。
/actuator/health:健康检查端点
/actuator/env:环境信息端点
/actuator/prometheus:暴露给 Prometheus 的监控数据端点
- Prometheus 是一个开源的监控系统和时间序列数据库,由 SoundCloud 开发并于 2016 年开源。它以其高效的数据抓取和存储能力而闻名,能够实时监控和报警,帮助开发人员及时发现和解决系统问题。
- Grafana 是一个开源的度量分析和可视化套件,可以与 Prometheus 无缝集成,生成直观的图表和仪表盘。
Actuator+Admin
SpringBoot Admin是一个在github上开源的社区项目,通过使用Actuator暴漏的端点来是实现项目的可视化监控和管理,可以作为中小公司健康监控系统的使用是没有太大问题的。
admin访问权限问题可以通过 security控制 参考:https://gitee.com/wenwang2000/com-spring-cloud-v2.git#com-spring-cloud-admin
###Admin服务端
maven
<!--admin服务端 版本要和客户端一致-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>x.x.x</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>x.x.x</version>
</dependency>
启动类增加
@EnableAdminServer
###Actuator接入
maven
<!--admin-client 版本要和客户端一致-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>x.x.x</version>
</dependency>
配置
spring:
application:
name: Actuator
# 指定admin-server的地址
boot:
admin:
client:
url: http://localhost:80
登录admin
查看服务详情
Actuator+Prometheus
如果公司有相关资源可以采用该方案
maven
<!--actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--这个依赖可以实现将actuator的数据转换成Prometheus可以识别的数据类型-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.1.3</version>
</dependency>
<!--aspectj-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
项目配置
management:
endpoints:
web:
exposure:
include: health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics
endpoint:
#健康检查
health:
#总是展示健康检查的详细信息
show-details: always
#启用之后,才能够正常调用 /actuator/prometheus 接口
prometheus:
enabled: true
metrics:
prometheus:
enabled: true
tags:
enabled: true
#应用程序名称,这个配置建议加上,Grafana官方提供的面板配置很多用了这个label
application: ${spring.application.name}
#自定义 actuator 监控信息
info:
app:
name: "@project.name@" #从pom.xml中获取
version: "@project.version@"
启动服务后访问:http://localhost:8080/actuator/prometheus 查看效果
Prometheus 采集服务数据
1、下载 https://prometheus.io/ 安装
2、核心的三个配置如下图
3、启动服务访问 http://127.0.0.1:9090/
效果如下:
Grafana可视化
1、下载 https://grafana.com/grafana/download
2、安装启动 http://localhost:3000/ 默认密码 admin/admin 首次登记需要修改
配置数据源
connections => datasources=>添加一个新的数据源
选择prometheus
配置服务地址
创建仪表盘
https://grafana.com/grafana/dashboards 查找需要的模版
下载模版json文件(点击进去)
Dashboard ==》Create Dashboard
上传下载的json文件
修改下名称+选择数据源
查看效果
监控mysql
安装 MySQL Exporter
https://github.com/prometheus/mysqld_exporter
配置MySQL Exporter
在 mysqld_exporter 目录中,创建一个配置文件 config.my.cnf
[client]
host=localhost
port=3306
user=your_mysql_user
password=your_mysql_password
运行 exporter
# --web.listen-address=":9104" 指定端口
./mysqld_exporter --config.my-cnf="config.my.cnf"
配置Prometheus
scrape_configs:
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104'] # 确保这里的端口与 mysqld_exporter 的端口一致
选择模版
工程代码参考:https://gitee.com/wenwang2000/com-spring-cloud-v2.git