Custom Alerting по бізнес-метрикам
Технічні сповіщення про CPU та latency важливі, але бізнес рідко розуміє їх вплив. "Завершені замовлення впали на 40% за останні 15 хвилин" зрозуміло для всіх — розробників та генеральних директорів. Сповіщення про бізнес-метрики з'єднують технічний моніторинг та бізнес-результати.
Бізнес-метрики для сповіщень
Метрики залежать від типу продукту, але типові категорії:
E-commerce:
- Завершені замовлення за годину (різка падіння)
- Конверсія з кошика на платіж (якщо < базова на X%)
- Дохід за скользящую годину
- Помилки при платежі (абсолютна кількість)
SaaS:
- Реєстрація нових користувачів (нулева за N годин)
- Активні користувачи онлайн (неочікуване падіння)
- API-запити від ключових клієнтів (аномальне зростання/падіння)
Контент-проекти:
- Переглядів сторінок (різка падіння = проблема SEO або CDN)
- Bounce rate (різкий ріст)
- Подано форм (нулева за N годин)
Реалізація через Prometheus
Бізнес-события в коді застосунку:
from prometheus_client import Counter, Histogram
# Ініціалізуйте метрики
orders_completed = Counter(
'orders_completed_total',
'Total completed orders',
['payment_method', 'product_category']
)
order_value = Histogram(
'order_value_rub',
'Order value in rubles',
buckets=[100, 500, 1000, 2500, 5000, 10000, 25000, 50000]
)
payment_errors = Counter(
'payment_errors_total',
'Payment processing errors',
['error_code', 'payment_provider']
)
# У кодексі завершення замовлення
async def complete_order(order_data: dict):
try:
result = await payment_gateway.charge(order_data)
orders_completed.labels(
payment_method=order_data['payment_method'],
product_category=order_data['category']
).inc()
order_value.observe(order_data['amount'])
Правила Alert в Alertmanager
groups:
- name: business_alerts
rules:
# E-commerce: замовлення впали
- alert: OrdersDropped
expr: rate(orders_completed_total[15m]) < (rate(orders_completed_total[15m] offset 60m) * 0.6)
for: 5m
annotations:
summary: "Замовлення впали на 40% за останні 15 хв"
severity: "critical"
slack: "#alerts-ecommerce"
# SaaS: немає реєстрацій
- alert: NoSignups
expr: rate(user_signups_total[1h]) == 0
for: 30m
annotations:
summary: "Нульова реєстрація за останні 30 хвилин"
severity: "warning"
# Пік помилок при платежі
- alert: PaymentErrorsSpike
expr: rate(payment_errors_total[5m]) > 0.5 # >50% помилки
for: 2m
annotations:
summary: "Помилки платежу > 50%"
severity: "critical"
Сповіщення Slack
import requests
def send_alert_to_slack(alert_name, severity, details):
color = {'critical': '#FF0000', 'warning': '#FFA500'}.get(severity)
message = {
'attachments': [{
'color': color,
'title': alert_name,
'text': details,
'footer': 'Business Metrics Alert'
}]
}
requests.post(SLACK_WEBHOOK, json=message)
Час виконання
Налаштування збору бізнес-метрик, сповіщень та сповіщень — 2–3 робочих дні.







