Grafana可视化监控系统结合SpringBoot使用


Posted in Redis onApril 19, 2022

当面对一个复杂的系统时,我们往往需要监控工具来帮助我们解决一些性能问题。比如之前我们使用SpringBoot Admin来监控应用,从而获取到SpringBoot Actuator暴露的指标信息。今天给大家介绍一个功能强大的监控工具Grafana,只要需要用到监控的地方,用它做可视化就对了!

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可视化监控系统结合SpringBoot使用

  • 登录Grafana后显示界面如下;

Grafana可视化监控系统结合SpringBoot使用

  • 其实Prometheus也是有可视化界面的,就是有点简陋,访问地址:http://192.168.5.78:9090/

Grafana可视化监控系统结合SpringBoot使用

使用

Grafana已经安装完后,是时候来波实践了,接下来我们来介绍下使用Grafana来监控Linux系统和SpringBoot应用。

监控系统信息

使用node_explorer可以暴露Linux系统的指标信息,然后Prometheus就可以通过定时扫描的方式获取并存储指标信息了。

  • 下载node_explorer的安装包,下载地址:https://prometheus.io/download/#node_exporter

Grafana可视化监控系统结合SpringBoot使用

  • 这次我们直接把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可视化监控系统结合SpringBoot使用

  • 当然你还可以选择去Grafana的仪表盘市场下载一个Dashboard,市场地址:https://grafana.com/grafana/dashboards

Grafana可视化监控系统结合SpringBoot使用

  • 这里选择了Node Exporter Full这个仪表盘,记住它的ID,访问地址:https://grafana.com/grafana/dashboards/1860

Grafana可视化监控系统结合SpringBoot使用

  • 选择导入Dashboard并输入ID,最后点击Load即可;

Grafana可视化监控系统结合SpringBoot使用

  • 选择数据源为Prometheus,最后点击Import

Grafana可视化监控系统结合SpringBoot使用

  • 导入成功后就可以在Grafana中看到实时监控信息了,是不是够炫酷!

Grafana可视化监控系统结合SpringBoot使用

监控SpringBoot应用

监控SpringBoot应用需要依靠actuatormicrometer,通过暴露actuator的端点,Prometheus可以定时获取并存储指标信息。

  • 修改项目的pom.xml文件,添加actuatormicrometer依赖;

<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是否能获取到指标信息;

Grafana可视化监控系统结合SpringBoot使用

  • 同样,我们可以从仪表盘市场导入仪表盘,访问地址:https://grafana.com/grafana/dashboards/14370

Grafana可视化监控系统结合SpringBoot使用

  • 导入成功后就可以在Grafana中看到SpringBoot实时监控信息了,果然够炫酷!

Grafana可视化监控系统结合SpringBoot使用

总结

通过对Grafana的一波实践,我们可以发现,使用Grafana来进行数据可视化的过程是这样的:首先我们得让被监控方将指标信息暴露出来,然后用Prometheus定时获取并存储指标信息,最后将Prometheus配置为Grafana的可视化数据源。

参考资料

项目源码地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-grafana

到此这篇关于使用Grafana监控Redis的文章就介绍到这了!

Redis 相关文章推荐
Redis如何一键部署脚本
Apr 12 Redis
5分钟教你docker安装启动redis全教程(全新方式)
May 29 Redis
redis中lua脚本使用教程
Nov 01 Redis
linux下安装redis图文详细步骤
Dec 04 Redis
Redis调用Lua脚本及使用场景快速掌握
Mar 16 Redis
redis击穿 雪崩 穿透超详细解决方案梳理
Mar 17 Redis
Redis监控工具RedisInsight安装与使用
Mar 21 Redis
redis sentinel监控高可用集群实现的配置步骤
Apr 01 Redis
Redis如何实现验证码发送 以及限制每日发送次数
Apr 18 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 Redis
Redis实现分布式锁的五种方法详解
Jun 14 Redis
Redis官方可视化工具RedisInsight安装使用教程
Redis实现一个账号只能登录一个设备
Apr 19 #Redis
Redis如何实现验证码发送 以及限制每日发送次数
Apr 18 #Redis
Redis实战高并发之扣减库存项目
Redis中key的过期删除策略和内存淘汰机制
解决 Redis 秒杀超卖场景的高并发
redis 解决库存并发问题实现数量控制
You might like
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
JS location几个方法小姐
2008/07/09 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
js实现打字小游戏
2019/12/17 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python实现单机五子棋
2020/08/28 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
大学生社团活动总结
2014/04/26 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫