[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-mikroservisy-kak-realizovat-health-checks-i-monitoring-mikroservisov":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":16,"progress":17,"seo":18},904,"kak-realizovat-health-checks-i-monitoring-mikroservisov",23,"mikroservisy","Микросервисы","🔗","Как реализовать health checks и мониторинг микросервисов?","Health checks и мониторинг — критические аспекты production-ready микросервисов. Spring Boot Actuator предоставляет готовые эндпоинты для проверки здоровья, а Prometheus + Grafana — для сбора и визуализации метрик.\n\n\u003Cdetails>\u003Csummary>Spring Boot Actuator: конфигурация и кастомный HealthIndicator\u003C\u002Fsummary>\n\n```yaml\n# application.yml\nmanagement:\n  endpoints:\n    web:\n      exposure:\n        include: health, info, metrics, prometheus\n  endpoint:\n    health:\n      show-details: when-authorized\n      show-components: always\n  health:\n    db:\n      enabled: true\n    diskspace:\n      enabled: true\n    kafka:\n      enabled: true\n```\n\n```java\n@Component\npublic class PaymentGatewayHealthIndicator implements HealthIndicator {\n\n    private final PaymentGatewayClient gatewayClient;\n\n    @Override\n    public Health health() {\n        try {\n            boolean isAvailable = gatewayClient.ping();\n            if (isAvailable) {\n                return Health.up()\n                    .withDetail(\"gateway\", \"Payment Gateway доступен\")\n                    .withDetail(\"responseTime\", \"45ms\")\n                    .build();\n            } else {\n                return Health.down()\n                    .withDetail(\"gateway\", \"Payment Gateway не отвечает\")\n                    .build();\n            }\n        } catch (Exception e) {\n            return Health.down(e)\n                .withDetail(\"error\", e.getMessage())\n                .build();\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Liveness и Readiness Probes (для Kubernetes)\n\n```yaml\nmanagement:\n  endpoint:\n    health:\n      probes:\n        enabled: true\n  health:\n    livenessstate:\n      enabled: true\n    readinessstate:\n      enabled: true\n```\n\n- `\u002Factuator\u002Fhealth\u002Fliveness` — жив ли сервис (если нет — Kubernetes перезапустит контейнер).\n- `\u002Factuator\u002Fhealth\u002Freadiness` — готов ли сервис принимать трафик (если нет — Kubernetes перестанет направлять трафик).\n\n```yaml\n# Kubernetes deployment\nlivenessProbe:\n  httpGet:\n    path: \u002Factuator\u002Fhealth\u002Fliveness\n    port: 8080\n  initialDelaySeconds: 30\n  periodSeconds: 10\nreadinessProbe:\n  httpGet:\n    path: \u002Factuator\u002Fhealth\u002Freadiness\n    port: 8080\n  initialDelaySeconds: 20\n  periodSeconds: 5\n```\n\n\u003Cdetails>\u003Csummary>Prometheus + Grafana: кастомные метрики\u003C\u002Fsummary>\n\n```java\n@Service\npublic class PaymentService {\n    private final Counter paymentCounter;\n    private final Timer paymentTimer;\n\n    public PaymentService(MeterRegistry registry) {\n        this.paymentCounter = Counter.builder(\"payments.processed\")\n            .description(\"Количество обработанных платежей\")\n            .tag(\"service\", \"payment-service\")\n            .register(registry);\n\n        this.paymentTimer = Timer.builder(\"payments.duration\")\n            .description(\"Время обработки платежа\")\n            .register(registry);\n    }\n\n    public void processPayment(PaymentRequest request) {\n        paymentTimer.record(() -> {\n            doProcess(request);\n            paymentCounter.increment();\n        });\n    }\n}\n```\n\nEndpoint `\u002Factuator\u002Fprometheus` предоставляет метрики в формате Prometheus:\n```\n# HELP payments_processed_total Количество обработанных платежей\npayments_processed_total{service=\"payment-service\"} 1542.0\n# HELP payments_duration_seconds Время обработки платежа\npayments_duration_seconds_sum{service=\"payment-service\"} 125.4\n```\n\n\u003C\u002Fdetails>\n\n### Ключевые метрики для мониторинга (RED-метрики)\n\n| Метрика | Описание |\n|---|---|\n| Rate | Количество запросов в секунду |\n| Errors | Процент ошибок |\n| Duration | Время ответа (p50, p95, p99) |\n\n> **На собеседовании:** различайте liveness и readiness probes — это частый вопрос. Liveness: «жив ли процесс» (перезапуск при false), readiness: «готов ли принимать трафик» (отключение от балансировщика при false). Упомяните RED-метрики как стандарт мониторинга.","","middle",[15],"microservices",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Как реализовать health checks и мониторинг микросервисов? — Gymterview","Health checks и мониторинг — критические аспекты production-ready микросервисов. Spring Boot Actuator предоставляет готовые эндпоинты для проверки здоровья, а P","Health checks и мониторинг — критические аспекты production-ready микросервисов. Spring Boot Actuator предоставляет гото",[15,13],"Health checks и мониторинг — критические аспекты production-ready микросервисов. Spring Boot Actuator предоставляет готовые эндпоинты для проверки здоровья, а Prometheus + Grafana — для сбора и визуализации метрик.",true]