标签: spring-boot-actuator

将Spring Boot Actuator指标(和Dropwizard指标)导出到Statsd

我正在尝试将端点上可见的所有指标导出/metricsStatsdMetricWriter.

到目前为止,我有以下配置类:

package com.tonyghita.metricsdriven.service.config;

import com.codahale.metrics.MetricRegistry;
import com.ryantenney.metrics.spring.config.annotation.EnableMetrics;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.autoconfigure.ExportMetricReader;
import org.springframework.boot.actuate.autoconfigure.ExportMetricWriter;
import org.springframework.boot.actuate.metrics.reader.MetricReader;
import org.springframework.boot.actuate.metrics.reader.MetricRegistryMetricReader;
import org.springframework.boot.actuate.metrics.statsd.StatsdMetricWriter;
import org.springframework.boot.actuate.metrics.writer.MetricWriter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@EnableMetrics(proxyTargetClass = true)
public class MetricsConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(MetricsConfig.class);

    @Value("${statsd.host:localhost}")
    private String host = "localhost";

    @Value("${statsd.port:8125}")
    private int port;

    @Autowired
    private MetricRegistry metricRegistry;

    @Bean
    @ExportMetricReader
    public MetricReader metricReader() {
        return new MetricRegistryMetricReader(metricRegistry);
    }

    @Bean
    @ExportMetricWriter
    public MetricWriter metricWriter() …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-boot-actuator

9
推荐指数
3
解决办法
2万
查看次数

Spring启动指标+ datadog

有谁知道如何将Spring启动指标与datadog集成?

Datadog是一种面向IT的云规模监控服务.

它允许用户使用大量图表和图表轻松地查看他们的数据.

我有一个spring boot应用程序,它使用dropwizard指标填充有关我注释的所有方法的大量信息@Timed.

另一方面,我正在heroku中部署我的应用程序,因此我无法安装Datadog代理.

我想知道是否有一种方法可以自动将spring boot metric系统报告与datadog集成.

java spring-boot datadog spring-boot-actuator metrics-spring

9
推荐指数
2
解决办法
9173
查看次数

指定端口时,Spring Boot Actuator端点的单元测试无效

最近我改变了我的spring boot属性来定义一个管理端口.这样做,我的单元测试开始失败:​​(

我编写了一个测试/ metrics端点的单元测试,如下所示:

@RunWith (SpringRunner.class)
@DirtiesContext
@SpringBootTest
public class MetricsTest {

    @Autowired
    private WebApplicationContext context;

    private MockMvc mvc;

    /**
     * Called before each test.
     */
    @Before
    public void setUp() {
        this.context.getBean(MetricsEndpoint.class).setEnabled(true);
        this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build();
    }

    /**
     * Test for home page.
     *
     * @throws Exception On failure.
     */
    @Test
    public void home()
            throws Exception {
        this.mvc.perform(MockMvcRequestBuilders.get("/metrics"))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }
}        
Run Code Online (Sandbox Code Playgroud)

以前这是过去了.添加后:

management.port=9001
Run Code Online (Sandbox Code Playgroud)

测试开始失败:

home Failed: java.lang.AssertionError: Status expected: <200> but was: <404>
Run Code Online (Sandbox Code Playgroud)

我尝试用以下方法更改@SpringBootTest注释:

@SpringBootTest (properties = {"management.port=<server.port>"})
Run Code Online (Sandbox Code Playgroud)

server.port使用的编号在哪里.这似乎没有任何区别. …

junit spring-boot spring-boot-actuator

9
推荐指数
2
解决办法
5625
查看次数

Prometheus 配置不适用于 Spring Boot 2.3.0:ClassNotFoundException:io.micrometer.prometheus.HistogramFlavor

应用程序在版本 2.2.6 下正常工作,但随着应用程序升级到最新版本的 spring boot 2.3.0,它停止工作并在启动过程中失败。

2020-05-20T08:43:04.408+01:00 [APP/PROC/WEB/0] [OUT] 2020-05-20 07:43:04.407 ERROR 15 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'webMvcMetricsFilter' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'compositeMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/CompositeMeterRegistryConfiguration.class]: Unsatisfied dependency expressed through method 'compositeMeterRegistry' parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'prometheusMeterRegistry' defined …

spring-boot-actuator prometheus spring-boot-2

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

x509:未知权威机构为普罗米修斯签署的证书

我试图使用 Prometheus 监视我们的 Spring boot 应用程序之一,但不幸的是该服务的状态在 ubuntu 服务器中没有启动,它 \xe2\x80\x99s 显示一些错误,例如 \xe2\x80\x93

\n

/prometheus: x509: 由未知机构签名的证书,从我本地的 Prometheus 中该服务已启动,并且还能够监视一些 http 请求。\n错误快照

\n

grafana spring-boot-actuator prometheus

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

Spring Actuator 变化从 Spring Boot 2.4.3 升级到 2.6.2

我们有一个使用 Spring Boot 2.4.3 开发的 Spring Boot Web 应用程序并部署 Spring Actuator。我正在研究升级到 Spring Boot 2.6.2 并且大多数问题都已解决。我从项目和 war 文件中删除了弹簧执行器启动器,它部署并运行良好。我们正在使用 Java 11 和 Wildfly 18 运行。

如果我将弹簧执行器启动器添加回项目 pom 文件和 war 文件 pom 文件中,则会在部署过程中显示以下警告:

16:44:28,063 WARN  [org.jboss.modules.define] (Thread-115) Failed to define class io.micrometer.core.instrument.binder.jersey.server.MetricsApplicationEventListener in Module "deployment.test.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link io/micrometer/core/instrument/binder/jersey/server/MetricsApplicationEventListener (Module "deployment.test.war" from Service Module Loader): org/glassfish/jersey/server/monitoring/ApplicationEventListener
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
    at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
    at org.jboss.modules.Module.loadModuleClass(Module.java:731)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
    at …
Run Code Online (Sandbox Code Playgroud)

java spring-boot spring-boot-actuator

9
推荐指数
1
解决办法
4275
查看次数

Spring控制器和端点之间的区别

Spring启动器执行器提供一些端点,如健康,指标,信息.它还允许我们编写自己的自定义端点.

我有一个要求,我需要将一些Dropwizard指标统计信息作为端点公开.最新的Spring-boot确实支持dropwizard指标,但它不符合我的要求,所以我打算拥有自己的Web端点/stats

但现在我无法确定它应该是普通的Controller还是定制的执行器Endpoint.这两个术语有什么区别?

PS:问题似乎确实是意见基础,但答案应该足够简单.

java spring spring-mvc spring-boot-actuator

8
推荐指数
1
解决办法
5217
查看次数

在Spring Boot Actuator中为/ health端点启用CORS

我们希望为/health弹簧启动执行器提供的端点的所有GET请求启用Cors .

我们尝试添加以下bean但没有成功

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/health").allowedMethods("GET");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

spring cors spring-boot spring-boot-actuator

8
推荐指数
2
解决办法
6521
查看次数

如何在Spring Boot项目的debug/run上的IntelliJ"out"目录中生成build-info.properties?

在我的build.gradle中,我添加了spring build info:

springBoot {
    mainClass = "${springBootMainClass}"

    buildInfo() {
        additionalProperties = [
                name: "${appName}",
                version: "${version}-${buildNumber}",
                time: buildTime()
        ]
    }
}

def buildTime() {
    final dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
    dateFormat.timeZone = TimeZone.getTimeZone('GMT')
    dateFormat.format(new Date())
}
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行时,这会正确添加/META-INF/build-info.properties文件,/build/resources/main以便"/info"端点以JSON显示构建信息.

当我的IntelliJ的运行/调试按钮运行的IntelliJ并没有使用/build目录,而是使用/out目录,也没有运行gradle这个任务,所以/info端点具有空的JSON.

如何让它生成该文件并将其放在/out目录中?

java spring intellij-idea spring-boot spring-boot-actuator

8
推荐指数
3
解决办法
3068
查看次数

Spring Boot应用程序+ Kubernetes活动/准备情况检查

我正在构建一些Spring Boot微服务,这些服务将部署在Kubernetes(专用于AKS)集群中。我正计划将活动性和就绪性检查的probePath设置为同时指向执行器运行状况端点,但我想知道这是否不是最佳选择。我最初的想法是,检查路径将很有用(至少对于就绪状态而言),以便在Spring启动并能够处理请求之前,不向其发送流量。由于这些服务使用数据库连接,并且如果执行器运行状况指示器无法建立连接,则执行器运行状况指示器将报告状态为关闭,这不是一个好主意吗?

考虑到活动性,我认为它可能会一遍又一遍地回收豆荚/容器,即使(在数据库关闭的情况下)它可能无法解决任何问题。

准备就绪后,我认为如果数据库关闭,这可能会导致可用应用程序池为0。如果数据库关闭,该应用程序本身很有可能不是很有用,但是我认为某些部件可能仍然可以工作。

对于这种事情是否有建议的最佳实践?

spring-boot kubernetes spring-boot-actuator

8
推荐指数
1
解决办法
685
查看次数