乐趣区

关于java:号称下一代可视化监控系统结合SpringBoot使用贼爽

当面对一个简单的零碎时,咱们往往须要监控工具来帮忙咱们解决一些性能问题。比方之前咱们应用 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 利用须要依附 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 是否能获取到指标信息;

  • 同样,咱们能够从仪表盘市场导入仪表盘,拜访地址:https://grafana.com/grafana/d…

  • 导入胜利后就能够在 Grafana 中看到 SpringBoot 实时监控信息了,果然够炫酷!

总结

通过对 Grafana 的一波实际,咱们能够发现,应用 Grafana 来进行数据可视化的过程是这样的:首先咱们得让被监控方将指标信息裸露进去,而后用 Prometheus 定时获取并存储指标信息,最初将 Prometheus 配置为 Grafana 的可视化数据源。

参考资料

  • Grafana 官网文档:https://grafana.com/docs/graf…
  • node-exporter 的应用:https://prometheus.io/docs/gu…

我的项目源码地址

https://github.com/macrozheng…

本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家 Star!

退出移动版