SpringBoot+Actuator+Prometheus+Grafana进行可视化应用监控

news2025/2/5 17:54:14

最终效果

在这里插入图片描述

actuator

actuator是什么

看一看chatGPT怎么说?

Spring Boot Actuator是Spring Boot的一个子项目,它为监视和管理Spring Boot应用程序提供了附加功能。它提供了一组端点,允许您监视和管理应用程序,如运行状况检查、度量和有关应用程序的各种其他信息。您可以使用这些端点来更好地了解应用程序在生产环境中的行为,并解决可能出现的任何问题。

弹簧启动执行器提供的一些功能包括:
1、 运行状况检查:执行器提供了一个/Health端点,您可以使用它来检查应用程序的运行状况。这可以包括检查外部服务的可用性、数据库的状态等。

2、指标:Actuator提供了许多关于应用程序的指标,例如内存使用率、CPU使用率和请求率。您可以使用这些指标来了解应用程序的性能,并确定任何潜在的性能问题。

3、日志记录:执行器提供了一个/lofile端点,您可以使用它来访问应用程序的日志文件。这有助于解决生产环境中的问题。

4、 审计:可以将执行器配置为记录有关向应用程序发出的请求的信息,包括请求和响应数据。这对于跟踪应用程序的更改和识别安全漏洞非常有用。

总结:Spring Boot Actuator是监控和管理生产中的Spring Boot应用程序的有用工具。它提供了一系列端点,可用于收集有关应用程序的信息,并可根据需要进行配置以提供其他功能。

配置actuator

maven依赖

        <!--actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

配置文件

# 监控配置
# 对外暴露所有监控指标
management:
  endpoints:
    web:
      exposure:
        include: "*"

注意:这个配置必须要在yml中配置,否则启动时会报

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.sifan.erp.ErpApplication]; nested exception is java.lang.IllegalStateException: Error processing condition on org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration

测试:http://localhost:8080/actuator/
注意:如果设置了拦截器需要放行 “/actuator/**”

在这里插入图片描述

Prometheus

Prometheus是什么

Prometheus结合Actuator配置

依赖

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

配置,这个配置包含了actuator的配置

# 监控配置
# 对外暴露所有监控指标
management:
 endpoints:
   web:
     exposure:
       include: "*"
 endpoint:
   prometheus:
     enabled: true # 激活普罗米修斯
   health:
     show-details: always # 健康值总是展示细节
 metrics:
   export:
     prometheus:
       enabled: true # 指标允许被导出

测试是否生效
http://localhost:8080/actuator/prometheus
在这里插入图片描述为普罗米修斯命名,在启动类配置bean,也可以在配置类中配置

@SpringBootApplication
@EnableAsync
@MapperScan("com.sifan.erp.mapper")
public class ErpApplication {

    public static void main(String[] args) {
        SpringApplication.run(ErpApplication.class, args);
    }


    /**
     * 为普罗米修斯命名*
     *
     * @param applicationName
     * @return
     */
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configure(@Value("${spring.application.name") String applicationName) {
        return register -> {
            register.config().commonTags("application", applicationName);
        };
    }
}

应用部署使用

1、springBoot部署到服务器
我使用的是docker形式容器化部署
1、clear
目的是删除target文件
2、package
在这里插入图片描述
打包成功之后会后个jar包
在这里插入图片描述上传jar包
在这里插入图片描述在这里插入图片描述3、Dockerfile文件

FROM openjdk:8-jdk-alpine
WORKDIR /opt/apps/gateway/logs/
ADD ./erp-0.0.1-SNAPSHOT.jar /App/
EXPOSE 8080
ENTRYPOINT ["java","-jar"]
CMD ["/App/erp-0.0.1-SNAPSHOT.jar"]

在这里插入图片描述
4、构建镜像,注意最后面的点,表示当前目录搜索Dockerfile构建镜像

 docker build -t sifan:1.0 .

在这里插入图片描述
5、运行镜像

docker run --name sifan -p 8080:8080 -d sifan:1.0

看下部署之后普罗米修斯怎么样?
在这里插入图片描述

docker运行prometheus容器

1、拉取镜像

docker pull prom/prometheus

2、创建配置文件prometheus.yml,下面的targets修改为自己应用的ip和端口就行,jobname为应用的名字即spring.application.name的值

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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.
###以下内容为SpringBoot应用配置
  - job_name: 'sifanOS'
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['106.55.190.57:8080']

启动容器,注意:/root/sifan/prometheus这个目录为配置文件prometheus.yml所在的目录,可以随便放在哪里

docker run -d -p 9090:9090 --name prometheus -v /root/sifan/prometheus:/data prom/prometheus --config.file=/data/prometheus.yml

点击status下面的targets就能看到
在这里插入图片描述在这里插入图片描述

Grafana

Grafana是什么?
Grafana 是一个开源的数据可视化和监控平台。它允许用户创建和共享交互式仪表板以监控各种指标和数据点。 Grafana 支持广泛的数据源,包括流行的时间序列数据库,如 Prometheus、InfluxDB 和 Graphite,以及其他数据库和数据源,如 MySQL、PostgreSQL 和 Elasticsearch。

Grafana 通常用于监控基础架构和应用程序的性能和可用性并发出警报。它是高度可定制的,具有广泛的插件和主题可用于扩展其功能和外观。 Grafana 在 DevOps 专业人士中很受欢迎,并且经常与 Prometheus 和 Kubernetes 等其他工具结合使用来监控和管理分布式系统。

1、拉取镜像

docker pull grafana/grafana

2、运行

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

3、访问grafana,默认的用户名和密码的都是admin
在这里插入图片描述登录成功来到首页
在这里插入图片描述
配置数据源,点击Configuration
在这里插入图片描述在这里插入图片描述点击普罗米修斯图标进行配置
在这里插入图片描述填入普罗米修斯的ip和端口
在这里插入图片描述点击最下面的save and test,出现Data source is working表示成功配置
在这里插入图片描述接下来点击左侧的import
在这里插入图片描述

在这里你可以导入你想要的仪表盘
所有普罗米修斯的仪表盘:https://grafana.com/grafana/dashboards/?dataSource=prometheus
因为我们监控的是JVM,所以选择JVM
在这里插入图片描述
点击JVM,复制ID到粘贴板
在这里插入图片描述把复制的仪表盘id粘贴进来,可以看到id是4701,点击Load
在这里插入图片描述在这里插入图片描述选择前面配置好的数据源
在这里插入图片描述点击Import
在这里插入图片描述在这里插入图片描述

他会间隔的刷新数据
后面可以从这个地方进去
在这里插入图片描述

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

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

相关文章

[附源码]计算机毕业设计Python电影推荐网站(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

使用FastDeploy在英特尔CPU和独立显卡上端到端高效部署AI模型

目录 1.1 产业实践中部署AI模型的痛点 1.1.1 部署模型的典型流程 1.1.2 端到端的AI性能 1.1.3 部署模型的难点和痛点 1.2 FastDeploy简介 1.3 英特尔独立显卡简介 1.4 使用FastDeploy在英特尔CPU和独立显卡上部署模型的步骤 1.4.1 搭建FastDeploy开发环境 1.4.2 下载…

秒杀/抢购架构设计

1 秒杀业务分析 1.1 正常电子商务流程 &#xff08;1&#xff09;查询商品&#xff1b; &#xff08;2&#xff09;创建订单&#xff1b; &#xff08;3&#xff09;扣减库存&#xff1b; &#xff08;4&#xff09;更新订单&#xff1b; &#xff08;5&#xff09;付款&…

Odoo丨手把手教你灵活控制表单明细的创建与删除!

文章目录一、前言二、表单明细的创建与删除1.根据主表字段带出明细信息2.根据主表字段控制明细表的添加和删除功能三、总结一、前言 我们知道&#xff0c;在Odoo页面上&#xff0c;控制的最小单位是字段&#xff0c;可通过Odoo提供的属性&#xff0c;控制字段的必填、只读、隐…

Spring Cloud 应用 Proxyless Mesh 模式探索与实践

作者&#xff1a;十眠 Service Mesh 简介 Service Mesh 早已不是一个新兴的概念&#xff0c;目前已经有许多关于 Service Mesh 的探索以及实践。 2016 年可以说是 Service Mesh 的元年&#xff0c;Buoyant 公司 CEO William Morgan 率先发布 Linkerd &#xff0c;成为业界首…

Java中的多线程(上)

作者&#xff1a;~小明学编程 文章专栏&#xff1a;JavaEE 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 多线程 什么是线程 为什么需要多线程 进程和线程的区别&#xff08;面试重点&#xff09; Java实现多线程 多线程带来的好处 认识Thread类 T…

前端基础_贝塞尔和二次方曲线

贝塞尔和二次方曲线 贝塞尔曲线可以是二次和三次方的形式&#xff0c;常用于绘制复杂而有规律的形状。 绘制贝塞尔曲线主要使用bezierCurveTo方法。该方法可以说是lineTo的曲线版&#xff0c;将从当前坐标点到指定坐标点中间的贝塞尔曲线追加到路径中。该方法的定义如下。 b…

艾美捷耗氧率检测试剂盒说明书及相关研究

细胞内稳态通过ATP的产生来维持。ATP的生成可以通过单独的糖酵解&#xff08;无氧呼吸&#xff09;或通过糖酵解与氧化磷酸化的耦合来完成。氧化磷酸化是氧&#xff08;O2&#xff09;依赖性的&#xff0c;发生在线粒体中&#xff0c;是哺乳动物细胞合成ATP的最有效和优选的方法…

电力系统可视化——比PowerWorld还精彩(Matlab实现)

目录 1 概述 2 PowerWorld 3 案例及Matlab代码实现 3.1 案例 3. 2 结果展现 3.3 Matlab代码实现 1 概述 信息可视化的应用为电力行业带来了巨大的希望&#xff0c;但其潜力尚未被可视化社区充分挖掘。先前关于电力系统可视化的工作仅限于在地理布局之上描绘原始或处理过的…

【数据结构】单链表OJ

目录 一、反转单链表 描述 二、返回链表的中间节点 三、返回倒数第K个节点 描述 示例1 四、合并两个已排序的链表 描述 五、分隔链表 六、判断一个链表是否为回文结构 描述 示例1 示例2 示例3 七、两个链表的第一个公共结点 描述 输入描述&#xff1a; 返回值描…

LICEcap:GIF屏幕录制工具

写博客的时候&#xff0c;我经常会用到需要自制gif的场景&#xff0c;我之前一直使用视频转gif工具处理https://tool.lu/video2gif/&#xff0c;大致就是利用qq录屏成视频&#xff0c;然后通过工具转成gif。 今天无意间看到其他博主用了 LICEcap 工具 LICEcap 是一款简洁易用的…

“隐形贫困者”自学Python做副业,教你如何月入10000+

现在的年轻人总是觉得攒不下钱&#xff0c;虽然表面风光&#xff0c;每天出入高级CBD&#xff0c;可是几乎每个人都是月光族&#xff0c;这一类人被定义为“隐形贫困者”&#xff0c;原因是什么呢&#xff1f;根据小编的分析&#xff0c;现在人们对生活质量要求普遍提高了&…

毕业设计 单片机智能避障超声波跟随小车 - 物联网 嵌入式

文章目录0 前言1 项目背景2 实现效果3 设计原理HC-SR04超声波模块5 部分代码6 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告…

玩转云端 | 数据管理深似海,运维如何变“路人”?

数字技术正在改变人们生产、生活的方方面面。作为数字经济时代的重要生产要素&#xff0c;数据正以指数级别爆发式增长&#xff0c;企业对于数据存储及处理的方式和要求已是“今时不同往日”。最早古人存储数据的方法是“以物记物”或“借物记物”&#xff0c;即用更易于携带的…

如何视频裁剪?建议收藏这几种裁剪视频的方法

现在的网络很是方便&#xff0c;我们可以轻轻松松的在网上找到各种网课视频来进行学习。不过有些网课里面的重点内容不仅比较少&#xff0c;还很分散&#xff0c;让我们很难做到高效的学习。但其实我们可以通过视频裁剪&#xff0c;将有重点内容的视频裁剪下来&#xff0c;这样…

SpringBoot SSMP案例整合二 运维篇

目录 一、程序打包 二、项目打包后 若启动失败 三、虚拟机启动SpringBoot项目&#xff08;Linux&#xff09; 四、临时属性 五、配置文件4级分类 六、自定义配置文件 七、多环境开发&#xff08;yml版本&#xff09; 八、多环境开发多文件版&#xff08;yml版&#xf…

C++ Primer 第四章 表达式

C Primer 第四章 表达式4.1. Fundamentals4.1.1. Lvalues and Rvalues4.1.2. Precedence and Associativity4.2. Arithmetic Operators4.4. Assignment Operators4.5. Increment and Decrement Operators4.9. The sizeof Operator4.10. Comma Operator4.11. Type Conversions4.…

中国风?古典系?AI中文绘图创作尝鲜!⛵

&#x1f4a1; 作者&#xff1a;韩信子ShowMeAI &#x1f4d8; 深度学习实战系列&#xff1a;https://www.showmeai.tech/tutorials/42 &#x1f4d8; 本文地址&#xff1a;https://www.showmeai.tech/article-detail/413 &#x1f4e2; 声明&#xff1a;版权所有&#xff0c;转…

Java——B-树

概念 当我们使用avl树或者红黑树进行数据检索时&#xff0c;虽然树是平衡的&#xff0c;可以保证搜索的效率大概是logN。但是当我们的数据量比较大时&#xff0c;只能在内存中存储数据在硬盘中的指针&#xff0c;这时如果我们要检索数据&#xff0c;最少也需要比较树的高度次。…

【算法】单词接龙,合并区间, 二叉搜索树的最近公共祖先,旋转排序数组中的最小值看看有你会的吗?

算法学习有些时候是枯燥的&#xff0c;每天学习一点点 算法题目一. 单词接龙 II 题目描述java 解答参考二. 合并区间 题目描述java 解答参考三. 二叉搜索树的最近公共祖先 题目要求java实现方案四 寻找旋转排序数组中的最小值一. 单词接龙 II 题目描述 按字典 wordList 完成从…