我尝试在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,但不能.
我想知道有没有办法使用 Spring Boot Actuator 获取 CPU 使用率指标?我可以使用 /metrics 和 /health 端点查看其他指标,但无法获取 CPU 使用率。我想避免编写额外的类只是为了查看 CPU 使用情况。任何的想法?谢谢
据我了解,/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 执行器?
我们已经看到了许多与 Spring Boot 1.5+ 版本的 Health Actuator 端点相关的问题。在经历了其中的一些之后,我们仍然不知所措。
我们的目标是:
HttpSecurity)我们尝试过:
WebSecurityConfigurerAdapter并配置WebSecurity对象以忽略/health端点的安全性,然后/health根据将多个 URL 路由到 Spring Boot Actuator 的健康端点,将单独的端点映射到端点,以希望启用安全路径。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
我想将 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 应用程序集成?
为了在单独的端口上运行 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)
What's the difference between
management.server.port,
management.port and
local.management.port?
我正在使用 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_auth或bearer_token。标题没有其他选项。
我目前在我的 kubernetes 配置中有以下生命周期钩子:
lifecycle:
preStop:
httpGet:
path: /path
port: 8080
Run Code Online (Sandbox Code Playgroud)
我想在这个钩子中调用 spring boot 执行器的关闭端点,但是这个端点需要一个 post 请求而不是一个 get。这是可能的,还是我应该定义自己的端点来优雅地关闭我的应用程序?
谢谢你的帮助!
我最近将我们的系统从 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 的问题,以及如何获取 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 ×8
prometheus ×2
cpu-usage ×1
grafana ×1
java ×1
jwt ×1
kubernetes ×1
logback ×1
metrics ×1
spring ×1
spring-mvc ×1