Перейти к основному содержимому
Перейти к основному содержимому

Локальные логи и метрики

Это руководство по началу работы позволяет собирать локальные логи и метрики с вашей системы и отправлять их в ClickStack для визуализации и анализа.

Этот пример работает только на системах OSX и Linux

HyperDX in ClickHouse Cloud

Этот пример набора данных также может использоваться с HyperDX в ClickHouse Cloud с минимальными изменениями конвейера, отмеченными в тексте. Если вы используете HyperDX в ClickHouse Cloud, вам потребуется локально запущенный коллектор OpenTelemetry, как описано в руководстве по началу работы для этой модели развертывания.

Создайте пользовательскую конфигурацию OpenTelemetry

Создайте файл custom-local-config.yaml со следующим содержимым:

receivers:
  filelog:
    include:
      - /host/var/log/**/*.log        # Linux logs from host
      - /host/var/log/syslog
      - /host/var/log/messages
      - /host/private/var/log/*.log   # macOS logs from host
    start_at: beginning
    resource:
      service.name: "system-logs"

  hostmetrics:
    collection_interval: 1s
    scrapers:
      cpu:
        metrics:
          system.cpu.time:
            enabled: true
          system.cpu.utilization:
            enabled: true
      memory:
        metrics:
          system.memory.usage:
            enabled: true
          system.memory.utilization:
            enabled: true
      filesystem:
        metrics:
          system.filesystem.usage:
            enabled: true
          system.filesystem.utilization:
            enabled: true
      paging:
        metrics:
          system.paging.usage:
            enabled: true
          system.paging.utilization:
            enabled: true
          system.paging.faults:
            enabled: true
      disk:
      load:
      network:
      processes:

service:
  pipelines:
    logs/local:
      receivers: [filelog]
      processors:
        - memory_limiter
        - batch
      exporters:
        - clickhouse
    metrics/hostmetrics:
      receivers: [hostmetrics]
      processors:
        - memory_limiter
        - batch
      exporters:
        - clickhouse

Данная конфигурация собирает системные журналы и метрики для систем OSX и Linux, отправляя результаты в ClickStack. Конфигурация расширяет коллектор ClickStack путём добавления новых получателей и конвейеров — вы ссылаетесь на существующий экспортёр clickhouse и процессоры (memory_limiter, batch), которые уже настроены в базовом коллекторе ClickStack.

Временные метки при ингестии

Эта конфигурация корректирует временные метки при приёме данных, присваивая каждому событию обновлённое значение времени. Рекомендуется предварительно обрабатывать или парсить временные метки с помощью процессоров или операторов OTel в файлах логов, чтобы сохранить точное время события.

При такой конфигурации, если приёмник или файловый процессор настроен на чтение с начала файла, всем существующим записям журнала будет присвоена одна и та же скорректированная временная метка — время обработки, а не исходное время события. Любые новые события, добавленные в файл, получат временные метки, приблизительно соответствующие времени их фактического создания.

Чтобы избежать такого поведения, можно установить начальную позицию в значение end в конфигурации приёмника. Это гарантирует, что будут приниматься только новые записи с временными метками, близкими к фактическому времени их поступления.

Для получения более подробной информации о структуре конфигурации OpenTelemetry (OTel) рекомендуем ознакомиться с официальным руководством.

Запуск ClickStack с настраиваемой конфигурацией

Выполните следующую команду docker для запуска контейнера all-in-one с вашей конфигурацией:

docker run -d --name clickstack \
  -p 8080:8080 -p 4317:4317 -p 4318:4318 \
  --user 0:0 \
  -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
  -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
  -v /var/log:/host/var/log:ro \
  -v /private/var/log:/host/private/var/log:ro \
  clickhouse/clickstack-all-in-one:latest
Пользователь root

Мы запускаем коллектор от имени пользователя root для доступа ко всем системным журналам — это необходимо для сбора журналов из защищённых путей в системах на базе Linux. Однако такой подход не рекомендуется для production-окружений. В production-средах OpenTelemetry Collector следует развёртывать как локальный агент только с минимальными правами, необходимыми для доступа к целевым источникам журналов.

Обратите внимание, что мы монтируем /var/log хоста в /host/var/log внутри контейнера во избежание конфликтов с собственными лог-файлами контейнера.

При использовании HyperDX в ClickHouse Cloud с автономным коллектором используйте следующую команду:

docker run -d \
  -p 4317:4317 -p 4318:4318 \
  --user 0:0 \
  -e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
  -e OPAMP_SERVER_URL=${OPAMP_SERVER_URL} \
  -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \
  -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \
  -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \
  -v "$(pwd)/custom-local-config.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
  -v /var/log:/host/var/log:ro \
  -v /private/var/log:/host/private/var/log:ro \
  clickhouse/clickstack-otel-collector:latest

Коллектор немедленно начнет сбор локальных системных журналов и метрик.

Перейдите по адресу http://localhost:8080 для доступа к интерфейсу HyperDX при локальном развёртывании. Если вы используете HyperDX в ClickHouse Cloud, выберите ваш сервис и HyperDX в левом меню.

Исследование системных логов

В интерфейсе поиска должны отображаться локальные системные логи. Разверните фильтры и выберите system.log:

Локальные логи HyperDX

Исследование системных метрик

Метрики можно исследовать с помощью графиков.

Перейдите в Chart Explorer через левое меню. Выберите источник Metrics и тип агрегации Maximum.

В меню Select a Metric введите memory, а затем выберите system.memory.utilization (Gauge).

Нажмите кнопку запуска, чтобы визуализировать использование памяти во времени.

Динамика использования памяти

Обратите внимание, что число возвращается в виде числа с плавающей точкой %. Для более чёткого отображения выберите Set number format.

Формат чисел

В открывшемся меню выберите Percentage из выпадающего списка Output format, после чего нажмите Apply.

Память, % времени