The World Best ST.

SpringBoot可视化监控

字数统计: 847阅读时长: 3 min
2020/03/07 Share

SpringBoot可视化监控

监控可是很重要的呢!
主要是通过Actuator将监控数据暴露出来,Prometheus定时去拉取数据,最后由Grafana将数据展示出来
食用方法↓(大误

SpringBoot端

1. 添加Maven依赖

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</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
2
cd /docker/prometheus
vi prometheus.yml

将下方配置复制到prometheus.yml文件中,注意最下方的地址需改成SpringBoot工程的相关地址配置

1
2
3
4
5
6
7
8
9
10
11
12
global:
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把权限禁掉了。百度了一下有三种解决办法:

  1. 在运行容器的时候,给容器加特权,及加上 –privileged=true 参数:
    docker run -i -t -v /soft:/soft –privileged=true 686672a1d0cc /bin/bash
  2. 临时关闭selinux: setenforce 0
  3. 添加selinux规则,改变要挂载的目录的安全性文本

这里我使用了第一种最简单的办法~

启动成功之后,可通过http://IP:9090 进行访问,会展示相关页面
Prometheus界面

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
Grafana界面

3. 在Grafana中配置Prometheus

①添加数据源

Grafana添加数据源

Grafana添加数据源

输入Prometheus的访问端口,点击Save&Test,若测试通过则完成数据源配置

②添加DashBoard

点击主页左上角HOME图标,可以自行配置(点击New dashboard),也可以添加Grafana社区已有的模板(点击Import dashboard,通过选择相应的模板,在界面中输入模板的ID即可倒入)
Grafana添加dashboard

Grafana添加模板dashboard

可通过Prometheus所提供的相关端点进行配置,可在http://IP:9090/graph中进行查看相应端点名称

Grafana自定义dashboard

效果图:

Grafana效果图

Grafana效果图

参考资料:
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

CATALOG
  1. 1. SpringBoot可视化监控
    1. 1.1. SpringBoot端
      1. 1.1.1. 1. 添加Maven依赖
      2. 1.1.2. 2. 在配置文件中添加配置
      3. 1.1.3. 3. 启动SpringBoot工程
    2. 1.2. Prometheus端
      1. 1.2.1. 1. 安装Prometheus
      2. 1.2.2. 2. 配置prometheus.yml文件
      3. 1.2.3. 3. 启动Prometheus
    3. 1.3. Grafana端
      1. 1.3.1. 1. 安装Grafana
      2. 1.3.2. 2. 运行Grafana
      3. 1.3.3. 3. 在Grafana中配置Prometheus
        1. 1.3.3.1. ①添加数据源
        2. 1.3.3.2. ②添加DashBoard