springboot 应用监控方案

本贴最后更新于 1812 天前,其中的信息可能已经东海扬尘

简述

最近在学习 SpringBoot 应用监控方面知识,现在大多数的服务都是分布式架构,跟踪和监视这些服务非常重要,在此做下整理。
监控指标主要包括以下方面:

  • 服务可用性
  • 容错性
  • 安全
  • 数据收集

系统组成

  1. 监控数据存储(时间序列数据库),有 InfluxDB, TimescaleDB, Prometheus
  2. 面板(显示),将存储的数据显示。
  3. 数据拉取获推送组件。

这是最基本的组成,除此之外,我们还可以集成很多其他组件,如报警组件。

实现

在 Spring Boot 应用中, Spring Boot Actuator 提供了监控数据的获取功能,开箱即用。因此我们只需要在监控数据存储和可视化显示上选择方案。

监控数据存储方案

1.InfuxDB

Influxdb 是一个时间序列数据库,用于处理高负载读写。
1.安装 InfuxDB

docker run -p 8086:8086 -v /tmp:/var/lib/influxdb influxdb

2.应用程序添加依赖

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-influx</artifactId>
</dependency>

3.配置文件

management:
    metrics:
        export:
            influx:
                db: customDbName
                password: mySecret
                uri: http://localhost:8086
                user-name: myUserName

2.Prometheus

普罗米修斯是一个开源的监控和警报工具包,由 SoundCloud 编写。它的工作方式与 infloxdb 略有不同。与其配置应用程序将度量发布到普罗米修斯,不如配置普罗米修斯定期轮询应用程序。
1、添加依赖

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

接下来,我们必须将在 Prometheus.yml 文件中进行配置来轮询应用程序。

global:
  scrape_interval: 60s
  evaluation_interval: 60s
scrape_configs:
  - job_name: 'demo'
    metrics_path: "/actuator/prometheus"
    scrape_interval: 5s
    static_configs:
      - targets: ['129.204.148.xx:9999']                                      

启动普罗米修斯,命令如下。

docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus \
--config.file=/etc/prometheus/prometheus.yml

Prometheus 提供了自己的可视化工具来查看收集到的指标,通过 URL http://ip:9090/访问。
image.png

3.Graphite

Graphite 是另一个开源的时间序列数据库。它的体系结构比我们看到的其他数据库稍微复杂一些,但是使用 Docker,在本地运行一个实例很简单。
1、运行 Graphite

docker run -d \
 --name graphite \
 --restart=always \
 -p 80:80 \
 -p 2003-2004:2003-2004 \
 -p 2023-2024:2023-2024 \
 -p 8125:8125/udp \
 -p 8126:8126 \
 graphiteapp/graphite-statsd

2、添加依赖、配置文件
pom 添加依赖:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-graphite</artifactId>
</dependency>

application.properties 添加如下配置:

management:
    metrics:
        export:
            graphite:
                host: 127.0.0.1
                port: 2004

和普罗米修斯一样,Graphite 也有自己的可视化界面。访问地址:http://localhost/。
image.png

可视化工具

一旦我们有了一个在我们的 Spring Boot 应用程序之外存储度量的解决方案,下一个决定就是我们希望如何可视化数据。Grafana 通常比大多数内置的可视化工具提供更好的配置和更好的警报。 使用插件可以很容易地扩展它,并且有许多预先构建的指示板可以导入以快速创建我们自己的可视化。

1.Grafana

Grafana 是一个开源分析和监控工具。 它可以连接到前面提到的所有数据库,以及许多其他数据库。
1、安装

docker run -d -p 3000:3000 grafana/grafana  

我们现在可以通过 URL http://localhost:3000/ 访问 Grafana 主页。随后只需我们配置数据源就 OK。我们可以导入面板 JSON 文件,无需自己手动添加配置。如下图所示。链接地址

image.png

image.png

其他方案

Spring Boot Admin

具体实现--》sprongboot Admin
spring boot admin 是 Springcloud 全家桶的一员,它连接到 spring boot 实例、聚合节点等。但是,/metrics 端点并不是沿着时间线监视的,因此没有时间序列的监控数据。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...