メインコンテンツへスキップ
メインコンテンツへスキップ

ローカルのログとメトリクス

この入門ガイドでは、ローカル環境のログとメトリクスを収集し、それらを ClickStack に送信して可視化および分析します。

このサンプルは OSX および Linux システムでのみ動作します

ClickHouse Cloud 上の HyperDX

このサンプルデータセットは、記載されているとおり手順にわずかな調整を加えるだけで、ClickHouse Cloud 上の HyperDX でも使用できます。ClickHouse Cloud で HyperDX を使用する場合は、このデプロイメントモデル向けの入門ガイドで説明されているように、ローカルで実行される OpenTelemetry collector が必要です。

カスタムOpenTelemetry設定を作成する

以下の内容で custom-local-config.yaml ファイルを作成します:

receivers:
  filelog:
    include:
      - /host/var/log/**/*.log        # ホストからのLinuxログ
      - /host/var/log/syslog
      - /host/var/log/messages
      - /host/private/var/log/*.log   # ホストからのmacOSログ
    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

この設定は、macOSおよびLinuxシステムのシステムログとメトリクスを収集し、結果をClickStackに送信します。この設定では、新しいレシーバーとパイプラインを追加することでClickStackコレクターを拡張し、ベースのClickStackコレクターで既に設定されているclickhouseエクスポーターとプロセッサー(memory_limiterbatch)を参照します。

インジェストのタイムスタンプ

この設定はインジェスト時にタイムスタンプを調整し、各イベントに更新された時刻値を割り当てます。正確なイベント時刻を保持するため、ユーザーはOTelプロセッサーまたはオペレーターを使用してログファイル内のタイムスタンプを前処理または解析することを推奨します。

この設定例では、レシーバーまたはファイルプロセッサーがファイルの先頭から開始するように構成されている場合、既存のすべてのログエントリには同一の調整済みタイムスタンプが割り当てられます。これは元のイベント時刻ではなく、処理時刻です。ファイルに追記される新しいイベントには、実際の生成時刻に近似したタイムスタンプが付与されます。

この動作を回避するには、レシーバー設定で開始位置を end に設定してください。これにより、新しいエントリのみが取り込まれ、実際の到着時刻に近いタイムスタンプが付与されます。

OpenTelemetry(OTel)の設定構造の詳細については、公式ガイドを参照することを推奨します。

カスタム設定でClickStackを起動する

カスタム設定でオールインワンコンテナを起動するには、以下のDockerコマンドを実行します:

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 \
  docker.hyperdx.io/hyperdx/hyperdx-all-in-one:latest
rootユーザー

すべてのシステムログにアクセスするため、コレクターをrootユーザーとして実行しています。これは、Linuxベースのシステムにおいて保護されたパスからログを取得するために必要です。ただし、この方法は本番環境では推奨されません。本番環境では、OpenTelemetry Collectorを、対象ログソースへのアクセスに必要な最小限の権限のみを持つローカルエージェントとしてデプロイしてください。

ホストの /var/log をコンテナ内の /host/var/log にマウントすることで、コンテナ自身のログファイルとの競合を回避しています。

スタンドアロンコレクターでClickHouse Cloud上のHyperDXを使用する場合は、代わりに以下のコマンドを使用してください:

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 \
  docker.hyperdx.io/hyperdx/hyperdx-otel-collector

コレクターは即座にローカルシステムのログとメトリクスの収集を開始します。

ローカルにデプロイする場合は、http://localhost:8080 にアクセスしてHyperDX UIを開きます。ClickHouse CloudでHyperDXを使用する場合は、サービスを選択し、左メニューからHyperDXを選択します。

システムログの確認

検索UIにローカルシステムログが表示されます。フィルタを展開してsystem.logを選択します:

HyperDX のローカルログ

システムメトリクスを確認する

チャートを使用してメトリクスを確認できます。

左側のメニューから Chart Explorer に移動します。ソースとして Metrics を選択し、集計タイプとして Maximum を選択します。

Select a Metricメニューで、system.memory.utilization (Gauge)を選択する前にmemoryと入力します。

実行ボタンを押して、時系列でのメモリ使用率を可視化します。

メモリ使用量の推移

数値は浮動小数点の%として返されることに注意してください。より明確に表示するには、Set number formatを選択します。

数値の書式

次のメニューで、Output formatドロップダウンからPercentageを選択し、Applyをクリックします。

メモリの時間割合(%)