Метрики Aws CloudWatch для каждого Java-контейнера ECSJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Метрики Aws CloudWatch для каждого Java-контейнера ECS

Сообщение Anonymous »

У меня есть кластер ECS, на котором выполняется одно и то же приложение на нескольких экземплярах Fargate. Мне нужно предоставить данные микрометра для CloudWatch и иметь идентификатор контейнера. Например, метрика jdbc.connections.active.value должна присутствовать для каждого контейнера.
Я использовал aws sdk 2, и мне удалось передать метрики в облако с помощью следующей конфигурации, но все контейнеры передают значения одной и той же метрике CloudWatch.

Код: Выделить всё

import io.micrometer.cloudwatch2.CloudWatchConfig;
import io.micrometer.cloudwatch2.CloudWatchMeterRegistry;
import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.MeterRegistry;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import software.amazon.awssdk.services.cloudwatch.CloudWatchAsyncClient;

import java.time.Duration;
import java.util.Map;

@Configuration
public class MetricsConfiguration {

private String metricsNamespace = "test";

@Bean
public CloudWatchAsyncClient cloudWatchAsyncClient() {
return CloudWatchAsyncClient
.builder()
.build();
}

@Bean
public MeterRegistry getMeterRegistry() {
CloudWatchConfig cloudWatchConfig = setupCloudWatchConfig();

return new CloudWatchMeterRegistry(
cloudWatchConfig,
Clock.SYSTEM,
cloudWatchAsyncClient());
}

private CloudWatchConfig setupCloudWatchConfig() {
return new CloudWatchConfig() {

private final Map configuration = Map.of(
"cloudwatch.namespace", metricsNamespace,
"cloudwatch.step", Duration.ofSeconds(30).toString()
);

@Override
public String get(@NotNull String key) {
return configuration.get(key);
}
};
}
}
Я пытался добавить измерение, но безуспешно:

Код: Выделить всё

private final Map configuration = Map.of(
"cloudwatch.namespace", metricsNamespace,
"cloudwatch.step", Duration.ofSeconds(30).toString(),
"cloudwatch.container_label", "container_name"
);
В CloudWatch, даже если у меня есть два контейнера, для моих показателей все равно есть только одна запись:
Изображение

(

Код: Выделить всё

service-name
— это пространство имен)
Я ожидаю, что для каждого контейнера для jdbc.connections.active.value будет одна запись метрики

Подробнее здесь: https://stackoverflow.com/questions/790 ... -container
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»