SpringBoot可视化监控
监控可是很重要的呢!
主要是通过Actuator将监控数据暴露出来,Prometheus定时去拉取数据,最后由Grafana将数据展示出来
食用方法↓(大误
SpringBoot端
1. 添加Maven依赖
1 | <dependency> |
PS:这里有点小坑,SpringBoot1和SpringBoot2因为版本问题,需要引入的prometheus依赖并不相同,SpringBoot1需要引入simpleclient_spring_boot依赖,而SpringBoot2需要引入micrometer-registry-prometheus。
2. 在配置文件中添加配置
启用/actuator/prometheus端点,提供给Prometheus获取数据的接口1
management.endpoints.web.exposure.include=health,info,env,metrics,prometheus
3. 启动SpringBoot工程
启动成功后可通过http://IP:PORT/actuator/prometheus 查看是否暴露接口成功
若成功则会展示相关监控数据:1
2
3
4
5
6
7
8
9
10# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",id="PS Survivor Space",} 1.6233256E7
jvm_memory_used_bytes{area="heap",id="PS Old Gen",} 1.380156E7
jvm_memory_used_bytes{area="heap",id="PS Eden Space",} 2.16967112E8
jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 5.278692E7
jvm_memory_used_bytes{area="nonheap",id="Code Cache",} 1.3591936E7
jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 6942664.0
# HELP tomcat_sessions_active_current_sessions
...
Prometheus端
1. 安装Prometheus
这里使用docker拉取prometheus镜像
docker pull prom/prometheus
2. 配置prometheus.yml文件
这里我将prometheus.yml文件建在/docker/prometheus文件夹内
1 | cd /docker/prometheus |
将下方配置复制到prometheus.yml文件中,注意最下方的地址需改成SpringBoot工程的相关地址配置1
2
3
4
5
6
7
8
9
10
11
12global:
scrape_interval: 10s
scrape_timeout: 10s
evaluation_interval: 10m
scrape_configs:
- job_name: spring-boot
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /actuator/prometheus
static_configs:
- targets:
- 192.168.0.106:8080
3. 启动Prometheus
docker run -p 9090:9090 -d -v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --privileged=true prom/prometheus
PS:这里这里,有个docker的坑。启动的时候报了读取/etc/prometheus/prometheus.yml文件Permission denied的错误(Docker挂载主机目录Docker访问出现Permission denied)。原因是CentOS7中的安全模块selinux把权限禁掉了。百度了一下有三种解决办法:
- 在运行容器的时候,给容器加特权,及加上 –privileged=true 参数:
docker run -i -t -v /soft:/soft –privileged=true 686672a1d0cc /bin/bash - 临时关闭selinux: setenforce 0
- 添加selinux规则,改变要挂载的目录的安全性文本
这里我使用了第一种最简单的办法~
启动成功之后,可通过http://IP:9090 进行访问,会展示相关页面
Grafana端
1. 安装Grafana
这里使用docker拉取Grafana镜像
docker pull grafana/grafana
2. 运行Grafana
docker run --name grafana -d -p 3000:3000 grafana/grafana
启动完成后可通过http://IP:3000 进行访问,默认账号admin,默认密码admin
3. 在Grafana中配置Prometheus
①添加数据源
输入Prometheus的访问端口,点击Save&Test,若测试通过则完成数据源配置
②添加DashBoard
点击主页左上角HOME图标,可以自行配置(点击New dashboard),也可以添加Grafana社区已有的模板(点击Import dashboard,通过选择相应的模板,在界面中输入模板的ID即可倒入)
可通过Prometheus所提供的相关端点进行配置,可在http://IP:9090/graph中进行查看相应端点名称
效果图:
参考资料:
http://www.spring4all.com/article/19892
https://blog.csdn.net/MyHerux/article/details/80667524
https://www.liangzl.com/get-article-detail-127550.html
https://blog.csdn.net/rznice/article/details/52170085?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task