Анализ логов ALB в реальном времени для проактивного восстановления интеграции с помощью мониторов Datadog, рабочих процессов и AWS Lambda
Анализ логов ALB в реальном времени для проактивного восстановления интеграций с помощью Datadog, Workflows и 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); // Функция для отправки алерта
}
};
Практические советы
- Планируйте заранее: Перед реализацией логирования уточните, какие метрики и данные вам действительно важны.
- Автоматизация: Используйте AWS Lambda для обработки логов в реальном времени. Это поможет сократить время на ручные операции и избежать ошибок.
- Мониторинг и аналитика: Используйте инструменты, такие как Datadog, для визуализации логов и выявления аномалий. Настройте алерты для оповещения о проблемах.
- Тестирование и отладка: Не забывайте тестировать свои решения на предмет эффективности. Постоянный мониторинг «графиков» и логов позволит получить более полное представление о происходящем.
Заключение
Добавление логов доступа ALB/ELB в Datadog стало важным шагом на пути к улучшению мониторинга и анализа интеграций. Использование инструментов, таких как Pulumi и AWS Lambda, позволяет существенно упростить работу команды и достичь большей прозрачности в системах. Взаимодействие между различными сервисами обеспечило проактивное решение проблем, что так важно в современных условиях.