

号称下一代可视化监控系统,结合SpringBoot使用,贼爽!
source link: https://segmentfault.com/a/1190000040343694
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

当面对一个复杂的系统时,我们往往需要监控工具来帮助我们解决一些性能问题。比如之前我们使用
SpringBoot Admin
来监控应用,从而获取到SpringBoot Actuator
暴露的指标信息。今天给大家介绍一个功能强大的监控工具Grafana,只要需要用到监控的地方,用它做可视化就对了!
SpringBoot实战电商项目mall(50k+star)地址:https://github.com/macrozheng/mall
Grafana简介
Grafana是一款开源的数据可视化和分析工具,不管你的指标信息存储在哪里,你都可以用它来可视化这些数据。同时它还具有告警功能,当指标超出指定范围时会提醒你。
Prometheus简介
Prometheus是一款时序数据库,可以简单理解为带时间的MySQL数据库。由于Grafana只能将数据转换成可视化图表,并没有存储功能,所以我们需要结合Prometheus这类时序数据库一起使用。
使用Docker安装Grafana和Prometheus无疑是最简单的,我们接下来将采用此种方式。
- 首先下载Grafana的Docker镜像;
docker pull grafana/grafana
- 下载完成后运行Grafana;
docker run -p 3000:3000 --name grafana \
-d grafana/grafana
- 接下来下载Prometheus的Docker镜像;
docker pull prom/prometheus
- 在
/mydata/prometheus/
目录下创建Prometheus的配置文件prometheus.yml
:
global:
scrape_interval: 5s
- 运行Prometheus,把宿主机中的配置文件
prometheus.yml
挂载到容器中去;
docker run -p 9090:9090 --name prometheus \
-v /mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-d prom/prometheus
- 至此安装完成,是不是很简单!可以通过如下地址访问Grafana,登录账号密码为
admin:admin
,访问地址:http://192.168.5.78:3000/
- 登录Grafana后显示界面如下;
- 其实Prometheus也是有可视化界面的,就是有点简陋,访问地址:http://192.168.5.78:9090/
Grafana已经安装完后,是时候来波实践了,接下来我们来介绍下使用Grafana来监控Linux系统和SpringBoot应用。
监控系统信息
使用
node_explorer
可以暴露Linux系统的指标信息,然后Prometheus就可以通过定时扫描的方式获取并存储指标信息了。
- 下载
node_explorer
的安装包,下载地址:https://prometheus.io/downloa...
- 这次我们直接把
node_explorer
安装到Linux服务器上(如果使用Docker容器安装,监控的会是Docker容器的指标信息),将下载的安装包解压到指定目录,并修改文件夹名称:
cd /mydata
tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64 node_exporter
- 进入解压目录,使用如下命令运行
node_explorer
,服务将运行在9100
端口上;
cd node_exporter
./node_exporter >log.file 2>&1 &
- 使用
curl
命令访问获取指标信息接口,获取到信息表示运行成功;
curl http://localhost:9100/metrics
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 2175
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0
- 接下来修改Prometheus的配置文件
prometheus.yml
,创建一个任务定时扫描node_explorer
暴露的指标信息;
scrape_configs:
- job_name: node
static_configs:
- targets: ['192.168.5.78:9100']
- 重启Prometheus容器,可以通过
加号->Dashboard
来创建仪表盘;
- 当然你还可以选择去Grafana的仪表盘市场下载一个Dashboard,市场地址:https://grafana.com/grafana/d...
- 这里选择了
Node Exporter Full
这个仪表盘,记住它的ID,访问地址:https://grafana.com/grafana/d...
- 选择导入Dashboard并输入ID,最后点击
Load
即可;
- 选择数据源为Prometheus,最后点击
Import
;
- 导入成功后就可以在Grafana中看到实时监控信息了,是不是够炫酷!
监控SpringBoot应用
监控SpringBoot应用需要依靠
actuator
及micrometer
,通过暴露actuator
的端点,Prometheus可以定时获取并存储指标信息。
- 修改项目的
pom.xml
文件,添加actuator
及micrometer
依赖;
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 集成micrometer,将监控数据存储到prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
</dependencies>
- 修改应用配置文件
application.yml
,通过actuator
暴露监控端口/actuator/prometheus
;
management:
endpoints:
web:
exposure:
# 暴露端点`/actuator/prometheus`
include: 'prometheus'
metrics:
tags:
application: ${spring.application.name}
- 在监控SpringBoot应用之前,我们需要先运行一个SpringBoot应用,使用如下命令运行即可;
docker run -p 8088:8088 --name mall-tiny-grafana \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/mall-tiny-grafana/logs:/var/logs \
-e TZ="Asia/Shanghai" \
-d mall-tiny/mall-tiny-grafana:1.0-SNAPSHOT
- 修改Prometheus的配置文件
prometheus.yml
,创建一个任务定时扫描actuator
暴露的指标信息,这里需要注意下,由于SpringBoot应用运行在Docker容器中,需要使用docker inspect mall-tiny-grafana |grep IPAddress
来获取容器IP地址;
scrape_configs:
# 采集任务名称
- job_name: 'mall-tiny-grafana'
# 采集时间间隔
scrape_interval: 5s
# 采集超时时间
scrape_timeout: 10s
# 采集数据路径
metrics_path: '/actuator/prometheus'
# 采集服务的地址
static_configs:
- targets: ['172.17.0.5:8088']
- 我们可以通过Prometheus的可视化界面,来确定Prometheus是否能获取到指标信息;
- 同样,我们可以从仪表盘市场导入仪表盘,访问地址:https://grafana.com/grafana/d...
- 导入成功后就可以在Grafana中看到SpringBoot实时监控信息了,果然够炫酷!
通过对Grafana的一波实践,我们可以发现,使用Grafana来进行数据可视化的过程是这样的:首先我们得让被监控方将指标信息暴露出来,然后用Prometheus定时获取并存储指标信息,最后将Prometheus配置为Grafana的可视化数据源。
项目源码地址
https://github.com/macrozheng...
本文 GitHub https://github.com/macrozheng/mall-learning 已经收录,欢迎大家Star!
Recommend
-
96
新思路设计可视化大型微服务监控系统
-
45
前言 得益于 HTML5 WebGL 技术的成熟,从技术上对工控管理的可视化,数据可视化变得简单易行!完成对工控设备的管理效率,资源管理,风险管理等的大幅度提高,同时也对国家工业4.0计划作出有力响应! 如本案例所示,是一个基于 HTML5 WebGL 技术实
-
30
README.MD PrometheusAlert 简介
-
14
Jitwxs 搜索SpringBoot Metrics 监控系统(4)——使用指标Jitwxs|发表于2020-11-15|更新于2020-12-19|
-
11
Jitwxs 搜索SpringBoot Metrics 监控系统(3)——搭建框架Jitwxs|发表于2020-11-15|更新于2020-12-19|
-
11
Jitwxs 搜索SpringBoot Metrics 监控系统(2)——快速起步Jitwxs|发表于2020-11-14|更新于2020-12-19|
-
8
前后端分离开发是当今开发的主流。本篇文章从零开始,一步步使用SpringBoot结合Vue来实现日常开发中最常见的登录功能,以及登录之后对用户的管理功能。通过这个例子,可以快速入门SpringBoot+Vue前后端分离的开发。 前言 1、...
-
4
18:07 BlockSec上线以太坊闪电贷监控系统Flashloan monitor,以提供闪电贷数据可视化服务 专注于DeFi安全的BlockSec团队宣布上线以太坊闪电贷监控系统Flashloan monitor,该系统能提供以太坊链上闪电贷数据可视化服...
-
4
号称下一代互联网的 Web3.0 到底是个啥?非著名程序员公众号「非著名程序员」主理人,程序员/复业者/生涯规划师...
-
6
超越iTerm! 号称下一代终端神器,功能贼强大! 程序员的一生,用的最多的两个工具,一个...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK