Интеграция с существующими системами
Отслеживайте записи journald в существующей Linux-системе, запустив OpenTelemetry Collector с приёмником journald, чтобы собирать системные журналы и отправлять их в ClickStack через OTLP.
Если вы хотите сначала протестировать эту интеграцию, не изменяя текущую конфигурацию, перейдите к разделу о демо-наборе данных.
Предварительные требования
- Запущенный экземпляр ClickStack
- Система Linux с systemd (Ubuntu 16.04+, CentOS 7+, Debian 8+)
- Docker или Docker Compose, установленные на системе, за которой ведётся мониторинг
Получите ключ API ClickStack
OpenTelemetry Collector отправляет данные в конечную точку OTLP ClickStack, для которой требуется аутентификация.
- Откройте HyperDX по URL-адресу ClickStack (например, http://localhost:8080)
- Создайте учётную запись или войдите в систему, если требуется
- Перейдите в Team Settings → API Keys
- Скопируйте свой ключ API для приёма данных

- Задайте его как переменную окружения:
export CLICKSTACK_API_KEY=your-api-key-hereПроверьте, что systemd journal работает
Убедитесь, что в системе используется systemd и доступны логи journal:
# Проверить версию systemd
systemctl --version
# Посмотреть последние записи journal
journalctl -n 20
# Проверить использование диска journal
journalctl --disk-usageЕсли хранилище journal находится только в памяти, включите постоянное хранение:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journaldСоздайте конфигурацию OpenTelemetry Collector
Создайте файл конфигурации для OpenTelemetry Collector:
cat > otel-config.yaml << 'EOF'
receivers:
journald:
directory: /var/log/journal
priority: info
units:
- sshd
- nginx
- docker
- containerd
- systemd
processors:
batch:
timeout: 10s
send_batch_size: 10000
resource:
attributes:
- key: service.name
value: systemd-logs
action: insert
- key: host.name
from_attribute: _HOSTNAME
action: upsert
attributes:
actions:
- key: unit
from_attribute: _SYSTEMD_UNIT
action: upsert
- key: priority
from_attribute: PRIORITY
action: upsert
exporters:
otlphttp:
endpoint: ${CLICKSTACK_ENDPOINT}
headers:
authorization: ${CLICKSTACK_API_KEY}
service:
pipelines:
logs:
receivers: [journald]
processors: [resource, attributes, batch]
exporters: [otlphttp]
EOFРазверните с помощью Docker Compose
В этом примере показано развёртывание OTel collector вместе с ClickStack:
services:
clickstack:
image: clickhouse/clickstack-all-in-one:latest
ports:
- "8080:8080"
- "4317:4317"
- "4318:4318"
networks:
- monitoring
otel-collector:
image: otel/opentelemetry-collector-contrib:0.115.1
depends_on:
- clickstack
environment:
- CLICKSTACK_API_KEY=${CLICKSTACK_API_KEY}
- CLICKSTACK_ENDPOINT=http://clickstack:4318
volumes:
- ./otel-config.yaml:/etc/otelcol/config.yaml:ro
- /var/log/journal:/var/log/journal:ro
- /run/log/journal:/run/log/journal:ro
- /etc/machine-id:/etc/machine-id:ro
command: ["--config=/etc/otelcol/config.yaml"]
networks:
- monitoring
networks:
monitoring:
driver: bridgeЗапустите сервисы:
docker compose up -dПроверьте логи в HyperDX
После настройки войдите в HyperDX и убедитесь, что логи поступают:
- Перейдите в представление Search
- Установите source в Logs
- Отфильтруйте по
service.name:systemd-logs - Вы должны увидеть структурированные записи логов с такими полями, как
unit,priority,MESSAGE,_HOSTNAME


Демо-набор данных
Для пользователей, которые хотят протестировать интеграцию журналов systemd перед настройкой своих систем в продакшн, мы предоставляем пример набора заранее сгенерированных журналов systemd с реалистичными паттернами.
Скачайте пример набора данных
Скачайте пример файла журнала:
curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/systemd/systemd-demo.logСоздайте конфигурацию демо-collector
Создайте файл конфигурации для демо:
cat > systemd-demo.yaml << 'EOF'
receivers:
filelog:
include:
- /tmp/systemd-demo/systemd-demo.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: "systemd-demo"
service:
pipelines:
logs/systemd-demo:
receivers: [filelog]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
EOFЗапустите ClickStack с демо-данными
Запустите ClickStack с демо-журналами:
docker run -d --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)/systemd-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v "$(pwd)/systemd-demo.log:/tmp/systemd-demo/systemd-demo.log:ro" \
clickhouse/clickstack-all-in-one:latestПроверьте журналы в HyperDX
После запуска ClickStack:
- Откройте HyperDX и войдите в свою учётную запись
- Перейдите в представление Search и установите источник
Logs - Установите временной диапазон 2025-11-14 00:00:00 - 2025-11-17 00:00:00


Панели мониторинга и визуализация
Чтобы вам было проще начать мониторинг журналов systemd с помощью ClickStack, мы предоставляем базовые визуализации для данных журнала systemd.
Скачать конфигурацию панели мониторинга
Импортируйте преднастроенный дашборд
- Откройте HyperDX и перейдите в раздел Dashboards
- Нажмите Import Dashboard в правом верхнем углу в меню с многоточием

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

Просмотрите панель мониторинга
Панель мониторинга включает визуализации для:
- Объёма журналов во времени
- Наиболее активных юнитов systemd по числу записей в журнале
- Событий аутентификации SSH
- Сбоев сервисов
- Уровня ошибок

Устранение неполадок
В HyperDX не отображаются журналы
Проверьте, доходят ли журналы до ClickHouse:
docker exec clickstack clickhouse-client --query "
SELECT COUNT(*) as log_count
FROM otel_logs
WHERE ServiceName = 'systemd-logs'
"Если результатов нет, проверьте журналы collector:
docker logs otel-collector | grep -i "error\|journald" | tail -20ошибка «journalctl not found»
Если вы видите exec: "journalctl": executable file not found in $PATH:
Образ otel/opentelemetry-collector-contrib не содержит journalctl. Вы можете:
- Установить collector на хосте:
wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.115.0/otelcol-contrib_0.115.0_linux_amd64.tar.gz
tar -xzf otelcol-contrib_0.115.0_linux_amd64.tar.gz
sudo mv otelcol-contrib /usr/local/bin/
otelcol-contrib --config=otel-config.yaml- Используйте подход с экспортом в текстовый формат (как в демо), где приёмник
filelogчитает экспортированные данные journald
Следующие шаги
- Настройте оповещения для отслеживания критически важных системных событий (сбоев сервисов, ошибок аутентификации, завершения процессов из-за OOM)
- Создайте дополнительные панели мониторинга для конкретных сценариев использования (мониторинга безопасности SSH, состояния сервисов)
- Фильтруйте по конкретным юнитам systemd, чтобы уменьшить шум и сосредоточиться на важных сервисах
Переход в продакшн
В этом руководстве используется отдельный OpenTelemetry Collector для чтения журналов systemd и отправки их в конечную точку OTLP ClickStack — это рекомендуемый вариант для продакшн-среды.
Для продакшн-сред с несколькими хостами рассмотрите следующие варианты:
- Развертывание collector как ДемонСет в Kubernetes
- Запуск collector как сервиса systemd на каждом хосте
- Использование OpenTelemetry Operator для автоматизированного развертывания
См. Приём данных с OpenTelemetry, чтобы ознакомиться с шаблонами развертывания для продакшн-среды.