标签: spring-boot-actuator

Spring Boot Actuator - 无法禁用/ info端点

我尝试在application.yml配置文件中禁用生产环境的所有执行器端点:

endpoints.enabled: false
Run Code Online (Sandbox Code Playgroud)

它适用于除/ info之外的所有端点.如何关闭给定环境的所有端点?

更新:

我正在做的项目也是Eureka的客户.在状态页面和健康指标(http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html)部分的Spring Cloud Netflix文档中,它说"Eureka实例默认为"/ info"和"/健康"分别".

是否有任何解决方案来禁用这些端点?

我能够使用/ info端点禁用/ health端点endpoints.enabled: false,但不能.

java spring-boot spring-boot-actuator

6
推荐指数
1
解决办法
8829
查看次数

Spring Boot Actuator 提供 CPU 使用率

我想知道有没有办法使用 Spring Boot Actuator 获取 CPU 使用率指标?我可以使用 /metrics 和 /health 端点查看其他指标,但无法获取 CPU 使用率。我想避免编写额外的类只是为了查看 CPU 使用情况。任何的想法?谢谢

metrics cpu-usage spring-boot-actuator

6
推荐指数
3
解决办法
9363
查看次数

如何配置 Spring Boot logback RollingFileAppender 并拥有执行器日志文件?

据我了解,/logfile 执行器仅logging.file=在 application.properties 文件中可用。

但是对于我的日志记录,我需要带有 SizeAndTimeBasedRollingPolicy 的 RollingFileAppender 文件附加器。

是否可以在 application.properties 中配置 RollingFileAppender?

如果我在 logging-spring.xml 中配置 RollingFileAppender,则会出现错误:

java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - 'File' option has the same value "log/scratch6.log" as that given for appender [FILE] defined earlier.

是否可以通过 RollingFileAppender 获得日志文件并具有 /logfile 执行器?

logback spring-boot spring-boot-actuator

6
推荐指数
1
解决办法
4939
查看次数

使用 OAuth2 身份验证启用 Spring Boot Health Actuator

我们已经看到了许多与 Spring Boot 1.5+ 版本的 Health Actuator 端点相关的问题。在经历了其中的一些之后,我们仍然不知所措。

我们的目标是:

  1. 利用 Spring Boot/Spring Security 的安全过滤器链的自动配置(即不必完全实现/配置HttpSecurity
  2. 启用安全健康访问(查看应用程序健康信息的完整视图)
  3. 启用不安全的健康访问(允许端点在 Kubernetes 中用作活动探测器)

我们尝试过:

  1. 使用 aWebSecurityConfigurerAdapter并配置WebSecurity对象以忽略/health端点的安全性,然后/health根据将多个 URL 路由到 Spring Boot Actuator 的健康端点,将单独的端点映射到端点,以希望启用安全路径。
  2. 确保security.oauth2.resource.filter-order=3按照https://github.com/spring-projects/spring-boot/issues/5072中的建议进行。这将放在OAuth2AuthenticationProcessingFilterActuator 的 Mvc 端点之前,并允许处理包含预验证Authorization: Bearer ...标头(例如 JWT 授权)的请求。但是,它规定所有请求都包含授权——否则,FilterSecurityInterceptor触发器Secure object: FilterInvocation: URL: /health; Attributes: [#oauth2.throwOnError(authenticated)]AccessDeniedException

/health对其他所有内容使用基本身份验证和 OAuth2 是行不通的(请参阅Spring boot oauth2 management …

spring-security jwt spring-boot spring-security-oauth2 spring-boot-actuator

6
推荐指数
1
解决办法
3927
查看次数

没有 Spring Boot 的 Spring Boot 2 执行器

我想将 Spring Boot 执行器指标添加到我现有的 Spring MVC 5 应用程序中(我无法转换为 Spring Boot)。关于 SO(没有 Spring Boot 的 Spring Boot Actuator)有几个已回答的问题,但它们用于使用 Spring Boot Actuator 1.x。Spring Boot Actuator 2.x 已重新架构,因此这些说明不再有效。有没有人将 Spring Boot Actuator 2.x 与标准 Spring MVC 5 应用程序集成?

spring spring-mvc spring-boot spring-boot-actuator

6
推荐指数
1
解决办法
1618
查看次数

management.server.port 和 management.port 属性之间有什么区别?

为了在单独的端口上运行 Actuator,我们management.server.port: 9001在 application.properties 文件中写入。但是在Actuator Guide代码中有一个令人困惑的行:

@TestPropertySource(properties = {"management.port=0"})
Run Code Online (Sandbox Code Playgroud)

进而 ...

@Value("${local.management.port}")
private int mgt;
Run Code Online (Sandbox Code Playgroud)

这是源类https://github.com/spring-guides/gs-actuator-service/blob/master/complete/src/test/java/hello/HelloWorldApplicationTests.java

What's the difference between management.server.port, management.port and local.management.port?

spring-boot-actuator

6
推荐指数
1
解决办法
8707
查看次数

Prometheus 如何通过身份验证抓取 Spring Boot 指标?

我正在使用 Spring Boot 1.5.1:

compile 'io.micrometer:micrometer-spring-legacy:1.0.6'
compile 'io.micrometer:micrometer-registry-prometheus:1.0.6'
Run Code Online (Sandbox Code Playgroud)

弹簧属性文件:

management.security.enabled=true
endpoints.prometheus.enabled=true
endpoints.prometheus.sensitive=false
Run Code Online (Sandbox Code Playgroud)

在我的 Prometheus 配置文件中,我添加了 basic_auth:

basic_auth:
    username: username
    password: passw0rd
Run Code Online (Sandbox Code Playgroud)

在我的 [prometheusURL]/targets 中,我不断收到:

服务器返回 HTTP 状态 403

Prometheus 验证每个 Spring 指标的正确方法是什么?

编辑:我可以使用以下命令通过 Spring Security:

curl --cookie "SESSION=7f18cfe7-9a54-4fcf-9662-21d81247c705" http://localhost:8082/management/metrics
Run Code Online (Sandbox Code Playgroud)

AFAIK 在prometheus 配置文件中我们只能传递basic_authbearer_token。标题没有其他选项。

spring-security spring-boot spring-boot-actuator prometheus

6
推荐指数
0
解决办法
2355
查看次数

我可以在 Kubernetes 作业的 preStop 生命周期挂钩中使用 HTTP POST 吗?

我目前在我的 kubernetes 配置中有以下生命周期钩子:

lifecycle:
      preStop:
        httpGet:
          path: /path
          port: 8080
Run Code Online (Sandbox Code Playgroud)

我想在这个钩子中调用 spring boot 执行器的关闭端点,但是这个端点需要一个 post 请求而不是一个 get。这是可能的,还是我应该定义自己的端点来优雅地关闭我的应用程序?

谢谢你的帮助!

spring-boot kubernetes spring-boot-actuator

6
推荐指数
1
解决办法
3005
查看次数

Spring Boot 2 Actuator Starter 中的 Nullpointer w。Tomcat指标

我最近将我们的系统从 Spring Boot 1.5 升级到 2.1.3 并添加了spring-boot-starter-actuator. 显然,有些东西配置错误,因为有一个NullPointerExceptionin TomcatMetrics::registerMetricsEventually

java.lang.NullPointerException: null
    at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.lambda$registerMetricsEventually$aa4da135$1(TomcatMetrics.java:260)
    at java.management/javax.management.NotificationBroadcasterSupport.sendNotification(NotificationBroadcasterSupport.java:238)
    at java.management/javax.management.MBeanServerDelegate.sendNotification(MBeanServerDelegate.java:211)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.sendNotification(DefaultMBeanServerInterceptor.java:1473)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1867)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:955)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:890)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:320)
    at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:639)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.register(AbstractProtocol.java:1059)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:823)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:834)
Run Code Online (Sandbox Code Playgroud)

空指针出现在这里:

return objectName.getDomain().equals(getJmxDomain()) && objectName.getKeyProperty(key).equals(value);
Run Code Online (Sandbox Code Playgroud)

因为objectName.getKeyProperty("j2eeType")返回空值。

这是否表明某些东西明显配置错误?

spring-boot spring-boot-actuator spring-micrometer

6
推荐指数
1
解决办法
1940
查看次数

Grafana 仪表板的 HTTP 响应状态代码指标

关于 Spring Boot 的问题,以及如何获取 HTTP 响应状态代码并将其显示到 Grafana 中。

设置:2.5.1 版本的 Java Spring Boot 应用程序(与任何 Spring Boot 2.xx 相关)。该应用程序具有执行器和千分尺依赖性。应用程序可以正常生成 Prometheus 指标。

我对这个仪表板非常感兴趣:HTTP 响应状态代码。不是经过的时间,不是计数,只是 HTTP 状态代码响应(以 200、401、503 等响应)。由于依赖性,我看到了这些指标!

http_server_requests_seconds

因此,我首先尝试了这个:

increase(http_server_requests_seconds{_ws_="my_workspace",_ns_="my_namespace",_source_="my_source", _bucket_="+Inf"}[15m])

这似乎产生了一些东西:

在此输入图像描述

我可以看到一些 HTTP 200,一些 HTTP 503,但由于某种原因,我不仅看到一个 200,而且看到一堆似乎已经过去了一段时间的内容。

这个查询正确吗?为了随着时间的推移获得不同的 HTTP 状态代码响应,最合适的查询是什么?

最重要的是,代表 HTTP 状态代码响应差异的最佳可视化仪表板是什么?

spring-boot grafana spring-boot-actuator prometheus

6
推荐指数
1
解决办法
1万
查看次数