docker安装prometheus、grafana监控SpringBoot

1. 概述

最新有一个需求, 需要安装一个监控软件,对SpringBoot程序进行监控, 包括机器上cpu, 内存,jvm以及一些日志的统计。

这里需要介绍两款软件: prometheus 和 grafana

  • prometheus: 中文名称, 普罗米修斯,是一款基于时序数据库的开源监控告警系统。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统。
  • grafana: Grafana是一款广受欢迎的数据可视化和监控工具,其能够集成各种数据源。Grafana提供了强大的查询和过滤功能,可以轻松地将数据转换为漂亮、交互式的仪表盘。Grafana支持多种数据源,例如Prometheus、Elasticsearch、InfluxDB等,还能够集成多个数据源进行联合查询。通过Grafana,用户可以深入了解其基础设施和应用程序的运行情况,从而提高其可用性和性能。官网: What's new in Grafana v10.0 | Grafana documentation

这里采用docker compose的方式来安装 prometheus 和 grafana。

2. docker compose 安装prometheus、grafana

docker compose 实际上就是通过编写一个docker compose 文件,然后通过docker compose 命令,可以一次性安装多个软件并进行配置。老的版本使用 docker-compose 命令来进行操作的。在新的版本中,使用docker compose , 相当于成为了docker的一个子命令。这里不具体讲解docker compose的用法。安装好之后就可以进行操作了。

首先我们需要在一个指定的文件夹中,创建一个docker-compose.yml的配置文件,上面就是描述了我们需要安装的软件。下面是案例:

复制代码
version: "3.7"
services:
node-exporter:
 image: prom/node-exporter:latest
 container_name: "node-exporter0"
 ports:
   - "9100:9100"
 restart: always
prometheus:
 image: prom/prometheus:latest
 container_name: "prometheus0"
 restart: always
 ports:
   - "9090:9090"
 volumes:
   - "/opt/monitor_soft//prometheus/conf/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml "
grafana:
 image: grafana/grafana
 container_name: "grafana0"
 ports:
   - "3000:3000"
 restart: always

上面的配置文件中,代表我们要安装三个软件分别是node-exporter, prometheus和grafana。这里我们只用了后面两个,node-exporter是用来采集系统指标的,比如cpu, loa,filesystem,network等,如果需要可以使用,这里我也安装上了,只不过没有使用。

  • image: 代表镜像地址,从docker-hub上可以查询到
  • container_name: 容器名称
  • ports: 代表端口号的映射。 前面是宿主机的,后面是容器的
  • volumes: 文件的挂载目录。

用过docker的应该都会比较熟悉,就是把docker命令中一些常用配置,写到了docker-compose.yml中。

这里要注意,prometheus里的挂载目录很重要,其中挂载了一个配置文件prometheus.yml,后面需要使用这个配置文件,来配置监控的任务。

编写好这个文件之后,我们进入到这一层级的目录: 通过 docker compose up -d 的命令来启动。-d是代表后台运行,后台运行时看不到日志的。 所以我们可以先不加 -d ,看看日志有没有报错。 如果没有报错, 使用docker ps 查看容器的启动情况。 docker compose down 的方式,来停止这些服务。 没问题之后,再把 -d 加上后台启动。

3. 配置SpringBoot

由于我们需要监控SpringBoot项目, 所以我们的SpringBoot要打开相应的监控接口,prometheus会定时的调用接口,来获取相应的指标,并在grafana大屏上进行展示。这也被称为SpringBoot的端点(endPoints) 这里端点默认是关闭的,所以我们要进行打开。步骤如下.

  1. 引入依赖:

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
  2. 添加配置

在配置文件中打开prometheus 端点。

复制代码
management:
  endpoints:
    web:
      exposure:
        include: prometheus
  metrics:
    tags:
      application: ${spring.application.name}

上面的include: 后面的值 也可以配置成* ,代表打开所有端点。但是不是很建议。漏洞扫描的时候,有可能被扫描的。 开的越多,风险越大。management为一级配置。

改好之后,重新打包,发布皆可。 我们可以通过http://ip:port/actuator/prometheus 来查看是否配置成功。

3. Prometheus配置监控

SpringBoot的服务配置好了之后,我们需要给Prometheus来配置相应的任务,让他来定时抓取相应的指标数据,然后提供给grafana进行展示。 这个时候,我们就需要修改prometheus的配置文件了。就是我们之前在Docker中映射出来的文件。 prometheus.yml

复制代码
scrape_configs:
         - job_name: prometheus-springBoot
           metrics_path: /actuator/prometheus
           static_configs:
                 - targets: ['ip:port']
         - job_name: prometheus-springBoot2
           metrics_path: /actuator/prometheus
           static_configs:
                 - targets: ['ip:port']

上面就是一个简单的案例, 里面的ip和port 需要替换成真实的地址和端口。配置好了之后,重新启动prometheus. 这里面还可以配置其他信息, 不配置就是用的默认。具体配置大家可以参考一下官网。

4. grafana配置Prometheus

现在指标的数据,已经到了Prometheus,但是还需要在grafana上进行展示,所以需要配置一下grafana. 登录: ip:3000 端口号是在docker compose里配置好的。打开页面后,需要登录,默认账号是admin/admin 登录以后,会提示我们修改密码,尽量修改一下,否则很容器被其他人拿到。

首先我们配置一个数据源。

然后选择Prometheus:

然后要求我们填写Prometheus的相关配置,主要是ip和端口。可以起个自己喜欢的名字。

其他的都可以不用填。

点击最下面的 按钮, 看看是否连接成功,成功之后,就会显示添加成功。

然后添加一个面板:

面板,就是展示的一些指标。 本身grafana中提供了很多可以直接使用的模板,我们可以用现成的。

我们点击上面的加号:

填写 12900 就是已经预置好的springBoot 监控模板。点击import引入即可。

然后在dashboard中就会有一个springBoot APM Dashboard 点击就能进入面板。

面板中就会展示相关的信息,大功告成!

好了,关于本篇文章的内容,就介绍到这里了。

相关推荐
Mryan20057 分钟前
如何创建一个自行设计的nginx的Docker Image
运维·nginx·docker·容器
高hongyuan33 分钟前
K8S集群搭建 龙蜥8.9 Dashboard部署(2025年四月最新)
docker·云原生·容器·kubernetes
码哝小鱼2 小时前
docker swarm常用命令
java·docker·eureka
gsls2008083 小时前
使用dockerbuildx在x86机器上构建arm版docker镜像
arm开发·docker·容器
終不似少年遊*5 小时前
操作系统、虚拟化技术与云原生及云原生AI简述
docker·ai·云原生·容器·华为云·云计算·k8s
2401_8401922712 小时前
k8s的StorageClass存储类和pv、pvc、provisioner、物理存储的链路
docker·容器·kubernetes
小王不会写code15 小时前
Docker安装、配置Redis
redis·docker
SDL大华16 小时前
【备忘】在Docker中安装宝塔面板,实现环境隔离,又能快速迁移服务器环境
服务器·docker·容器
TC139818 小时前
docker 终端打不开rviz2界面,报错qt.qpa.xcb: could not connect to display
docker·容器
牛马小陈同学18 小时前
Kafka+Zookeeper从docker部署到spring boot使用完整教程
linux·spring boot·docker·zookeeper·kafka·prettyzoo·kafka-ui