使用Prometheus+Grafana实现监控

使用Prometheus+Grafana实现监控

我们用 actuator 暴露应用本身的线程、bean 等信息,但是这些信息还是独立于 Prometheus 之外的。下面我们

将介绍如何将 SpringBoot Actuator 与 Prometheus 结合起来。

我们同样从 Spring Initializr 创建一个名为 spring-web-prometheus-demo 的项目,选取的依赖包括:

  • Spring Web
  • Spring Boot Actuator
  • Prometheus

这里增加了一个 Prometheus 包。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/></parent><groupId>com.example</groupId><artifactId>spring-web-prometheus-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>spring-web-prometheus-demo</name><description>使用 Prometheus + Grafana 实现监控</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><scope>runtime</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

项目打开后,在 application.properties 中加入如下配置,打开相关的端口。

management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true

启动类:

package com.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringWebPrometheusDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringWebPrometheusDemoApplication.class, args);}}

接着启动项目,访问 localhost:8080/actuator/prometheus 可以看到 SpringBoot 的应用信息都以

Prometheus 的标准形式输出了。

在这里插入图片描述

下面我们使用 Grafana 官网 - Dashboards 模块 中的「JVM(Micrometer)」图表模板来展示应用的各项指标。

点击JVM (Micrometer) dashboard for Grafana | Grafana Labs 可以获取到 dashboard 的 ID 为:4701。

在这里插入图片描述

接着我们在 Grafana 页面点击「Import」菜单进入导入设置页面。

我们进入「Import」页面,填入模板的 ID,并点击「Load」按钮。

系统会自动读取模板 ID 对应的信息并显示在页面上。你需要选择模板的数据源,这里我选择了「Prometheus」

数据源,也就是本文应用所在的数据源。

在这里插入图片描述

在这里插入图片描述

设置完毕后点击「Import」按钮,则进入到看板页面。

在这里插入图片描述

我们还需要配置下 prometheus.yml 文件,让其去拉取 Node Exporter 的数据。

我们配置一下 Prometheus 的配置文件,让 Prometheus 服务器定时去业务数据源拉取数据。编辑

prometheus.yml并在 scrape_configs 节点下添加以下内容:

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]# 采集node exporter监控数据- job_name: 'node'static_configs:- targets: ['192.168.2.186:8080']# 采集JVM监控数据- job_name: 'jvm-node'metrics_path: /actuator/prometheusstatic_configs:- targets: ['192.168.2.185:8080']

新增一个任务,是名为 jvm-node 的任务,其从「192.168.2.185:8080」地址读取数据。

配置完成后,我们重新启动 Prometheus。

$ ./prometheus --config.file=prometheus.yml

在这里插入图片描述

最后的效果:
在这里插入图片描述

从看板我们可以看到许多信息,例如:应用启动持续时间、应用启动时间、堆的使用率、CPU 使用率等信息。

总结:

我们通过 Spring Boot Actuator 进行监控指标收集的,使用一个 Grafana 的模板将这些信息都展示在 Grafana 面

板上。看到这里,我们已经掌握了 Prometheus 监控的 80% 内容了。但是如果我们有一些业务指标需要监控,我

们应该如何实现呢?可以通过自定义监控指标。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超详细IDEA连接本地数据库以及使用教程

文章目录 前言一、IDEA连接本地数据库二、IDEA使用数据库操作 前言 IDEA的项目要想连接本地数据库&#xff0c;前提就是本地已经配置有数据库&#xff0c;并且可以使用 附Windows10 安装配置数据库教程: 超详细MySQL(免安装版)安装与配置教程 一、IDEA连接本地数据库 点击IDE…

docker-compose启动redis:Can‘t open the append-only file: permission deined

一、问题 docker-compose启动redis&#xff1a;Can‘t open the append-only file: permission deined //1-进入docker文件夹下 cd /docker//2-使用docker-comopse启动Mysql和redis docker-compose up -d mysql redisCan‘t open the append-only file: permission deined这里…

Elasticsearch(2)——映射关系

1 什么是映射 映射&#xff08;mapping&#xff09;就像数据库中的 Schema &#xff0c;描述了文档可能具有的字段或属性、每个字段的 数据类型&#xff0c;比如 Text&#xff0c;Keyword&#xff0c;Integer 或 Date &#xff0c;以及 Lucene 是如何索引和存储这些字 段的。 …

Redis的介绍和安装教程(配置文件)

1.Redis简单的介绍 redis是一种键值对的NoSql数据库&#xff0c;这里有两个关键字&#xff1a; 键值对 Nosql 其中键值型&#xff0c;是指Redis中存储的数据都是以key.value对的形式多种多样&#xff0c;可以实字符串、数值、甚至json&#xff0c;可以参考HashMap 然后NoSq…

关于连接数据库时只能使用localhost而不能使用IP连接的问题解决办法

出现&#xff1a;java.sql.SQLException: null, message from server: "Host DESKTOP-H84MBU3 is not allowed to connect to this MySQL server"问题 解决办法&#xff1a; 1、打开数据库操作命令窗口 2、修改user表中 "root" 所对应的 "host&q…

Tensorflow入门(1)——深度学习框架Tesnsflow入门 环境配置 认识Tensorflow

目录 一、环境配置1.Anaconda以及Tensorflow的安装2.CONDA环境安装3.测试是否成功 二、认识TensorFlow1.图 Graph()2.会话 Session()3.张量 Tensor&#xff08;1&#xff09;张量的形状&#xff08;2&#xff09;数据类型张量的动态形状与静态形状 4.张量操作&#xff08;1&…

SEO行业中的视频营销趋势与前景展望

随着互联网的发展和智能手机的普及&#xff0c;视频营销在SEO行业中扮演着越来越重要的角色。视频内容具有更强的吸引力和表达能力&#xff0c;可以更好地吸引用户的注意力&#xff0c;提高网站的曝光率和流量。下面&#xff0c;我将就SEO行业中视频营销的趋势和前景进行展望。…

IDEA自动导入包

问题 IDEA如何自动导入包 详细问题 项目开发中&#xff0c;笔者常常先将光标瞄准所需导入的类&#xff0c;后使用快捷键AltEnter进行导包操作。这种方式需要逐个处理&#xff0c;相对费事费力&#xff0c;IDEA如何自动导入所有程序所涉及的包呢 解决方案 1、左上角 F i l …

《安全软件开发框架(SSDF) 1.1:降低软件漏洞风险的建议》解读(四)

安全软件开发框架SSDF是由美国国家标准与技术研究院发布的关于安全软件开发的一组实践&#xff0c;帮助开发组织减少发布的软件中的漏洞数量&#xff0c;减少利用未检测到或未解决的漏洞的潜在影响&#xff0c;从根本上解决漏洞防止再次发生。本文根据《Secure Software Develo…

你有详细了解LED显示屏模组参数吗

LED显示屏模组是构成LED显示屏的基本组件&#xff0c;它们通常由LED芯片、电路板和外壳组成。以下是LED显示屏模组的一些常见参数和指标&#xff1a; 像素间距&#xff08;Pixel Pitch&#xff09;&#xff1a;像素间距是指相邻LED像素之间的物理距离&#xff0c;通常以毫米&am…

【Docker】Docker的简介安装以及使用Docker安装Mysql案例

Docker docker概述 Docker是一个开源的应用容器引擎诞生于2013年初&#xff0c;基于Go语言实现&#xff0c;dotClou公司出品&#xff08;后改名为Docker inc&#xff09;Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可以直接的容器中&#xff0c;然后发布到任何…

调用office的Excel制作统计图,并保存成图片

public class CMSChart{private Chart chart;public CMSChart(Chart chart){this.chart chart;}/// <summary>/// 保存图片/// </summary>/// <param name"fullPicName"></param>public void SaveAs(string fullPicName){ChartImageFormat …