Новая реликвия для весеннего ботинка

Недавно мы конвертировали приложение Tomcat/ Spring в Spring Boot. Все отлично работает, кроме новой реликвии. Есть ли способ, которым я могу легко настроить новую реликвию с проектом весенней загрузки. Я не хочу жестко кодировать местоположение нового пути JAR агента реликвии, а затем запустить проект весенней загрузки с путем.

редактировать: весенний загрузочный проект с Maven

3 ответа

Решение

Вы можете включить NewRelic Maven зависимость и использовать maven-dependency-plugin распаковать в ваш target/classes каталог, который позволяет Maven включить его в окончательный файл Jar. Тогда вы должны добавить Premain-Class атрибут в файл манифеста, и вы можете использовать свой jar приложения в качестве -javaagent источник. Вы можете найти подробности в моем блоге

Пошаговые инструкции

  • Извлеките файлы из нового архива Java-агента.
  • Создайте каталог с именем newrelic в корне вашего приложения.
  • Поместите файл newrelic.jar из архива в созданную выше папку newrelic
  • Поместите файл конфигурации YAML newrelic.yml в созданную выше папку newrelic.
  • Обновите значения в newrelic.yml, как показано ниже.
    • license_key: "ваш лицензионный ключ"
    • app_name: "Ваше имя приложения"
  • Запустите ваше приложение, используя опцию javaagent
    • java -javaagent: newrelic \ newrelic.jar -jar yourapplication.jar

Опция -javaagent должна быть перед -jar, чтобы агент мог запускаться

Я застрял с той же проблемой, вот что я понял. Я реализовал 2-й способ для своих приложений. Существует 3 способа интеграции New Relic с приложением Spring Boot:

  1. Использование агента Java, предоставленного New Relic
  2. Использование зависимости от микрометра New Relic
  3. Зависимость новой реликвии от Micormeter

1. Конфигурация с использованием агента Java, предоставленного New Relic

  1. Загрузите агент Java по этому URL- адресу: https://docs.newrelic.com/docs/release-notes/agent-release-notes/java-release-notes/
  2. Извлеките его.
  3. Измените файл newrelic.yml внутри извлеченной папки, включив в него ваш license_key:app_name:
  4. Создайте приложение SpringBoot с некоторыми конечными точками REST.
  5. Создайте приложение.
  6. Перейдите к корневому пути, по которому вы извлекли агент Java newrelic.
  7. Введите эту команду java -javagent:<path to your new relic jar>\newrelic.jar -jar <path to your application jar>\<you rapplication jar name>.jar

Для просмотра метрик приложения-

  1. Войдите в свою учетную запись New Relic.
  2. Перейдите на вкладку «Проводник».
  3. Нажмите «Сервисы-APM».
  4. Вы можете увидеть имя вашего приложения (которое вы упомянули в файле newrelic.yml) в списке.
  5. Нажмите на название приложения.
  6. Приборная панель должна выглядеть примерно так.

изображение

Предпочтительным способом сделать это является использование зависимости Micrometer от New Relic.

2. Конфигурация с использованием зависимости от микрометра New Relic

  1. Добавьте эту зависимость
      <dependency>
        <groupId>com.newrelic.telemetry</groupId>
        <artifactId>micrometer-registry-new-relic</artifactId>
        <version>0.7.0</version>
    </dependency>
  1. Изменить MicrometerConfig.javaclass, чтобы добавить ключ API и имя приложения.
      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;
    }
}
  1. Запустите приложение.

Чтобы просмотреть показатели приложения,

  1. Войдите в свою учетную запись New Relic.
  2. Перейдите на вкладку «Проводник».
  3. Нажмите «Сервисы» — «OpenTelemetry».
  4. Вы можете увидеть имя вашего приложения (которое вы упомянули в файле MicrometerConfig) в списке.
  5. Нажмите на название приложения.
  6. Приборная панель должна выглядеть примерно так.

изображение

Вот ссылка на мой первоначальный вопрос .

Другие вопросы по тегам