Как сдеалать метрику кол-ва вызовов за интервал времени в Spring micrometer?

Для создания метрики количества вызовов за определенный интервал времени в Spring Micrometer можно использовать класс Timer.

Для начала, добавьте зависимость Micrometer в файл pom.xml:

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Затем, создайте конфигурационный файл application.properties и включите подсчет метрик:

management.metrics.export.prometheus.enabled=true

Теперь вы можете создать метрику количества вызовов с помощью класса Timer. Вот пример кода:

import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.core.instrument.Timer;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    private final Timer timer;

    public MyService() {
        timer = Timer.builder("my_service.calls")
                .description("Number of calls to MyService")
                .register(Metrics.globalRegistry);
    }

    public void performOperation() {
        // Ваш код

        // Регистрируем вызов метрики
        timer.record(() -> {
            // Логика вашего метода
        });
    }
}

В приведенном выше примере класс MyService создает метрику с именем "my_service.calls". Метод performOperation регистрирует вызов метрики с помощью метода record(). Внутри метода record() вы можете поместить всю логику вашего метода, чтобы замерить время выполнения.

Вы также можете использовать аннотации вместо явного создания метрик в коде. Вот пример аннотации:

import io.micrometer.core.annotation.Timed;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    @Timed("my_service.calls")
    public void performOperation() {
        // Ваш код
    }
}

Аннотация @Timed будет автоматически регистрировать вызовы метрики при выполнении метода performOperation.

Это основы создания метрики количества вызовов за интервал времени в Spring Micrometer. Основываясь на этом примере, вы можете настроить и сохранять другие метрики, а также использовать различные методы и настройки для более точного измерения и отображения статистики.