[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sovremennaya-razrabotka-web-kak-obespechit-nablyudaemost-prilozheniya":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},1196,"kak-obespechit-nablyudaemost-prilozheniya",37,"sovremennaya-razrabotka-web","Современная разработка WEB","🌐","Как обеспечить наблюдаемость приложения?","Наблюдаемость (observability) — это способность понять внутреннее состояние системы по её внешним сигналам, которая строится на трёх столпах: метрики, логи и трейсы, связанных через trace ID.\n\n> Аналогия из жизни: наблюдаемость — это как приборная панель автомобиля. Спидометр (метрики) показывает текущую скорость, бортовой журнал (логи) фиксирует события, а навигатор (трейсы) показывает маршрут запроса от начала до конца.\n\n### Стек наблюдаемости\n\n| Компонент | Инструмент | Назначение |\n|-----------|-----------|-----------|\n| Метрики | Prometheus + Micrometer | Числовые показатели (latency, throughput, errors) |\n| Логи | Loki + Logback | Структурированные события |\n| Трейсы | Tempo + OpenTelemetry | Путь запроса через сервисы |\n| Визуализация | Grafana | Дашборды, алертинг |\n| SDK | OpenTelemetry (OTel) | Вендор-нейтральный сбор телеметрии |\n\n### Конфигурация\n\n```yaml\nmanagement:\n  endpoints:\n    web:\n      exposure:\n        include: health, info, prometheus, metrics\n  endpoint:\n    health:\n      probes:\n        enabled: true  # Kubernetes: \u002Factuator\u002Fhealth\u002Fliveness, \u002Freadiness\n  metrics:\n    tags:\n      application: order-service\n    distribution:\n      percentiles-histogram:\n        http.server.requests: true\n  tracing:\n    sampling:\n      probability: 1.0  # 100% в dev, 10-50% в prod\n```\n\n### Кастомные метрики\n\n```java\n@Component\n@RequiredArgsConstructor\npublic class OrderMetrics {\n\n    private final MeterRegistry registry;\n\n    public void recordOrderCreated(String status) {\n        registry.counter(\"orders.created\", \"status\", status).increment();\n    }\n\n    public void recordOrderProcessingTime(Duration duration) {\n        registry.timer(\"orders.processing.time\").record(duration);\n    }\n}\n```\n\n### Structured Logging (JSON)\n\nВ production логи должны быть в JSON-формате для парсинга Loki\u002FElasticsearch:\n\n```json\n{\n  \"timestamp\": \"2026-04-19T10:30:45.123Z\",\n  \"level\": \"INFO\",\n  \"logger\": \"c.e.order.adapter.in.web.OrderController\",\n  \"message\": \"Order created successfully\",\n  \"traceId\": \"abc123def456\",\n  \"spanId\": \"789ghi\",\n  \"orderId\": \"550e8400-e29b-41d4-a716-446655440000\"\n}\n```\n\n### Spring Boot Actuator — ключевые эндпоинты\n\n| Endpoint | Назначение |\n|----------|-----------|\n| \u002Factuator\u002Fhealth | Health check (liveness + readiness) |\n| \u002Factuator\u002Fhealth\u002Fliveness | Kubernetes liveness probe |\n| \u002Factuator\u002Fhealth\u002Freadiness | Kubernetes readiness probe |\n| \u002Factuator\u002Fprometheus | Метрики в формате Prometheus |\n| \u002Factuator\u002Finfo | Информация о приложении |\n\n### Частые ошибки\n\n- 100% sampling в production: огромный объём данных трейсинга. Используйте 10-50%\n- Логирование чувствительных данных: пароли, токены, персональные данные\n- Мониторинг только инфраструктурных метрик (CPU, RAM) без бизнес-метрик\n- Алертинг на каждую ошибку в логе вместо агрегированного error rate\n\n> **На собеседовании:** назовите три столпа (метрики, логи, трейсы) и объясните, что они связаны через trace ID. Частый вопрос: \"Чем отличается liveness от readiness probe?\" Liveness — приложение живо (если нет — перезапуск), readiness — готово принимать трафик (если нет — убрать из балансировки). Упоминание OpenTelemetry как вендор-нейтрального стандарта добавляет очков.","","middle",[15,16,17,18,19],"actuator","logging","opentelemetry","monitoring","observability",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":37,"featuredSnippetReady":38},"Как обеспечить наблюдаемость приложения — Gymterview","Наблюдаемость (observability): три столпа — метрики, логи, трейсы. OpenTelemetry, Prometheus, Grafana, structured logging, Spring Boot Actuator, probes в K8s.","Наблюдаемость приложения: метрики, логи, трейсы — Gymterview","Три столпа observability: метрики (Prometheus), логи (Loki), трейсы (Tempo). OpenTelemetry, Actuator probes, structured logging.",[19,28,29,30,31,32,33,34,35,36],"наблюдаемость","OpenTelemetry","Prometheus","Grafana","Micrometer","structured logging","tracing","Spring Boot Actuator","собеседование","Наблюдаемость строится на трёх столпах: метрики (Prometheus + Micrometer), логи (Loki + Logback в JSON), трейсы (Tempo + OpenTelemetry), связанных через trace ID. Spring Boot Actuator предоставляет health, prometheus, liveness\u002Freadiness probes для Kubernetes. Sampling в production: 10-50%. OpenTelemetry — вендор-нейтральный стандарт сбора телеметрии.",true]