Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 210новых вакансий за сутки·93 612вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 266
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 116
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии990
  • AI вакансии951
  • Frontend вакансии749
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

DevOps и инфраструктура

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

Аналитика и данные

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

Другие направления

  • Проджект-менеджер620
  • UI/UX дизайн147
  • Ручное тестирование14

По регионам

  • Вакансии в США44 437
  • Вакансии в Европе23 855
  • Вакансии в Канаде4 483
  • Работа в России3 904

По формату

  • Удалённые вакансии75 212
  • Релокация в США44 436
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме Spring BootВсе вопросы
Spring BootSeniorТеория

Как устроены Actuator metrics/tracing и как подключить OpenTelemetry?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Actuator предоставляет метрики через Micrometer (эндпоинт /actuator/prometheus) и трассировку через Micrometer Tracing. Для OpenTelemetry подключите micrometer-tracing-bridge-otel и настройте OTLP экспортёр.

Метрики: Micrometer + Prometheus

Добавьте зависимости в build.gradle:

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

Конфигурация в application.yml:

management:
  endpoints:
    web:
      exposure:
        include: health,info,metrics,prometheus
  metrics:
    tags:
      application: my-service
      environment: production
  endpoint:
    health:
      show-details: always

После старта GET /actuator/prometheus отдаёт метрики в формате Prometheus. Стандартные метрики включают JVM (heap, GC, threads), HTTP запросы (http.server.requests), пул соединений HikariCP, кэши.

Actuator metrics, tracing и интеграция с OpenTelemetry

Spring Boot Actuator предоставляет готовую инфраструктуру для метрик и трассировки. С версии 3.x метрики реализованы через Micrometer, трассировка — через Micrometer Tracing (обёртка над Brave/OpenTelemetry).

Кастомные метрики через MeterRegistry

@Service
public class OrderService {

    private final Counter ordersCreated;
    private final Timer orderProcessingTime;

    public OrderService(MeterRegistry registry) {
        this.ordersCreated = Counter.builder("orders.created")
            .description("Total orders created")
            .tag("type", "online")
            .register(registry);
        this.orderProcessingTime = Timer.builder("orders.processing.time")
            .description("Order processing duration")
            .register(registry);
    }

    public Order createOrder(OrderRequest req) {
        return orderProcessingTime.record(() -> {
            Order order = processOrder(req);
            ordersCreated.increment();
            return order;
        });
    }
}

Трассировка: Micrometer Tracing + OpenTelemetry

Зависимости для OpenTelemetry экспортёра в OTLP (OpenTelemetry Protocol):

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-otel'
implementation 'io.opentelemetry.instrumentation:opentelemetry-spring-boot-starter'
implementation 'io.opentelemetry:opentelemetry-exporter-otlp'

Конфигурация трассировки:

management:
  tracing:
    sampling:
      probability: 1.0   # 100% в dev, 0.1 в prod
  otlp:
    tracing:
      endpoint: http://otel-collector:4318/v1/traces

spring:
  application:
    name: order-service

Метрики через OTLP в OpenTelemetry Collector

Для отправки метрик в OTLP (вместо Prometheus scrape):

implementation 'io.micrometer:micrometer-registry-otlp'
management:
  otlp:
    metrics:
      export:
        url: http://otel-collector:4318/v1/metrics
        step: 30s

OpenTelemetry Collector конфигурация

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4318

exporters:
  prometheus:
    endpoint: 0.0.0.0:8889
  jaeger:
    endpoint: jaeger:14250
    tls:
      insecure: true

service:
  pipelines:
    metrics:
      receivers: [otlp]
      exporters: [prometheus]
    traces:
      receivers: [otlp]
      exporters: [jaeger]

Добавление span-атрибутов вручную

@Service
public class PaymentService {

    private final Tracer tracer;

    public void processPayment(String orderId, BigDecimal amount) {
        Span span = tracer.nextSpan().name("payment.process").start();
        try (Tracer.SpanInScope ws = tracer.withSpan(span)) {
            span.tag("order.id", orderId);
            span.tag("payment.amount", amount.toString());
            // бизнес-логика
        } catch (Exception e) {
            span.error(e);
            throw e;
        } finally {
            span.end();
        }
    }
}

Подводные камни

  • Конфликт Brave и OTel бриджей — нельзя одновременно подключать micrometer-tracing-bridge-brave и micrometer-tracing-bridge-otel; выберите один.
  • sampling.probability=1.0 в prod — 100% sampling при высокой нагрузке создаёт огромный объём данных и деградирует производительность; используйте 0.01–0.1.
  • management.endpoints.web.exposure — по умолчанию открыт только health; забытый prometheus в include означает, что Prometheus не сможет скрейпить метрики.
  • Трассировка не пробрасывается через @Async без настройки TaskDecorator — context propagation обрывается на границе потоков.
  • Имена метрик: Micrometer конвертирует camelCase в kebab.case или нормализует для конкретного реестра; ожидаемое имя в Prometheus может отличаться от заданного в коде.
  • OTLP endpoint у разных инструментов: gRPC порт 4317, HTTP/protobuf порт 4318 — путаница частая причина потери данных.
  • Spring Boot 3.x и OTel автоконфигурация из opentelemetry-spring-boot-starter может конфликтовать с Micrometer Tracing автоконфигурацией — изучите, какие бины переопределяются.

Типичные ошибки

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

Что проверяет интервьюер

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

Как вы знаете этот вопрос?

Проверить себя по теме Spring Boot →

Источники

  • https://docs.spring.io/spring-boot/reference/web/reactive.html
←Предыдущий вопросВ чём разница между `@Component`, `@Service`, `@Repository` и `@Controller`?

Связанные темы

Spring Bootrisk-analysisspring-boot-productiontechnical-depth

Вакансии с этим навыком

  • Full Stack Developer (Java / Angular)
  • FullStack Developer - Java & Angular
  • Java Developer (with German)
  • Senior Full Stack разработчик
  • Programista Backend / Software Engineer

Частые вопросы на собеседовании

  • Как реализовать health checks в Spring Boot Actuator?
  • Что делает аннотация @SpringBootApplication?
  • Что такое Spring Boot и чем он отличается от Spring Framework?
  • В каких backend-проектах Spring Boot является сильным выбором, а где лучше выбрать более простой или другой стек?