[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-nablyudaemost-chto-takoe-alerting-i-kak-ego-pravilno-nastroit":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},768,"chto-takoe-alerting-i-kak-ego-pravilno-nastroit",20,"nablyudaemost","Наблюдаемость","📊","Что такое алертинг и как его правильно настроить?","Алертинг — процесс автоматического оповещения команды о проблемах в системе на основании заданных правил. Правильно настроенный алертинг позволяет быстро реагировать на инциденты, неправильный — приводит к alert fatigue (усталости от алертов), когда все уведомления игнорируются.\n\n### Принципы правильного алертинга\n\n1. **Алерты на симптомы, а не на причины**: алерт «высокая latency для пользователей» лучше, чем «высокий CPU», потому что CPU может быть высоким и при нормальной работе.\n\n2. **Каждый алерт должен требовать действия (actionable)**: если при получении алерта дежурный не может ничего сделать — алерт не нужен.\n\n3. **Минимум шума**: лучше пропустить некритичный инцидент, чем завалить команду ложными срабатываниями.\n\n### Уровни severity\n\n| Severity | Описание | Действие | Время реакции |\n|----------|----------|---------|--------------|\n| Critical (P1) | Сервис недоступен, потеря данных | Немедленная эскалация, звонок | \u003C 5 минут |\n| Warning (P2) | Деградация сервиса, SLO под угрозой | Уведомление в рабочее время | \u003C 1 час |\n| Info (P3) | Аномалия, требует внимания | Тикет в бэклог | Следующий рабочий день |\n\n\u003Cdetails>\u003Csummary>Конфигурация Prometheus Alertmanager\u003C\u002Fsummary>\n\n```yaml\n# alertmanager.yml\nglobal:\n  resolve_timeout: 5m\n  slack_api_url: 'https:\u002F\u002Fhooks.slack.com\u002Fservices\u002FT...\u002FB...\u002Fxxxx'\n\nroute:\n  receiver: 'default-slack'\n  group_by: ['alertname', 'job']\n  group_wait: 30s\n  group_interval: 5m\n  repeat_interval: 4h\n\n  routes:\n    - match:\n        severity: critical\n      receiver: 'pagerduty-critical'\n      continue: true\n    - match:\n        severity: critical\n      receiver: 'slack-critical'\n    - match:\n        severity: warning\n      receiver: 'slack-warning'\n\nreceivers:\n  - name: 'default-slack'\n    slack_configs:\n      - channel: '#alerts'\n        title: '{{ .GroupLabels.alertname }}'\n        text: '{{ range .Alerts }}{{ .Annotations.description }}{{ end }}'\n\n  - name: 'slack-critical'\n    slack_configs:\n      - channel: '#alerts-critical'\n        title: 'CRITICAL: {{ .GroupLabels.alertname }}'\n        color: 'danger'\n\n  - name: 'slack-warning'\n    slack_configs:\n      - channel: '#alerts-warning'\n        title: 'WARNING: {{ .GroupLabels.alertname }}'\n        color: 'warning'\n\n  - name: 'pagerduty-critical'\n    pagerduty_configs:\n      - service_key: '\u003Cpagerduty-service-key>'\n        severity: critical\n\ninhibit_rules:\n  - source_match:\n      alertname: 'ServiceDown'\n    target_match:\n      severity: 'warning'\n    equal: ['job']\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\u003Csummary>Примеры alert rules\u003C\u002Fsummary>\n\n```yaml\n# alert_rules.yml\ngroups:\n  - name: application\n    rules:\n      # Сервис не отвечает\n      - alert: ServiceDown\n        expr: up{job=\"order-service\"} == 0\n        for: 1m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"Service {{ $labels.job }} is down\"\n          description: \"{{ $labels.instance }} has been down for more than 1 minute\"\n\n      # Высокий процент ошибок (> 5%)\n      - alert: HighErrorRate\n        expr: |\n          sum(rate(http_server_requests_seconds_count{status=~\"5..\", job=\"order-service\"}[5m]))\n          \u002F\n          sum(rate(http_server_requests_seconds_count{job=\"order-service\"}[5m]))\n          > 0.05\n        for: 5m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"High error rate on {{ $labels.job }}\"\n          description: \"Error rate is {{ $value | humanizePercentage }}\"\n\n      # Высокая latency (p99 > 2s)\n      - alert: HighLatency\n        expr: |\n          histogram_quantile(0.99,\n            sum(rate(http_server_requests_seconds_bucket{job=\"order-service\"}[5m])) by (le)\n          ) > 2\n        for: 10m\n        labels:\n          severity: warning\n        annotations:\n          summary: \"High p99 latency on {{ $labels.job }}\"\n\n      # JVM Heap > 90%\n      - alert: HighHeapUsage\n        expr: |\n          jvm_memory_used_bytes{area=\"heap\"}\n          \u002F\n          jvm_memory_max_bytes{area=\"heap\"}\n          > 0.9\n        for: 5m\n        labels:\n          severity: warning\n\n      # HikariCP — нет свободных соединений\n      - alert: NoFreeDbConnections\n        expr: hikaricp_connections_idle{job=\"order-service\"} == 0\n        for: 2m\n        labels:\n          severity: critical\n\n      # Error budget burn rate (SLO-based)\n      - alert: ErrorBudgetBurnRate\n        expr: |\n          (\n            1 - (\n              sum(rate(http_server_requests_seconds_count{status!~\"5..\", job=\"order-service\"}[1h]))\n              \u002F\n              sum(rate(http_server_requests_seconds_count{job=\"order-service\"}[1h]))\n            )\n          ) > (1 - 0.999) * 14.4\n        for: 5m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"Error budget burning too fast on {{ $labels.job }}\"\n```\n\n\u003C\u002Fdetails>\n\n### Важное\n- **Alert fatigue** — главная проблема алертинга. Если команда получает 100 алертов в день, все они будут игнорироваться.\n- **Алерт = действие**: каждый алерт должен иметь runbook (документ с инструкцией по решению проблемы).\n- **`for` clause** обязателен: без него алерт сработает на короткий spike. `for: 5m` означает «проблема должна длиться 5 минут подряд».\n- **group_by** предотвращает спам: если упало 10 инстансов одного сервиса, приходит один алерт, а не десять.\n\n### Частые ошибки\n- **Алерт на каждую метрику**: «CPU > 80%» не означает проблему. Алертить нужно на влияние на пользователя (latency, errors).\n- **Слишком низкие пороги**: `error_rate > 0.01` при 100 RPS будет срабатывать постоянно из-за единичных 500-ок.\n- **Нет `for` clause**: алерт срабатывает на каждый кратковременный spike, создавая шум.\n- **Нет inhibit_rules**: при падении всего кластера приходят сотни алертов, хотя нужен один.\n- **Не настроен resolve**: команда не знает, когда проблема решена, и продолжает тратить время.\n\n### Как используется в 2026\n- **SLO-based alerting** — вместо статических порогов используется burn rate error budget.\n- **Grafana Unified Alerting** — единый алертинг для метрик, логов и трейсов.\n- **AIOps** — ML-модели автоматически определяют аномалии и корреляции между алертами.\n- **Grafana OnCall \u002F PagerDuty** — интеграция с системами управления дежурствами.\n- **ChatOps** — алерты в Slack\u002FTeams с возможностью acknowledge, silence и escalate прямо из чата.\n\n> **На собеседовании:** ключевые принципы — алерты на симптомы (не причины), каждый алерт actionable, обязательный `for` clause. Покажите знание уровней severity и их маппинг на действия. Частая ошибка — не упомянуть alert fatigue и inhibit_rules. Сильный ответ включает SLO-based alerting с burn rate.","","senior",[15],"observability",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое алертинг и как его правильно настроить? — Gymterview","Алертинг — процесс автоматического оповещения команды о проблемах в системе на основании заданных правил. Правильно настроенный алертинг позволяет быстро реагир","Алертинг — процесс автоматического оповещения команды о проблемах в системе на основании заданных правил. Правильно наст",[15,13],"Алертинг — процесс автоматического оповещения команды о проблемах в системе на основании заданных правил. Правильно настроенный алертинг позволяет быстро реагировать на инциденты, неправильный — приводит к alert fatigue (усталости от алертов), когда все уведомления игнорируются.",true]