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 点击就能进入面板。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523274.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

10分钟了解OPPO中间件容器化实践

背景 OPPO是一家全球化的科技公司&#xff0c;随着公司的快速发展&#xff0c;业务方向越来越多&#xff0c;对中间件的依赖也越来越紧密&#xff0c;中间件的集群的数量成倍数增长&#xff0c;在中间件的部署&#xff0c;使用&#xff0c;以及运维出现各种问题。 1.中间件与业…

遥控器显示分别对应的无人机状态详解!!

1. 电量显示 遥控器电量&#xff1a;遥控器上通常会显示自身的电池电量&#xff0c;以提醒用户及时充电。 无人机电量&#xff1a;部分高端遥控器还会显示无人机的电池电量&#xff0c;以进度条或百分比的形式表示&#xff0c;帮助用户了解无人机的续航能力。 2. 飞行模式与…

【C语言从不挂科到高绩点】09-作业练习-循环结构02

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程,前面课程中给大家讲解了一些常规的知识点,那么本次课,我们一起来练习挑战一下!! 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同…

【C++题解】1002 - 编程求解1+2+3+...+n

问题一&#xff1a;1002 - 编程求解123…n 类型&#xff1a;简单循环 题目描述&#xff1a; 编程求解下列式子的值&#xff1a; S123⋯n。 输入&#xff1a; 输入一行&#xff0c;只有一个整数 n(1≤n≤1000) 。 输出&#xff1a; 输出只有一行&#xff08;这意味着末尾有…

R语言 | 文件读取

一、文件读取 -scan()函数 scan(file “”, what double(), nmax -1, n -1, sep “ ”)&#xff0c;file" " 的双引号里写文件地址&#xff0c;what写读入的数据类型&#xff0c;如果文件有好几种类型&#xff0c;可以啥也不写&#xff08;what" "&…

如何解决Vue中给data中的对象属性添加一个新的属性时响应式不生效的问题?

vue2的响应式原理使用的是对象代理去实现的&#xff0c;对象代理中有一个get和set方法&#xff0c;当我们访问对象的时候就会触发get方法&#xff0c;当我们对对象中的值进行修改时会触发set方法。但是当我们给对象添加一个新的属性时对象代理是检测不到的&#xff0c;所以就会…

通用文字识别如何通过C#进行调用?(三)

一、什么是通用文字识别&#xff1f; 通用文字识别是一种技术&#xff0c;它能够将图像中的文字转换为可编辑的文本格式。 二、通用文字识别适用哪些场景&#xff1f; 例如&#xff1a;商业场景 1.广告数据分析&#xff1a;可以识别户外广告、宣传海报上的文字内容&#xf…

archery 1.9.1 二开-本地环境搭建

archery git 地址: 1、https://github.com/hhyo/Archery 2、pyton 版本使用3.9 3、创建虚环境 使用python3.9安装ldap依赖对应python版本 下载文件地址https://github.com/cgohlke/python-ldap-build/releasespip install python_ldap-3.4.4-cp39-cp39-win_amd64.whl 安装…

多个Node.js版本之间切换

使用nvm 查看已安装的版本 nvm list 切换版本 nvm use 版本号 安装指定版本 1.nvm install 2.nvm use [version] 原文参考

儿童耳勺电子版的好用吗?六大弊病坏处要规避

很多家长在后台私信问儿童耳勺电子版的好不好用&#xff0c;作为个护师&#xff0c;也测过市面上大大小小的儿童耳勺产品&#xff0c;要说出比较好用的是哪一款&#xff0c;还应当是电子版的可视耳勺&#xff0c;因为它有着其他耳勺没有的可视化功能&#xff0c;能将儿童耳道内…

MySQL record

更改密码&#xff1a; alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意&#xff1a; 在命令行方式下&#xff0c;每条MySQL的命令都是以分号结尾的&#xff0c;如果不加分号&#xff0c;MySQL会继续等待用户输入命令&#xff0c;直到MyS…

009.数据库管理-数据字典动态性能视图

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

贝宁共和国驻华大使馆聘任向凌云教授为新兴产业顾问

2024年7月31日&#xff0c;贝宁共和国驻华大使西蒙皮埃尔阿多伟兰德&#xff08;S.E.M.Simon Pierre ADOVELAND&#xff09;代表贝宁共和国聘任国际著名新兴产业专家向凌云教授为贝宁共和国新兴产业顾问。 贝宁共和国&#xff08;英文&#xff1a;The Republic of Benin, 法文&…

QT做一个USB HID设备识别软件

1.下载 HidApi库&#xff1a;GitHub - yigityuce/HidApi: Human Interface Device Api (HidApi) with C 2.pro文件添加 DEFINES - UNICODE LIBS -lsetupapi 3.h文件 #ifndef My_Usb_Hid_Device_H #define My_Usb_Hid_Device_H#include <QWidget> #include <QStr…

网络安全知识:什么是访问控制列表 (ACL)?

访问控制列表 (ACL) 是网络安全和管理的基础。它们在确定谁或什么可以访问网络内的特定资源方面发挥着重要作用。 本文深入探讨了 ACL 的复杂性&#xff0c;探索了其类型、组件、应用程序和最佳实践。我们还将比较不同操作系统的 ACL&#xff0c;并讨论它们在网络架构中的战略…

时序分解预测|基于变分模态分解VMD双向长短期记忆网络BiLSTM的单变量时间序列预测Matalb程序VMD-BiLSTM

时序分解预测|基于变分模态分解VMD双向长短期记忆网络BiLSTM的单变量时间序列预测Matalb程序VMD-BiLSTM 文章目录 前言时序分解预测|基于变分模态分解VMD双向长短期记忆网络BiLSTM的单变量时间序列预测Matalb程序VMD-BiLSTM 一、VMD-BiLSTM模型VMD-BiLSTM模型详细原理和流程1. …

bootstrap下拉多选框

1、引用(引用资源下载) <!-- Latest compiled and minified CSS --> <link rel"stylesheet" href"static/css/bootstrap-select.min.css"> <!-- Latest compiled and minified JavaScript --> <script src"static/js/bootstrap…

为什么IGSO卫星星下点轨迹为“8”字?

前言 IGSO&#xff0c;倾斜地球同步轨道(Inclined GeoSynchronous Orbit)&#xff0c;又名GIO (Geosynchronous Inclined Orbit)。高度与GEO(Geostationary Orbit)相同&#xff0c;都是约35700km&#xff08;我国北斗系统部分卫星就用该轨道&#xff0c;轨道高度约35786km&…

Linux awk案例

目录 1. 查询时间超过2000毫秒的请求2. 查询指定列组合出现的次数3. 统计所有文件的大小4. 获取大于指定大小的文件名&#xff0c;并按照从大到小排序5. grep指定字段后&#xff0c;使用awk列转行6. 查询第四个字段等于指定值的内容 1. 查询时间超过2000毫秒的请求 ✅log: 202…

Ubuntu 24.04 VMware里面设置静态ip上网

1.VMware里面设置网络为桥接模式 2.Ubuntu里面检查网卡名称 [~] ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:…