Springboot с метками Spring-cloud-aws и cloudwatch
Я хотел бы начать использовать показатели в своем приложении Springboot, а также опубликовать их в своем облачном хранилище Amazon.
Я знаю, что с помощью Springboot мы можем активировать пружинный привод, который предоставляет метрики памяти и публикует их в конечной точке / metrics.
Я наткнулся на Spring-cloud, у которого, кажется, есть некоторая библиотека для периодической публикации этих метрик в Cloudwatch, однако я понятия не имею, как их настроить? Существует абсолютно 0 примеров того, как его использовать.
Кто-нибудь может объяснить, каков шаг, чтобы метрика была отправлена в cloudwatch?
4 ответа
Вы можете проверить мою статью здесь:
http://dkublik.github.io/springboot-metrics-with-servo-and-aws-cloudwatch
Я написал это после настройки этого в моем проекте.
Из заголовка:
"В статье объясняется, как отправлять метрики Spring Boot и Netflix Servo в AWS CloudWatch. Более того, в нем описываются механизмы, которые делают это. В нем также упоминаются проблемы, с которыми я сталкиваюсь, пытаясь сделать то же самое с Spring Boot и Spectator".
Я просмотрел несколько документов для этого. Что-то в них отсутствовало. Итак, я пишу все необходимое для настройки пользовательских метрик в Cloudwatch из вашего весеннего загрузочного приложения.
Установите эти свойства:
management.metrics.export.cloudwatch.namespace=my-application
management.metrics.export.cloudwatch.batchSize=20
management.metrics.export.cloudwatch.step=5s
Тщательно упомяните пространство имен. Это имя будет отражено в ваших метриках Cloudwatch. По умолчанию "шаг" для реестра cloudwatch составляет 1 минуту. Так что вы можете изменить это здесь.
Добавьте эту зависимость в свой pom, если она еще не присутствует:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
</dependency>
Это сделано. Теперь вы сможете видеть метрики в cloudwatch. Теперь, если вы хотите куда-то разместить пользовательские метрики, тогда используйте Autowire для MetricsRegistry и просто создайте те метрики, которые захотите.
Создадим счетчик для отправки смс например:
Counter smsCounter = Counter.builder(COUNT_METRICS)
.tag("type", "sms")
.description("The number of sms sent")
.register(meterRegistry);
Теперь обновите счетчик, в котором выполняется действие, следующим образом:
smsCounter.increment();
Проверьте этот разговор:
@sachinlad Действительно, к сожалению, документация отсутствует, мы создадим обновленную версию в следующих выпусках. Включите metic экспорт в Cloud Formation, вам нужно настроить пространство имен с помощью свойства cloud.aws.cloudwatch.namespace
Посмотрите на интеграционный тест https://github.com/spring-cloud/spring-cloud-aws/blob/master/spring-cloud-aws-integration-test/src/test/java/org/springframework/cloud/aws/metric/MetricExporterTest.java который является интеграционным тестом и экспортирует метрики в формирование облака.
Надеюсь, что это поможет, не стесняйтесь вернуться в случае каких-либо проблем.
Если вам нужно готовое решение, которое не требует использования всей библиотеки облачных пружин, вы можете использовать: https://github.com/dipayan90/spring-actuator-cloudwatch
Вот установка для весенней загрузки 2.
Использование пружинной загрузки 2.0.3.
Добавьте эти зависимости:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-actuator</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
application.yml:
# you might want to set this to true depending on your setup
cloud.aws.stack.auto: false
# set static region to avoid s3 error - adjust region accordingly
cloud.aws.region.static: eu-west-1
management:
metrics.export.cloudwatch.namespace: my-app
metrics.export.cloudwatch.batch-size: 20