Собственные метрики на прокси-сервере Rsocket для Prometheus в задачах Spring Cloud Data Flow - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь установить sh мониторинг для краткосрочных задач Spring Cloud Data Flow . Начиная с более новых версий SCDF, рекомендуется использовать прокси-сервер rsocket для prometheus .

На основе диаграммы управления я смог развернуть прокси-сервер rsocket. Связь работает, и собственные метрики прокси доступны в prometheus. Но я все еще пытаюсь выставить собственный счетчик во время приложения.

Я включил необходимые зависимости:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer.prometheus</groupId>
            <artifactId>prometheus-rsocket-spring</artifactId>
            <version>1.0.0</version>
        </dependency>
        <-- Next two: required or not? -->
        <dependency>
            <groupId>io.micrometer.prometheus</groupId>
            <artifactId>prometheus-rsocket-client</artifactId>
            <version>1.0.0</version>
        </dependency> 
        <dependency>
            <groupId>io.rsocket</groupId>
            <artifactId>rsocket-transport-netty</artifactId>
        </dependency>

А в приложении я добавил простой счетчик в код:

   private PrometheusMeterRegistry meterRegistry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
   private PrometheusRSocketClient client;

   private Counter                 reqCounter;

   @PostConstruct
   public void initMontitor() {
        client = PrometheusRSocketClient.build(meterRegistry, TcpClientTransport.create("scdf-dev-prometheus-proxy.batch-dev", 7001))
                .connect();
        reqCounter = meterRegistry.counter("batch.example.count", "client", "example");   
    }

    @PreDestroy
    public void releaseMontitor() {   
        client.pushAndClose();
    }

    @Override
    public Result process(Usage usage) {
        reqCounter.increment();
        /// ...
   }

Приложение запускается без проблем. Но никаких показателей не видно ни на самом prometheus, ни на подключенной конечной точке / metrics / прокси. Чего не хватает?

EDIT: Хорошо, тем временем я обнаружил, что связь между моей задачей и прокси-сервером RSocket работает. Но в отличие от документации «... будет удерживать их [метрики] до следующей очистки Прометеем», мои метрики c в конечной точке «метрики / подключено» исчезнут, как только мои приложение заканчивается.

...