Интеграция с существующим экземпляром EC2
В этом разделе описано, как установить OpenTelemetry Collector на экземпляры EC2, чтобы собирать системные журналы и отправлять их в ClickStack с автоматическим обогащением метаданными EC2. Эта распределенная архитектура подходит для production и легко масштабируется на несколько экземпляров.
Если вы хотите протестировать интеграцию журналов хоста EC2 перед настройкой production-экземпляра, воспользуйтесь нашей предварительно настроенной конфигурацией и примером данных в разделе "Демо-набор данных".
Предварительные требования
- Запущенный экземпляр ClickStack (может быть развернут в собственной инфраструктуре, в облаке или локально)
- Запущенный экземпляр EC2 (Ubuntu, Amazon Linux или другой дистрибутив Linux)
- У экземпляра EC2 есть сетевой доступ к конечной точке OTLP ClickStack (порт 4318 для HTTP или 4317 для gRPC)
- Есть доступ к службе метаданных экземпляра EC2 (по умолчанию включена)
Убедитесь, что метаданные EC2 доступны
На экземпляре EC2 убедитесь, что служба метаданных доступна:
# Get metadata token (IMDSv2)
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
# Verify instance metadata
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/placement/region
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-typeВы увидите ID экземпляра, регион и тип инстанса. Если эти команды завершаются ошибкой, проверьте следующее:
- Сервис метаданных экземпляра включен
- IMDSv2 не блокируется группами безопасности или сетевыми ACL
- Вы запускаете эти команды непосредственно из самого экземпляра EC2
Убедитесь, что файлы syslog присутствуют
Убедитесь, что ваш инстанс EC2 записывает файлы syslog:
# Ubuntu instances
ls -la /var/log/syslog
# Amazon Linux / RHEL instances
ls -la /var/log/messages
# View recent entries
tail -20 /var/log/syslog
# or
tail -20 /var/log/messagesУстановите OpenTelemetry Collector
Установите дистрибутив OpenTelemetry Collector Contrib на своем экземпляре EC2:
# Download the latest release
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.114.0/otelcol-contrib_0.114.0_linux_amd64.tar.gz
# Extract and install
tar -xvf otelcol-contrib_0.114.0_linux_amd64.tar.gz
sudo mv otelcol-contrib /usr/local/bin/
# Verify installation
otelcol-contrib --versionСоздание конфигурации коллектора
Создайте файл конфигурации для OpenTelemetry Collector по пути /etc/otelcol-contrib/config.yaml:
sudo mkdir -p /etc/otelcol-contribВыберите конфигурацию в соответствии с вашим дистрибутивом Linux:
sudo tee /etc/otelcol-contrib/config.yaml > /dev/null << 'EOF'
receivers:
filelog/syslog:
include:
- /var/log/syslog
- /var/log/**/*.log
start_at: end
operators:
- type: regex_parser
regex: '^(?P<timestamp>\S+) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
parse_from: body
parse_to: attributes
- type: time_parser
parse_from: attributes.timestamp
layout_type: gotime
layout: '2006-01-02T15:04:05.999999-07:00'
- type: add
field: attributes.source
value: "ec2-host-logs"
processors:
resourcedetection:
detectors: [ec2, system]
timeout: 5s
override: false
ec2:
tags:
- ^Name
- ^Environment
- ^Team
batch:
timeout: 10s
send_batch_size: 10000
exporters:
otlphttp:
endpoint: "http://YOUR_CLICKSTACK_HOST:4318"
headers:
authorization: "${env:CLICKSTACK_API_KEY}"
service:
pipelines:
logs:
receivers: [filelog/syslog]
processors: [resourcedetection, batch]
exporters: [otlphttp]
EOFsudo tee /etc/otelcol-contrib/config.yaml > /dev/null << 'EOF'
receivers:
filelog/syslog:
include:
- /var/log/messages
- /var/log/**/*.log
start_at: end
operators:
- type: regex_parser
regex: '^(?P<timestamp>\w+ \d+ \d{2}:\d{2}:\d{2}) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
parse_from: body
parse_to: attributes
- type: time_parser
parse_from: attributes.timestamp
layout: '%b %d %H:%M:%S'
- type: add
field: attributes.source
value: "ec2-host-logs"
processors:
resourcedetection:
detectors: [ec2, system]
timeout: 5s
override: false
ec2:
tags:
- ^Name
- ^Environment
- ^Team
batch:
timeout: 10s
send_batch_size: 10000
exporters:
otlphttp:
endpoint: "http://YOUR_CLICKSTACK_HOST:4318"
headers:
authorization: "${env:CLICKSTACK_API_KEY}"
service:
pipelines:
logs:
receivers: [filelog/syslog]
processors: [resourcedetection, batch]
exporters: [otlphttp]
EOFЗамените следующее в конфигурации:
YOUR_CLICKSTACK_HOST: Имя хоста или IP-адрес, по которому доступен ClickStack- Для локального тестирования можно использовать SSH-туннель (см. раздел «Устранение неполадок»)
Данная конфигурация:
- Считывает системные файлы журналов из стандартных путей (
/var/log/syslogдля Ubuntu,/var/log/messagesдля Amazon Linux/RHEL) - Разбирает формат syslog для извлечения структурированных полей (временная метка, hostname, unit/service, PID, сообщение)
- Автоматически определяет и добавляет метаданные EC2 с помощью процессора
resourcedetection - При наличии также может включать теги EC2 (Name, Environment, Team)
- Отправляет журналы в ClickStack по OTLP HTTP
Задайте API-ключ ClickStack
Экспортируйте API-ключ ClickStack в переменную окружения:
export CLICKSTACK_API_KEY="your-api-key-here"Чтобы это сохранялось после перезагрузки, добавьте это в профиль оболочки:
echo 'export CLICKSTACK_API_KEY="your-api-key-here"' >> ~/.bashrc
source ~/.bashrcЗапустите коллектор
Запустите OpenTelemetry Collector:
CLICKSTACK_API_KEY="your-api-key-here" /usr/local/bin/otelcol-contrib --config /etc/otelcol-contrib/config.yamlПроверка журналов в HyperDX
После запуска коллектора войдите в HyperDX и убедитесь, что журналы поступают вместе с метаданными EC2:
- Перейдите в представление Search
- В поле source выберите
Logs - Отфильтруйте по
source:ec2-host-logs - Нажмите на запись в журнале, чтобы развернуть её
- Убедитесь, что в атрибутах ресурса отображаются метаданные EC2:
cloud.providercloud.regionhost.id(ID экземпляра)host.type(тип инстанса)cloud.availability_zone


Демо-набор данных
Для пользователей, которые хотят протестировать интеграцию журналов хоста EC2 перед настройкой рабочих экземпляров, мы предоставляем демо-набор данных с имитированными метаданными EC2.
Скачайте пример набора данных
Скачайте пример файла журнала:
curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/host-logs/journal.logНабор данных включает:
- Последовательность загрузки системы
- Активность входа по SSH (успешные и неуспешные попытки)
- Инцидент безопасности (атака методом перебора и реакция fail2ban)
- Плановое обслуживание (задания cron, anacron)
- Перезапуски службы (rsyslog)
- Сообщения ядра и активность межсетевого экрана
- Сочетание штатных операций и примечательных событий
Создайте тестовую конфигурацию коллектора
Создайте файл ec2-host-logs-demo.yaml со следующей конфигурацией:
cat > ec2-host-logs-demo.yaml << 'EOF'
receivers:
filelog/journal:
include:
- /tmp/host-demo/journal.log
start_at: beginning
operators:
- type: regex_parser
regex: '^(?P<timestamp>\S+) (?P<hostname>\S+) (?P<unit>\S+?)(?:\[(?P<pid>\d+)\])?: (?P<message>.*)$'
parse_from: body
parse_to: attributes
- type: time_parser
parse_from: attributes.timestamp
layout: '%Y-%m-%dT%H:%M:%S%z'
- type: add
field: attributes.source
value: "ec2-demo"
processors:
# Simulate EC2 metadata for demo (no real EC2 instance required)
resource:
attributes:
- key: service.name
value: "ec2-demo"
action: insert
- key: cloud.provider
value: "aws"
action: insert
- key: cloud.platform
value: "aws_ec2"
action: insert
- key: cloud.region
value: "us-east-1"
action: insert
- key: cloud.availability_zone
value: "us-east-1a"
action: insert
- key: host.id
value: "i-0abc123def456789"
action: insert
- key: host.type
value: "t3.medium"
action: insert
- key: host.name
value: "prod-web-01"
action: insert
service:
pipelines:
logs/ec2-demo:
receivers: [filelog/journal]
processors:
- resource
- memory_limiter
- transform
- batch
exporters:
- clickhouse
EOFЗапустите ClickStack с демонстрационной конфигурацией
Запустите ClickStack с демонстрационными журналами и демонстрационной конфигурацией:
docker run --name clickstack-demo \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
-e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
-v "$(pwd)/ec2-host-logs-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v "$(pwd)/journal.log:/tmp/host-demo/journal.log:ro" \
docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latestПроверьте журналы в HyperDX
После запуска collector:
- Откройте HyperDX и войдите в свою учетную запись (возможно, сначала потребуется создать ее)
- Перейдите в представление поиска и выберите источник
Logs - Установите временной диапазон 2025-11-10 00:00:00 - 2025-11-13 00:00:00
- Отфильтруйте по
source:ec2-demo - Разверните запись в журнале, чтобы просмотреть метаданные EC2 в атрибутах ресурса


Вы должны увидеть журналы со смоделированным контекстом EC2, включая:
- ID экземпляра:
i-0abc123def456789 - Регион:
us-east-1 - Зона доступности:
us-east-1a - Тип инстанса:
t3.medium
Панели мониторинга и визуализация
Чтобы вам было проще начать мониторинг журналов хоста EC2 в ClickStack, мы предоставляем базовые визуализации с облачным контекстом.
Скачать конфигурацию панели мониторинга
Импортируйте преднастроенный дашборд
- Откройте HyperDX и перейдите в раздел Dashboards
- Нажмите Import Dashboard в правом верхнем углу в меню с многоточием

- Загрузите файл
host-logs-dashboard.jsonи нажмите Finish Import

Просмотрите панель мониторинга
Панель мониторинга будет создана со всеми преднастроенными визуализациями:

Вы можете фильтровать визуализации на панели мониторинга по контексту EC2:
cloud.region:us-east-1- показать журналы из конкретного регионаhost.type:t3.medium- фильтровать по типу инстансаhost.id:i-0abc123def456- журналы с конкретного инстанса
Устранение неполадок
Метаданные EC2 не отображаются в журналах
Убедитесь, что сервис метаданных EC2 доступен:
# Получить токен метаданных
TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
# Проверить конечную точку метаданных
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-idЕсли это не помогло, проверьте следующее:
- Служба метаданных экземпляра включена
- IMDSv2 не блокируется группами безопасности
- Вы запускаете коллектор на самом экземпляре EC2
Проверьте логи коллектора на наличие ошибок метаданных:
# Если запущено как systemd-сервис
sudo journalctl -u otelcol-contrib -f | grep -i "ec2\|metadata\|resourcedetection"
# Если запущено на переднем плане, проверьте stdoutЖурналы не отображаются в HyperDX
Проверьте, что файлы syslog существуют и в них ведётся запись:
ls -la /var/log/syslog /var/log/messages
tail -f /var/log/syslogПроверьте, может ли коллектор читать файлы журналов:
cat /var/log/syslog | head -20Проверьте сетевую доступность ClickStack:
# Проверка конечной точки OTLP
curl -v http://YOUR_CLICKSTACK_HOST:4318/v1/logs
# Должен прийти ответ (даже если с ошибкой — это означает, что конечная точка доступна)Проверьте журналы коллектора на наличие ошибок:
# Если запущен на переднем плане
# Искать сообщения об ошибках в stdout
# Если запущен как сервис systemd
sudo journalctl -u otelcol-contrib -f | grep -i "error\|failed"Некорректный разбор журналов
Проверьте формат syslog:
Для Ubuntu 24.04+:
# Должен отображаться формат ISO8601: 2025-11-17T20:55:44.826796+00:00
tail -5 /var/log/syslogДля Amazon Linux 2 / Ubuntu 20.04:
# Должен отображаться традиционный формат: Nov 17 14:16:16
tail -5 /var/log/messagesЕсли ваш формат отличается, используйте вкладку с подходящей конфигурацией в разделе Создание конфигурации коллектора для вашего дистрибутива.
Коллектор не запускается как служба systemd
Проверьте статус службы:
sudo systemctl status otelcol-contribПросмотр подробных журналов:
sudo journalctl -u otelcol-contrib -n 50Распространённые проблемы:
- API-ключ задан в переменных окружения некорректно
- Ошибки синтаксиса в файле конфигурации
- Проблемы с правами доступа при чтении файлов журнала
Следующие шаги
- Настройте оповещения о критических системных событиях (сбои сервиса, ошибки аутентификации, предупреждения о проблемах с диском)
- Фильтруйте по атрибутам метаданных EC2 (регион, тип инстанса, ID экземпляра), чтобы отслеживать конкретные ресурсы
- Коррелируйте журналы хоста EC2 с журналами приложений для комплексной диагностики
- Создавайте пользовательские панели мониторинга для мониторинга безопасности (попытки SSH, использование sudo, блокировки межсетевым экраном)
Переход в продакшн
В этом руководстве OpenTelemetry Collector устанавливается непосредственно на экземпляры EC2, что является рекомендуемым вариантом для мониторинга на уровне хоста в продакшн-среде. Для управления коллекторами на множестве экземпляров рассмотрите возможность использования инструментов управления конфигурацией (Ansible, Chef, Puppet) или OpenTelemetry Operator в средах Kubernetes. См. раздел Отправка данных OpenTelemetry с конфигурацией для продакшн-среды.