Разработка AI-системы мониторинга инфраструктуры и автоматического алертинга (AIOps)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы мониторинга инфраструктуры и автоматического алертинга (AIOps)
Сложная
~2-4 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы мониторинга инфраструктуры и автоматического алертинга (AIOps)

AIOps (Artificial Intelligence for IT Operations) объединяет machine learning с данными мониторинга — метриками, логами, трассировками — для снижения MTTR, шумоподавления и предиктивной диагностики. Для команды из 5-10 инженеров, управляющей сотнями сервисов, AIOps — единственный способ оставаться эффективными.

Проблемы классического мониторинга

Alert storm: Один инцидент генерирует сотни алертов из взаимосвязанных систем. Инженер тонет в уведомлениях и пропускает корневую причину.

Static thresholds: Порог CPU > 80% — ложная тревога ночью при batch job и пропуск проблемы днём при нормальных 75% + тренд роста.

Ручная корреляция: Инженер вручную сопоставляет метрики, логи, трассировки из разных систем. AIOps автоматизирует это.

Инфраструктура данных

Unified Observability Pipeline:

Application Metrics → Prometheus
Infrastructure Metrics → Node Exporter, cloud_exporter
Logs → Fluent Bit → Elasticsearch / Loki
Traces → OpenTelemetry → Jaeger / Tempo
Events → Kubernetes Events
    ↓
Kafka (общий event bus)
    ↓
AIOps Platform (ML inference + correlation)
    ↓
Alert Manager → PagerDuty / OpsGenie / Slack

Объём данных: Enterprise: миллиарды метрических точек в сутки. Требования к ML pipeline: batch для обучения, streaming для inference < 30 секунд latency.

Динамические пороги

Prophets/SARIMA для seasonal thresholds:

from prophet import Prophet
import pandas as pd

def train_dynamic_threshold(metric_series, confidence_level=0.99):
    """
    Prophet обучается на нормальном поведении метрики
    Возвращает upper/lower band для каждого момента времени
    """
    df = pd.DataFrame({
        'ds': metric_series.index,
        'y': metric_series.values
    })

    model = Prophet(
        seasonality_mode='multiplicative',
        weekly_seasonality=True,
        daily_seasonality=True,
        interval_width=confidence_level
    )
    model.fit(df)

    future = model.make_future_dataframe(periods=60, freq='5min')
    forecast = model.predict(future)

    # Аномалия: значение вне yhat_lower / yhat_upper
    return forecast[['ds', 'yhat_lower', 'yhat_upper']]

def detect_anomaly(current_value, forecast_row):
    return (current_value < forecast_row['yhat_lower'] or
            current_value > forecast_row['yhat_upper'])

EWMA для real-time адаптации:

class EWMAThreshold:
    def __init__(self, alpha=0.1, k=3.0):
        self.alpha = alpha  # скорость адаптации
        self.k = k          # количество сигм
        self.ewma = None
        self.ewmv = None    # EWMA variance

    def update(self, value):
        if self.ewma is None:
            self.ewma = value
            self.ewmv = 0
            return False

        deviation = value - self.ewma
        self.ewma = self.alpha * value + (1 - self.alpha) * self.ewma
        self.ewmv = self.alpha * deviation**2 + (1 - self.alpha) * self.ewmv

        threshold = self.k * np.sqrt(self.ewmv)
        is_anomaly = abs(deviation) > threshold

        return is_anomaly

Корреляция алертов и шумоподавление

Alert Clustering:

from sklearn.cluster import DBSCAN
import numpy as np

def cluster_alerts(alerts_df, temporal_eps=300, spatial_eps=0.5):
    """
    Кластеризация алертов: временная близость + семантическая схожесть
    """
    # Фичи: timestamp + service embedding + severity
    features = np.column_stack([
        alerts_df['timestamp'].astype(int) / 1e9,    # Unix timestamp
        alerts_df['service_embedding'],               # Word2Vec/FastText
        alerts_df['severity_numeric']
    ])

    # Нормализация
    from sklearn.preprocessing import StandardScaler
    features_scaled = StandardScaler().fit_transform(features)

    clusters = DBSCAN(eps=0.5, min_samples=2).fit_predict(features_scaled)
    alerts_df['incident_cluster'] = clusters

    return alerts_df.groupby('incident_cluster').agg({
        'alert_id': 'count',
        'service': lambda x: x.mode()[0],
        'severity': 'max',
        'timestamp': 'min',
        'message': list
    })

Causal Graph для RCA:

import networkx as nx

class ServiceDependencyGraph:
    def __init__(self):
        self.graph = nx.DiGraph()

    def build_from_traces(self, traces):
        for trace in traces:
            for span in trace.spans:
                if span.parent:
                    self.graph.add_edge(span.parent_service, span.service,
                                        latency=span.latency)

    def find_root_cause(self, incident_services, anomaly_time):
        """
        Из списка аномальных сервисов → найти upstream корень
        """
        anomaly_set = set(incident_services)
        root_candidates = []

        for service in anomaly_set:
            # Предки: если предок тоже аномальный → он ближе к корню
            ancestors = nx.ancestors(self.graph, service)
            if not ancestors.intersection(anomaly_set):
                root_candidates.append(service)

        return root_candidates

Предиктивная диагностика

Тренды до инцидента:

def detect_precursor_patterns(metrics_history, incident_labels, window=2*60):
    """
    Обучение: за сколько минут до инцидента появляются первые признаки?
    """
    precursor_features = []
    for incident_time in incident_labels:
        # Окно за 2 часа до инцидента
        pre_incident = metrics_history[
            incident_time - timedelta(minutes=window):incident_time
        ]

        features = {
            'error_rate_trend': np.polyfit(range(window), pre_incident['error_rate'], 1)[0],
            'p99_latency_trend': np.polyfit(range(window), pre_incident['p99'], 1)[0],
            'cpu_trend': np.polyfit(range(window), pre_incident['cpu'], 1)[0],
            'memory_leak_indicator': detect_memory_leak_pattern(pre_incident['memory'])
        }
        precursor_features.append(features)

    # Модель: за 30 минут до инцидента → предсказание
    incident_predictor = LogisticRegression()
    incident_predictor.fit(precursor_features, labels)
    return incident_predictor

LLM-assisted incident analysis

Контекстный анализ инцидента:

from anthropic import Anthropic

def generate_incident_summary(incident_data, llm_client):
    """
    LLM генерирует читаемое резюме инцидента из технических данных
    """
    context = f"""
    Incident at {incident_data['timestamp']}:
    - Affected services: {incident_data['services']}
    - Anomalous metrics: {incident_data['metrics']}
    - Recent changes: {incident_data['recent_deployments']}
    - Related logs (sample): {incident_data['log_samples'][:5]}
    - Similar past incidents: {incident_data['similar_incidents']}
    """

    response = llm_client.messages.create(
        model='claude-opus-4',
        messages=[{
            'role': 'user',
            'content': f'Provide a concise incident analysis and recommended next steps:\n{context}'
        }]
    )

    return response.content[0].text

Интеграция

Grafana AIOps Plugin: Единый дашборд: аномалии, кластеры алертов, RCA граф, precursor warnings.

PagerDuty Event Intelligence: Коммерческая AIOps надстройка. Кастомный ML можно интегрировать через PagerDuty Events API.

ServiceNow AIOps: Автоматическое создание инцидентов с ML-классификацией priority и assignment group.

Стек: Prometheus + Grafana (метрики) + Loki (логи) + Tempo (трассировки) + Kafka (stream) + ClickHouse (analytics) + FastAPI (ML inference) + React (custom AIOps UI).

Сроки: динамические пороги + alert clustering + Slack интеграция — 4-5 недель. Causal graph RCA, precursor detection, LLM incident summary, PagerDuty/ServiceNow integration — 3-4 месяца.