作者Gitee地址 https://gitee.com/thciweicloud
作者项目 面包博客,一个微服务架构的前后端分离博客系统。
面包博客 一直想拥有一套自己的监控装置,并且能够自定义面板,足够直观展示运行情况统计数据
在SpringCloud Greenwich版开始推荐使用 micrometer 进行应用监控,之后推出了actuator进行统一的整合,当然从它的子依赖中可以看出micrometer的端倪,那么我们如何在微服务中进行应用的监控呢?
在SpringCloud Gateway中引入依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
配置yaml,使端口暴露出来
management:
endpoints:
web:
exposure:
include: '*'
直接启动服务即可
使用 actuator 获取这些端口,但数据是庞大复杂的,这不利于我们进行分析,我们可以通过 Prometheus 来将数据转为 JSON 格式,在控制面板通过图标进行监控和展示
这里有两种方法安装,下载官方tar包或者使用docker安装
docker run -d -it -p 9090:9090 --name prometheus bitnami/prometheus:latest
#root权限进入容器内部
docker exec -u 0 -it 容器名 /bin/bash
#修改配置
vi /conf/prometheus.yml
这里注意一个问题,docker内部没有vim,需要更新apt安装,但是国外源很慢,如果换源的话,最后完成安装要再换回官方源(因为安全协议)
mv /etc/apt/sources.list /etc/apt/sources.list.bak
cat <<EOF >/etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
EOF
apt update
apt install vim
mv /etc/apt/sources.list.bak /etc/apt/sources.list
配置yaml
metrics_path: '/actuator/prometheus' #监控地址
scrape_interval: 5s #间隔时间
static_configs:me
- targets: ['服务器ip:88'] #应用服务地址 如果使用localhost 需要替换为电脑ip
重启Prometheus
对于服务端,引入依赖
<dependency>
<groupId>io.micrometergroupId>
<artifactId>micrometer-registry-prometheusartifactId>
dependency>
配置yaml
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
prometheus:
enabled: true
metrics:
enabled: true
metrics:
export:
prometheus:
enabled: true
重启服务端,访问 Prometheus部署服务器ip:9090,仅仅进入是不够的,请检查状态status和语句是否可用
这里说一下如果使用 tar 包安装,还是修改yml文件,最后启动Prometheus
./prometheus --config.file=prometheus.yml
使用Prometheus仍然不完美,我们还需要一个dashboard进行整体的展示和管理,Grafana帮助我们解决了这个问题
在以下地址下载 rpm包 直接在服务器安装 Grafana 启动grafana
https://grafana.com/grafana/download
systemctl start grafana-server
访问 服务器ip:3000,在dashboard跟随流程
添加你需要的panel,在metrics brower选择语句