docker安装prometheus、grafana监控SpringBoot

2024-09-04 10:36

本文主要是介绍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:latestcontainer_name: "node-exporter0"ports:- "9100:9100"restart: always
prometheus:image: prom/prometheus:latestcontainer_name: "prometheus0"restart: alwaysports:- "9090:9090"volumes:- "/opt/monitor_soft//prometheus/conf/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml "
grafana:image: grafana/grafanacontainer_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>
  1. 添加配置

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

management:endpoints:web:exposure:include: prometheusmetrics: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-springBootmetrics_path: /actuator/prometheusstatic_configs:- targets: ['ip:port']- job_name: prometheus-springBoot2metrics_path: /actuator/prometheusstatic_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 点击就能进入面板。

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

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

这篇关于docker安装prometheus、grafana监控SpringBoot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135782

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为