1 简介
项目越做越发觉得, 任何一个系统上线, 运维监控都太重要了. 关于 Springboot 微服务的监控, 之前写过 [Springboot] 用 Springboot Admin 监控你的微服务应用 https://mp.weixin.qq.com/s/cZ8PKDkjVTO8OkPfXWzlDQ , 这个方案可以实时监控并提供告警提醒功能, 但不能记录历史数据, 无法查看过去 1 小时或过去 1 天等运维情况. 本文介绍 Prometheus + Grafana 的方法监控 Springboot 2.X, 实现美观漂亮的数据可视化.
2 Prometheus
Prometheus 是一套优秀的开源的监控, 报警和时间序列数据库组合系统, 在现在最常见的 Kubernetes 容器管理系统中, 通常会搭配 Prometheus 进行监控.
2.1 引入到 Springboot
将 Prometheus 引入依赖如下:
- <dependency>
- <groupId>io.micrometer</groupId>
- <artifactId>micrometer-registry-prometheus</artifactId>
- </dependency>
对于 Springboot, 要开启 Actuator, 并打开对应的 Endpoint:
- management.endpoints.web.exposure.include=*
- # 或者
- management.endpoints.Web.exposure.include=prometheus
启动 Springboot 后, 可以通过下面 URL 看能不能正确获取到监控数据:
localhost:8080/actuator/prometheus
获取数据成功, 说明 Springboot 能正常提供监控数据.
2.2 Docker 方式使用
为了方便, 使用 Docker 启动 Prometheus:
- # 拉取 docker 镜像
- docker pull prom/prometheus
准备配置文件 prometheus.YAML:
- scrape_configs:
- # 可随意指定
- - job_name: 'spring'
- # 多久采集一次数据
- scrape_interval: 15s
- # 采集时的超时时间
- scrape_timeout: 10s
- # 采集的路径
- metrics_path: '/actuator/prometheus'
- # 采集服务的地址, 设置成 Springboot 应用所在服务器的具体地址
- static_configs:
- - targets: ['hostname:9000','hostname:8080']
启动 docker 实例:
- # 端口为 9090, 指定配置文件
- docker run -d -p 9090:9090 -v ~/temp/prometheus.YAML:/etc/prometheus/prometheus.YAML prom/prometheus --config.file=/etc/prometheus/prometheus.YAML
2.3 测试与查看
成功启动后, 就可以打开网页查看了, 并且能图形化展示, URL 为 http://localhost:9090/.
如上图所示, 打开网页后, 随便选取一个对应的监控指标与参数, 点击 Execute 就可以查看了.
3 Grafana
Grafana 是一个开源的度量分析与可视化套件, 纯 JavaScript 开发的前端工具, 通过访问库 (如 InfluxDB), 展示自定义报表, 显示图表等. 它的 UI 十分灵活, 有丰富的插件和模板, 功能强大. 一般用在时序数据的监控方面.
3.1 Docker 安装与启动
- # 拉取镜像
- docker pull grafana/grafana
- # 运行实例
- docker run -d -p 3000:3000 grafana/grafana
启动成功后, 访问 http://localhost:3000 检查是否成功, 初始管理员账号密码为 admin/admin.
3.2 配置数据源
Grafana 展示数据, 则需要配置对应的数据源, 本文中配置之前安装启用的 Prometheus 数据源, 具体配置如下图所示:
需要注意的是 Access 要选 Browser 模式, 否则无法正常获取数据. 配置完成后, 点击 Save & Test 即可.
3.3 模板套用
能够获取数据后, 就可以自定义数据可视化展示了. 但如果自己一条指标一条指标的加, 就会很麻烦. 实际上, Grafana 提供了许多优秀的模板, 可以网页 https://grafana.com/grafana/dashboards 查找.
本文使用 Spring Boot 2.1 Statistics https://grafana.com/grafana/dashboards/10280 模板, 导入方法如下:
点击 + 号 --> Import --> 输入模板链接或 ID --> 点击 Load.
成功导入后, 就能监控数据了, 而且, 界面真的很好看:
4 总结
本文介绍了如何使用 Prometheus + Grafana 监控 Springboot 应用, 实际上, Prometheus + Grafana 十分强大, 值得花时间好好研究.
本文例子中软件版本信息如下:
- springboot.version=2.2.5
- micrometer-registry-prometheus=1.3.5
- prometheus.version=2.16
- grafana.version=6.7.0-beta1
来源: https://www.cnblogs.com/larrydpk/p/12563497.html