КраткоПересылайте журналы AWS CloudWatch в ClickStack с помощью приёмника CloudWatch для OpenTelemetry Collector. Поддерживаются именованные группы логов и автообнаружение. В комплект входят демо-набор данных и преднастроенный дашборд.
Обзор
- Анализировать журналы вместе с метриками и трейсами на единой платформе
- Запрашивать журналы через SQL-интерфейс ClickHouse
- Снизить затраты за счет архивирования или сокращения срока хранения в CloudWatch
Интеграция с существующими группами логов CloudWatch
Предварительные требования
- Запущенный экземпляр ClickStack
- Аккаунт AWS с группами логов CloudWatch
- Учетные данные AWS с соответствующими разрешениями IAM
В отличие от интеграций журналов, работающих с файлами (nginx, Redis), для CloudWatch требуется отдельный OpenTelemetry Collector, который опрашивает API CloudWatch. Этот OpenTelemetry Collector не может работать внутри all-in-one-образа ClickStack, так как ему нужны учетные данные AWS и доступ к API.
Получение ключа API ClickStack
OpenTelemetry Collector отправляет данные в конечную точку OTLP ClickStack, для которой требуется аутентификация.- Откройте HyperDX по URL-адресу ClickStack (например, http://localhost:8080)
- Создайте учётную запись или при необходимости войдите в систему
- Перейдите в Team Settings → API Keys
- Скопируйте ключ API для приёма данных
Настройка учетных данных AWS
Экспортируйте учетные данные AWS как переменные окружения. Способ зависит от типа аутентификации:Для пользователей AWS SSO (рекомендуется для большинства организаций):YOUR_PROFILE_NAME на имя профиля AWS SSO (например, AccountAdministrators-123456789).Для пользователей IAM с долгосрочными учетными данными:YOUR_ACCOUNT_ID на идентификатор вашей учётной записи AWS.Настройте приёмник CloudWatch
Создайте файлotel-collector-config.yaml с конфигурацией приёмника CloudWatch.Найдите группы логов, доступные в вашем аккаунте
Найдите группы логов, доступные в вашем аккаунте
Перед редактированием конфигурации выведите список групп логов, существующих в вашем регионе, чтобы выбрать реальные имена и убедиться, что регион указан верно:Пример вывода:Используйте имена из этого списка напрямую в блоке Либо, если у нужных вам групп общий префикс (здесь
groups.named в примере 1 ниже. Для аккаунта выше секция named-groups будет выглядеть так:/aws-glue/), используйте пример 2 с prefix: /aws-glue/ вместо перечисления каждой группы отдельно./aws/lambda:region: регион AWS, в котором находятся ваши группы журналов CloudWatchpoll_interval: как часто проверять наличие новых записей в журналах (например,1m,5m)max_events_per_request: максимальное количество событий журнала, загружаемых за один запросgroups.autodiscover.limit: максимальное количество групп журналов CloudWatch, которые нужно обнаружитьgroups.autodiscover.prefix: фильтрация групп журналов CloudWatch по префиксуgroups.named: явный список имён групп журналов CloudWatch для сбора
${CLICKSTACK_API_KEY}→ использует переменную окружения, которую вы задали ранееhttp://localhost:4318→ ваша конечная точка ClickStack (если ClickStack запущен удалённо, используйте его хост)us-east-1→ ваш регион AWS- Имена/префиксы групп журналов → ваши реальные группы журналов CloudWatch
Приёмник CloudWatch загружает журналы только из недавних временных окон (в зависимости от
poll_interval). При первом запуске он начинает с текущего момента. Исторические журналы по умолчанию не загружаются.Запустите коллектор
Создайте файлdocker-compose.yaml:Проверьте журналы в HyperDX
После запуска коллектора:- Откройте HyperDX по адресу http://localhost:8080 (или по URL вашего ClickStack)
- Перейдите в раздел Logs
- Подождите 1–2 минуты, пока не появятся журналы (в зависимости от интервала опроса)
- Найдите журналы из ваших групп журналов CloudWatch
ResourceAttributes['aws.region']: ваш регион AWS (например, “us-east-1”)ResourceAttributes['cloudwatch.log.group.name']: имя группы журналов CloudWatchResourceAttributes['cloudwatch.log.stream']: имя потока журналовBody: фактическое содержимое сообщения журнала
Демо-набор данных
Загрузите пример набора данных
- Lambda functions: обработка платежей, управление заказами, аутентификация
- ECS services: API-шлюз с ограничением скорости и тайм-аутами
- Background jobs: батч-обработка с повторными попытками
Запустите ClickStack
Если ClickStack у вас еще не запущен:Проверьте демо-данные
После импорта:- Откройте HyperDX по адресу http://localhost:8080 и войдите в систему (при необходимости создайте учетную запись)
- Перейдите в раздел Logs
- Установите временной диапазон 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC)
- Выполните поиск по
cloudwatch-demoили отфильтруйте поLogAttributes['source'] = 'cloudwatch-demo'
Отображение часового поясаHyperDX отображает временные метки в локальном часовом поясе вашего браузера. Демо-данные охватывают период 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC). Установите временной диапазон 2025-12-06 00:00:00 - 2025-12-09 00:00:00, чтобы гарантированно увидеть демонстрационные журналы независимо от вашего местоположения. Когда журналы появятся, можно сузить диапазон до 24 часов для более наглядной визуализации.
Панели мониторинга и визуализация
конфигурацию панели мониторинга
Импортируйте панель мониторинга
- Откройте HyperDX и перейдите в раздел Dashboards
- Нажмите Import Dashboard в правом верхнем углу в меню с многоточием
- Загрузите файл
cloudwatch-logs-dashboard.jsonи нажмите Finish Import
Просмотрите панель мониторинга
Панель мониторинга будет создана со всеми уже настроенными визуализациями:Для демо-набора данных установите временной диапазон 2025-12-07 00:00:00 - 2025-12-08 00:00:00 (UTC) (скорректируйте его в соответствии с вашим локальным часовым поясом). По умолчанию у импортированного дашборда временной диапазон не задан.
Устранение неполадок
В HyperDX не отображаются журналы
logs:DescribeLogGroups и logs:FilterLogEvents.
Проверьте журналы коллектора на наличие ошибок:
The security token included in the request is invalid: Учетные данные недействительны или срок их действия истёк. Для временных учетных данных (SSO) убедитесь, что задана переменнаяAWS_SESSION_TOKEN.operation error CloudWatch Logs: FilterLogEvents, AccessDeniedException: Недостаточно разрешений IAMfailed to refresh cached credentials, no EC2 IMDS role found: Не заданы переменные среды с учетными данными AWSconnection refused: Конечная точка ClickStack недоступна
Видны только старые журналы или отсутствуют недавние журналы
Недействительный токен безопасности / срок действия учетных данных истёк
Высокая задержка или отсутствие свежих журналов
poll_interval составляет 1 минуту. Чтобы журналы поступали почти в реальном времени, уменьшите его:
Коллектор использует слишком много памяти
Следующие шаги
- Настройте оповещения для критически важных событий (сбоев соединения, всплесков ошибок)
- Снизьте затраты на CloudWatch, скорректировав сроки хранения или архивируя данные в S3, теперь, когда журналы уже есть в ClickStack
- Отфильтруйте шумные группы логов, удалив их из конфигурации коллектора, чтобы сократить объём ингестии