参考:Prometheus+node_exporter+grafana打造spring boot项目的监控系统 - 简书
0. 先看监控的效果
0.1,监控了一台机器的负荷情况:
0.2,监控了一个springboot服务的负荷情况
1. 介绍
Prometheus:
一个监控系统,集成在项目中可以对项目运行的一些情况进行监控,并将监控的数据存储在文件中,并可以通过自带的页面端查询到这些数据。
node_exporter:
一个监控系统,集成在服务器中,可以监控主机的运行状况,可以将node_exporter集成到Prometheus的管理端,通过Prometheus提供的页面查询到相应的数据
grafana:
一个显示页面,比Prometheus自带的更好看,更形象,可以通过给grafana配置Prometheus的数据源,让grafana显示Prometheus的数据。当然除了Prometheus,它也支持其他的数据源
安装顺序:
-
先安装node_exporter+配置springboot项目
-
安装配置Prometheus
-
安装配置grafana
2. 安装配置node_exporter,监控Linux机器负荷
2.1,下载:“node_exporter-1.3.1.linux-amd64.tar”文件解压运行node_exporter。
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -zxf node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64/
nohup ./node_exporter & #启动node_exporter,默认9100端口
netstat -ntpl #查看当前端口,默认端口9100
2.2,配置开机自动启动
$ vi /etc/rc.local
//在最下方添加如下命令,保存即可
cd /home/vmuser/apps/node_export/node_exporter-1.3.1.linux-amd64
nohup ./node_exporter &
启动后,可以看到默认端口9100
3.springboot项目配置监控
3.1springboot加入micrometer
pom里加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
3.2,application类里加入如下代码
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
return (registry) -> registry.config().commonTags("application", applicationName);
}
3.3,application.yml里加配置
#开放所有页面节点 默认只开启了health、info两个节点
management:
endpoints:
web:
exposure:
include: '*'
metrics:
tags:
application: ${spring.application.name}
3.4,访问actuator
如果有登录拦截之类的,把 /**/actuator/** 的路径放开
启动后,访问
http://ip:port/xxxx/actuator/ 可以看到有哪些可以访问的指标路径
4. 安装配置Prometheus,并监控Prometheus自身
4.1,去官网下载压缩包,解压安装
4.2,docker安装
配置prometheus.yml文件:/opt/prometheus/prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['局域网地址:端口'] #prometheus的端口9090,局域网地址才行!!
labels:
instance: prometheus
- job_name: Linux
static_configs:
- targets: ['局域网地址:端口'] #node_export,默认9100
- job_name: 'flower' #springboot服务名
metrics_path: '/actuator/prometheus' # endpoint
scrape_interval: 15s # 信息收集间隔10秒
static_configs:
- targets: ['局域网地址:端口'] # springboot项目地址+端口
#- targets: ['192.168.120.60:9101','192.168.120.61:9101','192.168.120.62:9101']
## label
4.3,docker安装+启动。
# 下载Prometheus镜像
docker pull prom/prometheus
# 创建Prometheus容器,默认端口9090,这里映射一下端口,方便管理
docker run -d --name=prometheus -p 9191:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
#查看所有服务
docker ps -a
8a94619f4803 prom/prometheus "/bin/prometheus --c…" 4 days ago Up 2 days 0.0.0.0:9191->9090/tcp prometheus
#设置随容器启动,自动启动
docker update --restart=always 8a94619f4803
4.4,启动后查看
5.安装配置Grafana
5.1,docker安装
# 下载镜像
docker pull grafana/grafana
# 创建容器
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
grafana/grafana
5.2,访问 http://机器ip:3000,默认账号密码都是:admin
第一次登录,会要求修改密码。。。
6.Grafana配置使用Prometheus
6.1,配置prometheus数据源
菜单:
http://局域网地址:prometheus端口
6.2,配置监控面板dashboards
可以配置多个监控模版,监控机器、springboot项目、redis,等等。
菜单:
输入模版号:8919
常用模版:dashboard的网址https://grafana.com/dashboards
主机监控展示看板 Node-exporter 导入 8919 模板
容器监控展示看板 cadvisor-exporter 导入193 模板
应用监控展示看板 jmx-exporter 导入8563 模板
Redis监控展示看板 Redis-exporter 导入2751 模板
进程监控展示看板 Process-exporter 导入249 模板
然后载入模版,选择数据源为刚刚创建的prometheus
创建完后,进入面板首页,就可以看到配置的面板了。
查看一个【1 Node Exporter for Prometheus Dashboard CN 20201010】
,就是我们开头提到的一个面板图片了:
7.Prometheus自己的监控界面
7.1,http://ip:端口/targets ,yml里配置的几个job,在这里查看状态:
7.2,切换到 http://ip:端口/graph 页面
查看微服务使用内存,
输入:jvm_gc_memory_allocated_bytes_total{application="flower"}
flower是微服务名称
8.使用wrk压测该接口
开4个线程,并发2000,测试100秒。
wrk -t4 -c2000 -d100s http://127.0.0.1:7070/flower
到此结束,其他用法有待探索。