ГлавнаяБлогTech UpdatesАнализ логов ALB в реальном времени для проактивного восстановления интеграции с помощью мониторов Datadog, рабочих процессов и AWS Lambda
Tech Updates8 декабря 2025 г.4 мин

Анализ логов ALB в реальном времени для проактивного восстановления интеграции с помощью мониторов Datadog, рабочих процессов и AWS Lambda

Анализ логов ALB в реальном времени для проактивного восстановления интеграций с помощью Datadog, Workflows и AWS Lambda В мире постоянных изменений и неожиданностей важно уметь адаптироваться к новым условиям....

Анализ логов ALB в реальном времени для проактивного восстановления интеграции с помощью мониторов Datadog, рабочих процессов и AWS Lambda

Анализ логов ALB в реальном времени для проактивного восстановления интеграций с помощью Datadog, Workflows и AWS Lambda

В мире постоянных изменений и неожиданностей важно уметь адаптироваться к новым условиям. В Бразилии есть термин "gambiarra", который обозначает искусство импровизации и креативного решения проблем. Этот подход оказался полезен в нашей работе с логами AWS Application Load Balancer (ALB) и Elastic Load Balancer (ELB). Рассмотрим, как мы смогли улучшить мониторинг и анализ логов, а также как это способствовало активному восстановлению интеграций.

Проблема: неясная видимость

Одной из основных проблем, с которыми мы столкнулись, была низкая видимость событий Google Calendar. Пользователи сталкивались с проблемами, и мы не могли определить, кто именно испытывает трудности. Основные ошибки были связаны с каналами, которые «игнорировали» нас, или событиями, не достигшими API. Самой худшей частью было отсутствие логов доступа на нашем ELB/ALB, что оставляло нас «в темноте».

Решение: добавление логов доступа

В качестве решения мы решили добавить логи доступа для ALB/ELB. Эта идея пришла нам в голову, когда мы поняли, что уже используем Datadog для мониторинга. Так родился наш проект, разработанный с использованием Pulumi, который с лёгкостью управляет инфраструктурой как кодом (IaC). Если вы ранее не работали с Pulumi, настоятельно рекомендую ознакомиться с их документацией.

Что такое логи доступа?

Логи доступа — это своего рода «ноутбук» охранника на перекрестке, где фиксируется информация о каждом запросе, проходящем через Load Balancer. Каждая запись логов содержит важные данные: когда запрос был сделан, кем он был инициирован и т. д. Пример записи:

127.0.0.1 - - [12/Dec/2023:11:16:03 +0000] "GET /api/event HTTP/1.1" 200 1024

Здесь мы видим IP-адрес пользователя, время запроса и HTTP-метод вместе с кодом ответа.

Подход к добавлению логов доступа

Шаг 1: Настройка Pulumi

Первым шагом в нашем проекте стало добавление логов доступа в Pulumi. Ниже представлен пример кода на TypeScript, который осуществляет настройку.

import * as aws from "@pulumi/aws";

const loadBalancer = new aws.lb.LoadBalancer("example-lb", {
    internal: false,
    loadBalancerType: "application",
    securityGroups: [mySecurityGroup.id],
    subnets: mySubnetIds,
    enableDeletionProtection: false,
});

// Добавляем логи доступа к ALB
const accessLogs = new aws.lb.LogConfiguration("example-logs", {
    bucket: myBucket.id,
    prefix: "access-logs/",
    loadBalancerArn: loadBalancer.arn,
});

Шаг 2: Интеграция с Datadog

После настройки логов доступа мы интегрировали их с Datadog для эффективного мониторинга. Datadog позволяет настраивать алерты и визуализации на основе этих логов.

Пример настройки монитора Datadog:

const monitor = new datadog.Monitor("example-monitor", {
    type: "log alert",
    query: "service:my-service status:404",
    name: "HTTP 404 Errors",
    message: "High number of 404 errors detected!",
        options: {
        thresholds: {
            critical: 100,
        },
    },
});

Шаг 3: Автоматизация с AWS Lambda

Чтобы сделать процесс еще более автоматизированным, мы интегрировали функции AWS Lambda для обработки логов в реальном времени. Когда новые логи поступают, Lambda автоматически обрабатывает их и отправляет уведомления или выполняет другие действия.

Пример реализации функции Lambda:

exports.handler = async (event) => {
    // Обработка полученных логов
    const logs = event.Records[0].Sns.Message;
    
    // Логика обработки
    console.log(logs);
    
    // Отправляем уведомления или выполняем действия
    if (logs.contains("error")) {
        await sendAlert(logs); // Функция для отправки алерта
    }
};

Практические советы

  1. Планируйте заранее: Перед реализацией логирования уточните, какие метрики и данные вам действительно важны.
  2. Автоматизация: Используйте AWS Lambda для обработки логов в реальном времени. Это поможет сократить время на ручные операции и избежать ошибок.
  3. Мониторинг и аналитика: Используйте инструменты, такие как Datadog, для визуализации логов и выявления аномалий. Настройте алерты для оповещения о проблемах.
  4. Тестирование и отладка: Не забывайте тестировать свои решения на предмет эффективности. Постоянный мониторинг «графиков» и логов позволит получить более полное представление о происходящем.

Заключение

Добавление логов доступа ALB/ELB в Datadog стало важным шагом на пути к улучшению мониторинга и анализа интеграций. Использование инструментов, таких как Pulumi и AWS Lambda, позволяет существенно упростить работу команды и достичь большей прозрачности в системах. Взаимодействие между различными сервисами обеспечило проактивное решение проблем, что так важно в современных условиях.