Java --- springboot3之可观测性

news2024/11/15 15:24:36

目录

一、可观测性

二、定制健康监控的端点

三、定制metrics

四、整合Prometheus+Grafana


一、可观测性

 导入pom依赖

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

通过springboot配置文件配置暴露端点

#通过web暴露所有监控端点
management.endpoints.web.exposure.include=*

通过访问地址得到所有http://localhost:8080/actuator

二、定制健康监控的端点

@Component
public class MyComponent {
    public int check(){
        return 1;
    }
}
@Component
public class MyHealthIndicator extends AbstractHealthIndicator {
    @Autowired
    private MyComponent myComponent;
    /**
     * 检查健康
     * @param builder
     * @throws Exception
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        //自定义检查方法
        int check = myComponent.check();
        if (check == 1){
            //存活
            builder.up()
                    .withDetail("code","200")
                    .withDetail("msg","健康的运行")
                    .build();
        }else {
            builder.down()
                    .withDetail("code","400")
                    .withDetail("msg","运行崩溃了")
                    .build();
        }
    }
}

配置文件 

management.endpoint.health.enabled=true
management.endpoint.health.show-details=always

 效果图

三、定制metrics

@Component
public class MyComponent {
    Counter counter = null;
    public MyComponent(MeterRegistry meterRegistry) {
        counter = meterRegistry.counter("My.hello");
    }

    public int check(){
        return 1;
    }
    public void hello(){
        System.out.println("hello");
        counter.increment();
    }
}
@RestController
public class HelloController {
    @Autowired
    private MyComponent myComponent;
    @GetMapping("/hello")
    public void hello(){
        myComponent.hello();
    }
}

效果图

四、整合Prometheus+Grafana

导入Prometheus需要的依赖

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

 将自己的Java程序打包上传到服务器部署

安装服务器上传工具

安装指令:yum install lrzsz

软件传输指令:rz

 安装liunx的jdk17

下载jdk17:wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

创建安装目录:mkdir -p /opt/java17

解压:tar -xzf jdk-17_linux-x64_bin.tar.gz -C /opt/java17/

修改文件:vim /etc/profile

修改内容:

export JAVA_HOME=/opt/java/jdk-17.0.7
export PATH=$PATH:$JAVA_HOME/bin

指行生效命令:source /etc/profile

后台运行Java服务

nohup java -jar boot3-actuator-0.0.1-SNAPSHOT.jar > output.log 2>&1 & 

修改 Prometheus配置文件

scrape_configs:
  - job_name: 'spring-boot-actuator-exporter'
    metrics_path: '/actuator/prometheus' #指定抓取的路径
    static_configs:
      - targets: ['192.168.200.1:8001']
        labels:
          nodename: 'app-demo'

测试访问:

 整合Grafana

 

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

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

相关文章

如何从PCB上直接启动Power DC直流压降仿真分析工具

如何从PCB上直接启动Power DC直流压降仿真分析工具 POWER DC的启动除了可以通过POWER DC.exe直接启动外,还可以直接通过Allegro的PCB界面直接启动,二者软件是支持关联的。如何启动,具体操作如下 用166或者172版本打开PCB点击File点击Change Edi

JVM源码剖析之JVM层面调用Java方法

先看以下2个案例。 Runnable runnable () -> {System.out.println(1); }; new Thread(runnable).start(); 为什么调用Thread的start方法就能执行Runnable的代码&#xff1f; public static void main(String[] args) {System.out.println(1); } 作为Java开发者&#x…

基于差速驱动移动基座的三维变型机器人轨迹优化

在执行任务时&#xff0c;服务机器人的功能结构变化可能会限制其自主导航能力&#xff0c;从而影响其行动力。本文的研究&#xff0c;旨在解决复杂三维环境中可变形机器人的轨迹规划问题&#xff0c;特别是应用最为广泛的基于差速驱动移动基座的移动机器人的轨迹规划。 这种全…

如何下载一个网站的全部网页文件 如何极速下载网页上的文件

许多网站上都有非常多的内容&#xff0c;一个个下载比较麻烦&#xff0c;那么我们如何下载一个网站的全部网页文件&#xff1f;我们可以使用下载软件抓取整个站点上检索出所有内容&#xff0c;然后通过过滤器选择自己需要的内容。如何极速下载网页上的文件&#xff1f;我们可以…

电脑-问题

如果使用了小米路由器&#xff0c;有望 但是平凡跳转到miwifi进行检查&#xff0c;或者显示证书问题 在浏览器设置里搜索dns&#xff0c;将 确定如何通过安全连接来连接到网站后面部分改成自定义&#xff1a; https://dns.alidns.com/dns-query 主要原因是&#xff1a; edge新…

C++图形开发(4):下落的小球

文章目录 1.小球自上而下依次出现2.下落的小球低配版3.下落的小球高配版 1.小球自上而下依次出现 首先&#xff0c;我们来使小球自上而下依次出现&#xff1a; 分析&#xff1a;要使小球自上而下依次出现&#xff0c;也就是指在一个小球出现之后让程序暂停一段时间&#xff0c…

基于单片机电子密码锁射频卡识别指纹门禁密码锁系统的设计与实现

功能介绍 通过指纹进行开锁或者是按键输入当前的密码&#xff0c;修改密码&#xff0c;对IC卡可以进行注册&#xff0c;删除。当有RFID卡进入到读卡器的读卡范围内时&#xff0c;则会自动读取卡序列号&#xff0c;单片机根据卡的序列号对卡进行判断。若该卡是有效卡&#xff0c…

【 SVG 】二、SVG 容器元素

一、本文概述 本文所介绍的 svg 中元素&#xff0c;通常不会直接作为直接展示元素&#xff0c;而是配合其他基础元素&#xff0c;以实现指定功能的图层组&#xff0c;本文围绕 svg 常用容器元素&#xff0c;进行实战应用&#xff1b; 二、 SVG 容器元素&#xff08;常用&#x…

「软件测试」最全面试问题和回答,全文背熟不拿下offer算我输

一般要应聘关于测试的工作&#xff0c;面试题会不会很难?下面小编整理了软件测试面试题及答案&#xff0c;欢迎参考! 一、引言 1.1 文档目的 本次文档是为了收集在面试中遇到的一问题与常见的一些答案并不是唯一答案 二、职业规划 2.1 简单的自我介绍下 面试宫&#xff…

层层剥开Transformer;Windows Copilot初版非常简陋

&#x1f989; AI新闻 &#x1f680; 微软Win11引入Windows Copilot功能&#xff0c;但初版非常简陋 摘要&#xff1a;微软在Win11 Build 23493预览版更新中引入了Windows Copilot功能&#xff0c;该功能在任务栏上新增了一个图标按钮。点击按钮后&#xff0c;屏幕右侧会跳出…

10_Activiti7

工作流(workflow)系统 具有工作流的系统,使用的专门的建模语言(BPMN)定义 通过计算机对业务流程自动化执行管理 使用传统方式实现 ​ 代码工作量大,若流程发生改变的话,编写 的代码也会发生响应的改变 工作流引擎 按照BPMN规范进行部署,将业务和节点的流程进行分离 没有…

oracle rowscn 简单记录

可以通过ROWSCN 侦测row是否有变化&#xff0c;但需要注意&#xff1a; 默认是一个block的scn 相同可以通过create table ROWDEPENDENCIES 在每行上记录无论哪种模式&#xff0c;ROW SCN是一个大致值&#xff0c;不是准确值 NOROWDEPENDENCIES | ROWDEPENDENCIES This claus…

软件测试丨常用测试策略与测试手段

测试策略是指在特定环境约束之下&#xff0c;描述软件开发周期中关于测试原则、方法、方式的纲要&#xff0c;并阐述了它们之间如何配合&#xff0c;以高效地减少缺陷、提升质量。 测试策略中需要描述测试类型与测试目标以及测试方法&#xff0c;准入准出的条件&#xff0c;以…

初学spring5(六)静态/动态代理模式

学习回顾&#xff1a;初学spring5&#xff08;五&#xff09;使用注解开发 一、代理模式 为什么要学习代理模式&#xff0c;因为AOP的底层机制就是动态代理&#xff01; 代理模式&#xff1a; 静态代理动态代理 学习aop之前 , 我们要先了解一下代理模式&#xff01; 二、静态代…

【前端】element button鼠标点击按钮更改样式

目录 一、实现效果二、代码如下&#x1f680;写在最后 一、实现效果 二、代码如下 <span><el-button type"text"><img src"../../../../../src/assets/slice/question.png" style"font-size: 14px;margin-bottom: 0.26rem">&l…

安全响应中心 — 垃圾邮件事件报告(6.28)

2023年6月 第四周 样本概况 ✅ 类型1&#xff1a;伪造正常转发邮件&#xff08;链接&#xff09; 钓鱼邮件一直是邮件防护绕不开的话题。近日安全团队收到了一批钓鱼邮件&#xff0c;发送者将正常邮件内容和钓鱼内容拼凑在一起&#xff0c;将一封钓鱼邮件伪装成经过转发的正…

TypeScript 总结

文章目录 TypeScript 总结概述运行ts文件方式一方式二 基础声明变量类型数组元组联合类型取值限制 枚举类型any & unknownvoid & undefined类型适配 面向对象函数普通函数箭头函数可选参数默认参数 对象创建对象对象的类型限制 类和接口泛型简单使用多个泛型默认泛型类…

react基础-React原理揭秘React路由基础

React原理揭秘 目标 能够说出React组件的更新机制能够对组件进行性能优化能够说出虚拟DOM和DIff算法 组件更新机制 setState() 的两个作用 修改state更新组件 过程&#xff1a;父组件重新渲染时&#xff0c;也会重新渲染子组件&#xff0c;但只会渲染当前组件子树&#xff…

BUUCTF Cipher 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 还能提示什么呢&#xff1f;公平的玩吧&#xff08;密钥自己找&#xff09; Dncnoqqfliqrpgeklwmppu 注意&#xff1a;得到的 flag 请包上 flag{} 提交, flag{小写字母} 密文&#xff1a; Dncnoqqfliqrpgeklwmppu解…

vector 数据流查询命令

原文来自&#xff1a;vector 数据流查询命令 | 老五笔记 A lightweight, ultra-fast tool for building observability pipelines&#xff0c;vector在日常运维数据采集中也具有非常重要的作用。很多命令和详细说明可以从官方文档中达到最权威的介绍&#xff1a; Vector | A l…