技术标签: spring boot actuator endpoint 监控
本文基于spring boot 2.2.0 release版本。
在上一篇文章《spring boot Actuator原理详解之启动》详细介绍了在web环境下,Actuator是如何启动的,这里对流程做一个简单的总结:
明白了上面整个启动流程之后,我们也可以编写一个自定义的Endpoint。
自定义Endpoint的关键点:
Caused by: java.lang.IllegalStateException: No @Endpoint id attribute specified for XXXClass
;@ReadOperation、@WriteOperation、@DeleteOperation
;/actuator/caches/{cache}
花括号里面的内容是路径参数,我们可以在方法入参上添加@Selector来指定路径参数,比如public String counters(@Selector int value)
;@ReadOperation、@WriteOperation、@DeleteOperation
的produces属性指定其他格式。下面给出一个自定义Endpoint的例子:
/**
* 统计方法该Endpoint对象的次数
*/
@Component
@Endpoint(id="counter")
public class Counter {
private AtomicInteger cnt=new AtomicInteger(0);
@ReadOperation
public int counter() {
return cnt.getAndAdd(1);
}
@ReadOperation
public int counters(@Selector int value) {
return cnt.getAndAdd(value);
}
}
上面这个类只是一个示例,并没有实际意义。运行起来后,访问http://localhost:8079/actuator/counter
,每次访问都会返回一个比之前大1的数字。
我们还可以使用注解@EndpointWebExtension扩展已有的Endpoint。
下面是spring提供的对EnvironmentEndpoint的扩展:
@EndpointWebExtension(endpoint = EnvironmentEndpoint.class)
public class EnvironmentEndpointWebExtension {
private final EnvironmentEndpoint delegate;
public EnvironmentEndpointWebExtension(EnvironmentEndpoint delegate) {
this.delegate = delegate;
}
@ReadOperation
public WebEndpointResponse<EnvironmentEntryDescriptor> environmentEntry(@Selector String toMatch) {
EnvironmentEntryDescriptor descriptor = this.delegate.environmentEntry(toMatch);
return new WebEndpointResponse<>(descriptor, getStatus(descriptor));
}
private int getStatus(EnvironmentEntryDescriptor descriptor) {
if (descriptor.getProperty() == null) {
return WebEndpointResponse.STATUS_NOT_FOUND;
}
return WebEndpointResponse.STATUS_OK;
}
}
就web环境下来说,如果扩展类的方法有与原类相同的http请求路径,那么扩展类会替换掉原来的方法,也就是说,访问该路径时,不会访问到原类的方法,而是访问到扩展类。
文章浏览阅读733次。前面写过一篇北极之北之main函数之前,这篇文章其实解决的问题是main函数并不是第一个执行的函数,在main之前,函数的入口点是_start, _start会调用glibc里的__libc_start_main,main函数只是这个函数的入参。 在__libc_start_main中某一步,会执行main函数。这是上面一篇博文获取到的知识。 前两天,CU的gongping11写了一
文章浏览阅读903次。同步日志的业务流程处理和日志打印是在同一个线程,日志打印的过程实际上是写文件IO的过程,这个过程是相对耗时的,并且会阻塞主线程的执行,只有日志打印完成后才会继续执行业务处理代码。如果日志量比较大,会影响主业务流程的处理效率。异步日志实现方式:将日志存入一个单独的队列中,有一个单独的线程从队列中获取日志并写入磁盘文件。Log4j2基于LMAX公司开发Disruptor(一个开源的无锁并发框架),改善了Log4j和Logback在架构设计方面的缺陷,具有超高的吞吐量和低延迟。所以我们想获取log4j2异步日志带_log4j2性能优化
文章浏览阅读230次。挖掘java之路_java lambda 补缺少
文章浏览阅读6.4k次。前言:该技术会用到特定于移动设备的API,Microsoft Phone 已经被微软砍掉,读者悉知。语音指令就是通过语音来完成一些常规操作,如启动某个应用,打开或关闭飞行模式等,随着智能助理Cortana的推出,语音操作的重要地位也逐渐显现。若能在应用程序中提供适当的语音操作支持,不仅能够提升应用的用户体验,也给用户的使用带来不少便捷。语音指令是通过一种名为VoiceCommandDefinition(VCD)文件来定义,当应用程序运行后通过相关API进行安装注册。VCD文件安装成功后,开发者为应._语音响应指令
文章浏览阅读7.1k次,点赞2次,收藏2次。有时候,我们在同时运行多个任务时,需要把这几个窗口同时显示在屏幕上,这样操作分比较方便,而且可以避免频繁切换窗口的麻烦。例如:我们想要把一个文件夹中的个别文件移动到另一个文件夹中,这时同时打开这两个文件夹窗口并二分屏显示就比较方便;或者同时,我们想要打开QQ窗口与对方交谈,这时可以三分屏同时显示三个窗口;又或者我们同时还想忙里偷闲看看视频,这时可以再打开优酷视频窗口,这时就需要让四个窗口四分屏同时显示。那么如何才能快捷地让多个窗口实现“二分屏/三分屏/四分屏”显示呢?窗口的二分之一屏显示技巧(二分屏)_win10三屏配置
文章浏览阅读4.8k次,点赞10次,收藏44次。前面写了两篇博客,关于单表和多表的优化,这两篇博客的基础其实就是explain,explain是必须掌握的知识点,我曾尝试过死记硬背,但效果甚微,还是实践来的实在。本文就一些实例来解析explain的用法。..._sql explain 用法
文章浏览阅读572次。org.hibernate.hql.internal.ast.QuerySyntaxException: customer is not mapped [from customer where name like ?] at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(Sessi
文章浏览阅读1.1w次,点赞4次,收藏20次。word交叉引用只需两步即可,3分钟即会第一步: 插入编号文档中有如下参考文献,但还没有[1],[2],[3]等编号。那么先给参考文献编号序号,使用word—>开始—>编号接下来给参考文献标好序号,光标选到某参考文献前,点编号即可自动编号,如下图所示标完序号如图所示第二步:正文引用编号将光标定位在正文中需要插入参考文献上标的地方,点击“..._word 引用链接到引用
文章浏览阅读309次。由于最近开发公司的后台管理系统和服务器的需求,所以临时学点WEB开发基础,因为是内部人员使用的,要求不是很高。所以也没有学得很精通,就随便学习一下基础就开始上手做。一、HTML1、图片标签<img src="链接" width="150px" height="30px" alt="logo图片"/>2、超链接标签<a href="链接地址&q
文章浏览阅读112次。class Person(object): def __init__(self,name): self.name = name def getname(self): print self.nameclass Student(Person): def __init__(self,name,age): #P...
文章浏览阅读3k次,点赞6次,收藏40次。QGC地面站PC桥接px4(QGC+wifi+机载计算机+px4)1 在机载计算机上安装ubuntu2 安装ros3 机载计算机上安装mavros1安装mavros2 安装安装mavros相关的 geographiclib dataset4 安装ssh服务5 连接px4和机载计算机6 地面站PC用ssh控制机载计算机7 QGC上建立通讯连接用px4做的无人机,由于手头没有数传,需要进行无人机姿态环和位置环调参,通过QGC地面站PC桥接px4实现读取飞控状态参数的功能。1 在机载计算机上安装ubuntu_qgc连接 串口 无线
文章浏览阅读760次。π=41−43+45−47+49−...\pi=\frac{4}{1}-\frac{4}{3}+\frac{4}{5}-\frac{4}{7}+\frac{4}{9}-...π=14−34+54−74+94−...这个数列的分子不变,分母变化其通项公式为n=4(2n−1)×(−1)n−1n=\frac{4}{(2n-1)\times (-1)^{n-1}}n=(2n−1)×(−1)n−14首先自己写一段傻乎乎的计算代码这样,计算n=50000n=50000n=50000时这个式子的值常规