我试图用千分尺集成一个简单的Spring Boot应用程序与新的遗迹。
以下是配置详细信息:-
application.properties
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.metrics.export.newrelic.enabled=true
management.metrics.export.newrelic.api-key:MY_API_KEY // Have added the API key here
management.metrics.export.newrelic.account-id: MY_ACCOUNT_ID // Have added the account id here
logging.level.io.micrometer.newrelic=TRACE
砰.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>springboot.micrometer.demo</groupId>
<artifactId>micrometer-new-relic</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>micrometer-new-relic</name>
<description>Demo project for actuator integration with new relic using micrometer</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-new-relic</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
我能够使用< code > micrometer-registry-Prometheus 依赖关系将Prometheus与此应用程序集成。我在本地系统中设置了Prometheus在Docker容器中运行。我使用了下面的一组命令-
docker pull prom/prometheus
docker run -p 9090:9090 -v D:/Workspaces/STS/server_sent_events_blog/micrometer-new-relic/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
prometheus.yml
global:
scrape_interval: 4s
evaluation_interval: 4s
scrape_configs:
- job_name: 'spring_micrometer'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['my_ip_address:8080']
当我导航到localhost:9090/targets
时,我可以看到Prometheus仪表板显示了我的应用程序详细信息,它可以从中获取数据。在仪表板中,我可以看到我的自定义指标以及其他指标。
所以我的问题是,我想用新的遗物达到同样的效果。我已经添加了< code > micrometer-registry-new-relic POM依赖项。我还共享了< code > application . properties 文件。我可以在我的控制台上看到日志说它正在向新遗迹发送数据-
2021-10-24 12:42:04.889 DEBUG 2672 --- [trics-publisher] i.m.n.NewRelicInsightsApiClientProvider : 已成功向新Relic发送了58个指标。
问题:
https://discuse . new relic . com/t/integrate-Spring-boot-actuator-with-new-relic/126732按照上面的链接,Spring Bootctuator推送metric作为事件类型“SpringBootSample”。使用NRQL查询,我们可以确认这一点-
从Spring靴采样选择最大(值) 时间序列 1 分钟,其中指标名称 = 'jvm内存已提交'
这是我在这里分享的演示的GitHub链接。我没有找到任何明确的说明,有一些例子,但使用了Java代理。
任何形式的帮助都将不胜感激。
>
接下来的步骤是什么?
您似乎已完成并已成功将指标传送到 NewRelic。
我需要像普罗米修斯那样在本地运行New Relic服务器吗?
不,NewRelic是SaaS产品。
我在哪里可以可视化这些数据?我在New Relic有一个帐户,我在那里什么也没看到
看来你已经找到了(截图)。
这个查询的结果说明了什么?它是与我的应用相关的指标吗?< br >从截图来看,我无法判断这是否是您的应用程序,但这似乎是Spring Boot应用程序推送的< code > JVM . memory . committed 指标(很有可能)。
为了查看这是否是你的应用程序,你可以添加一些普通的标签,这些标签可以告诉你应用程序的名称和某种实例ID(或者主机名?)如果同一个应用程序有多个实例,请参阅:
据我目前所知。有3种方法可以将New Relic与Spring Boot Application集成-
使用新遗物的千分尺依赖是做到这一点的首选方法。
<dependency>
<groupId>com.newrelic.telemetry</groupId>
<artifactId>micrometer-registry-new-relic</artifactId>
<version>0.7.0</version>
</dependency>
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.newrelic.telemetry.Attributes;
import com.newrelic.telemetry.micrometer.NewRelicRegistry;
import com.newrelic.telemetry.micrometer.NewRelicRegistryConfig;
import java.time.Duration;
import io.micrometer.core.instrument.config.MeterFilter;
import io.micrometer.core.instrument.util.NamedThreadFactory;
@Configuration
@AutoConfigureBefore({ CompositeMeterRegistryAutoConfiguration.class, SimpleMetricsExportAutoConfiguration.class })
@AutoConfigureAfter(MetricsAutoConfiguration.class)
@ConditionalOnClass(NewRelicRegistry.class)
public class MicrometerConfig {
@Bean
public NewRelicRegistryConfig newRelicConfig() {
return new NewRelicRegistryConfig() {
@Override
public String get(String key) {
return null;
}
@Override
public String apiKey() {
return "your_api_key"; // for production purposes take it from config file
}
@Override
public Duration step() {
return Duration.ofSeconds(5);
}
@Override
public String serviceName() {
return "your_service_name"; // take it from config file
}
};
}
@Bean
public NewRelicRegistry newRelicMeterRegistry(NewRelicRegistryConfig config) throws UnknownHostException {
NewRelicRegistry newRelicRegistry = NewRelicRegistry.builder(config)
.commonAttributes(new Attributes().put("host", InetAddress.getLocalHost().getHostName())).build();
newRelicRegistry.config().meterFilter(MeterFilter.ignoreTags("plz_ignore_me"));
newRelicRegistry.config().meterFilter(MeterFilter.denyNameStartsWith("jvm.threads"));
newRelicRegistry.start(new NamedThreadFactory("newrelic.micrometer.registry"));
return newRelicRegistry;
}
}
我想使用New Relic,使用Spring启动执行器的千分尺支持。我没有使用代理。我有如下配置。我可以在数据资源管理器(事件或度量等)中看到数据。但是,我在资源管理器页面的APM部分看不到任何东西。 这是由于配置的根本原因,也许是我错过了什么? 我想我不用用代理,因为我用的是千分尺,对吗? 我在资源管理器页面的APM部分看不到任何东西,这真的是一个问题吗?它会在适当的集成中自动出现吗? 谢谢。
我正在将Spring Cloud Stream应用程序迁移到功能方法。到目前为止,我使用了提供Spring集成的千分尺指标。请参见Spring集成-千分尺集成。 自迁移以来,使用StreamBridge生成的消息不再生成度量。这似乎是因为Spring集成在将通道定义为bean时创建了它的度量,而StreamBridge则动态创建通道。 话虽如此,我的问题是: SCS是否提供任何其他类型的度量? 如
我甚至不使用新的遗迹,我得到了他们的错误。事情就这么突然发生了。 我使用的是最新的Android Studio构建(0.61)。就连我的主分支也有同样的错误。我的机器上有其他项目使用新的遗迹,但不是这个。这个项目没有使用新的遗迹在任何方式,与其说是一个任性的梯度依赖。 项目的build.gradle: 编辑 该项目现在在建筑中导入新的遗迹。根据用户的建议。这解决了这个问题,但我仍在探索为什么,因为
我甚至不使用新的遗物,我得到错误的他们。只是突然发生了。 我使用的是最新的Android Studio版本(0.61)。甚至我的主分支也有同样的错误。在我的机器上有其他的项目使用新的遗迹,但没有这一个。这个项目不使用新的遗迹在任何方式,更多的是一个任性的梯度依赖。 我试着清理我的gradle缓存,重新下载所有的第三方库,没有工作。 编辑 该项目现在根据用户建议在Build.Gradle中导入新的遗
我对Spring很陌生,正在尝试将我的应用程序连接到麋鹿。该应用程序运行的是Spring boot 1.5.5,因此我使用的是微米遗产。我的pom看起来像这样: 每当我尝试启动我的应用程序时,我都会收到以下错误: 根本原因似乎是类io.micrometer.core.instrument.config.validate.Validated它似乎没有像它应该的那样出现在包中。对此有什么想法吗?
最近,我们将tomcat/Spring应用程序转换为Spring boot。除了新遗迹之外,一切都很好。有没有一种方法可以让我很容易地使用Spring Boot项目配置新遗迹。我不想硬编码新遗迹代理jar路径的位置,然后使用该路径运行Spring Boot项目。 编辑:Spring boot项目使用maven