すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Dockerコンテナからテキストログを収集する

最終更新日:Jan 02, 2025

Simple Log Serviceでは、Dockerコンテナーからテキストログを収集できます。 このトピックでは、Logtailコンテナをデプロイし、アプリケーションコンテナからLogstoreにテキストログを収集する方法について説明します。

概要

image

Logtailコンテナを使用して、ホスト上の複数のアプリケーションコンテナからさまざまな形式のテキストログを収集できます。 異なるLogstoreに対してLogtail設定を作成し、Logtail設定をLogtailコンテナに配信するだけで済みます。 このようにして、Logtailコンテナは、指定された設定に基づいて、収集されたテキストログを対応するLogstoreに送信します。 このトピックでは、次の手順を実行してNGINXコンテナからテキストログを収集する方法について説明します。

Logtailを使用したログ収集に精通している場合は、プロンプトに従ってコンソールで直接操作を実行できます。

前提条件

  • プロジェクトと標準のLogstoreが作成されます。 詳細については、参照プロジェクトの作成Logstoreの作成.

  • アプリケーションコンテナが作成され、ログが継続的に生成されます。

    説明

    Logtailは増分ログのみを収集します。 Logtail構成がサーバーに配信されて適用された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「Logtailのログ収集プロセス」トピックの「ログファイルの読み取り」セクションをご参照ください。

手順1: Logtailコンテナをインストールしてマシングループを作成

  1. Logtailイメージをプルします。

    ホストにログインします。 Simple Log Serviceプロジェクトが存在するリージョンに基づいて、${region_id} パラメーターの値を取得します。 ${region_id} パラメーターを実際のリージョンIDに置き換え、次のコマンドを実行してLogtailイメージをプルします。

    重要
    • 各リージョンのIDの詳細については、「サポートされているリージョン」をご参照ください。 たとえば、SLSプロジェクトが中国 (杭州) リージョンにある場合、${region_id} パラメーターをcn-Hangzhouに置き換える必要があります。

    • サーバーが仮想プライベートクラウド (VPC) にある場合、registryregistry-vpcに置き換える必要があります。

    docker pull registry.${region_id}.aliyuncs.com/log-service/logtail
  2. Logtailコンテナを起動します。

    1. パラメーター

      パラメーター

      説明

      ${region_name}

      Simple Log Serviceプロジェクトが存在するリージョンのIDと、プロジェクトで使用されるネットワークタイプ。 各リージョンのIDの詳細については、「サポートされているリージョン」をご参照ください。 ネットワークタイプの選択方法の詳細については、「ネットワークタイプの選択」をご参照ください。

      • プロジェクトでインターネットを使用している場合は、${region_id}-Internet形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、値をcn-Hangzhou-internetに設定します。

      • プロジェクトがAlibaba Cloud内部ネットワークを使用している場合は、${region_id} 形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、値をcn-Hangzhouに設定します。

      ${aliyun_account_id}

      Simple Log Serviceプロジェクトが属するAlibaba CloudアカウントのID。 IDの取得方法の詳細については、「ユーザー識別子の設定」トピックの「Simple Log Serviceプロジェクトが属するAlibaba CloudアカウントのIDの取得」をご参照ください。

      ${user_defined_id}

      マシングループのカスタム識別子。 例: user-defined-docker-1 カスタム識別子は、プロジェクトが存在するリージョンで一意である必要があります。

    2. パラメーターの説明に基づいて、次のコマンドの ${region_name}${aliyun_account_id} 、および ${user_defined_id} パラメーターを置き換え、次のコマンドを実行してLogtailコンテナーを起動します。

      docker run -d \
          -v /:/logtail_host:ro \
          -v /var/run/docker.sock:/var/run/docker.sock \
          --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${region_name}/ilogtail_config.json \
          --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \
          --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \
          registry.${your_region_name}.aliyuncs.com/log-service/logtail
      重要

      次の条件が満たされている場合にのみ、Logtailコンテナのスタートアップパラメーターのカスタム設定を構成できます。

      • ALIYUN_LOGTAIL_CONFIGALIYUN_LOGTAIL_USER_ID、およびALIYUN_LOGTAIL_USER_DEFINED_IDが設定されています。

      • ホストの /var/runディレクトリは、Logtailコンテナの /var/runディレクトリにマウントされます。

      • ホストのルートディレクトリは、logtailコンテナの /Logtail_hostディレクトリにマウントされます。

      • パラメーターが無効です: uuid=noneエラーメッセージが /usr/local/ilogtail/ilogtail.LOGログファイルに含まれている場合は、ホストにproduct_uuidという名前のファイルを作成し、作成したファイルに169E98C9-ABC0-4A92-B1D2-AA6239C0D261などの有効なuuidを入力します。logtailコンテナーの /sys/class/dmi/id/product_uuidディレクトリにファイルをマウントします。

  3. カスタム識別子ベースのマシングループを作成します。

    1. Simple Log Serviceコンソールにログインします。 [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    2. 左側のナビゲーションウィンドウで、[リソース] > [マシングループ] を選択します。 マシングループリストで、机器组 > マシングループの作成を選択します。image

    3. マシングループの作成パネルでパラメーターを設定し、OKをクリックします。 下表に、各パラメーターを説明します。

      パラメーター

      説明

      名前

      マシングループの名前。 名前の条件は以下の通りです。

      • 名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。

      • 名前の先頭と末尾は、小文字または数字である必要があります。

      • 名前の長さは 2 ~ 128 文字である必要があります。

      重要

      マシングループを作成した後、マシングループの名前を変更することはできません。 作業は慎重に行ってください。

      マシングループ識別子

      マシングループの識別子タイプ。 この例では、[カスタム識別子] が選択されています。

      Machine Groupトピック

      必要に応じて、 マシングループのトピック。 トピックは、異なるサーバーによって生成されたログを識別するために使用されます。 詳細については、「ログトピック」をご参照ください。

      カスタム識別子

      指定されたカスタム識別子。Logtailコンテナを起動したときの ${user_defined_id} パラメーターの値です。

  4. マシングループのハートビートステータスを確認します。

    [マシングループ] セクションで、作成したマシングループを見つけ、その名前をクリックします。 [マシングループの設定] ページで、マシングループの設定とサーバーのステータスを表示します。

ステップ2: Logtail設定の作成

  1. [ログストレージ] > [ログストア] タブで、表示するログストアをクリックします。

  2. [Logtail設定] をクリックします。 [Logtail設定] ページで、[Logtail設定の追加] をクリックします。image

  3. [クイックデータインポート] ダイアログボックスで、[Dockerファイル-コンテナー] をクリックします。image

  4. [マシングループの構成] ステップで、ステップ1で作成したマシングループを選択して、マシングループを [応用サーバーグループ] セクションに追加します。 [次へ] をクリックします。image

  5. Logtailの設定ステップで、[設定名] および [ファイルパス] パラメーターを設定し、その他のパラメーターにはデフォルト値を使用します。 パラメーターの詳細については、「サーバーからのテキストログの収集」をご参照ください。 Logtailプラグインを追加してテキストログを処理することもできます。 詳細については、「データ処理用Logtailプラグインの概要」をご参照ください。 [次へ]をクリックします。

    説明
    • 構成名: Logtail構成の名前。 名前には、小文字、数字、ハイフン ( - )、アンダースコア ( _ ) のみ使用できます。 先頭と末尾は小文字または数字である必要があります。

    • ファイルパス: アプリケーションコンテナ内のログファイルの絶対パス。 例: /var/log/nginx/access.log

    image

  6. [クエリと分析の設定] ステップで、[自動インデックス生成] をクリックし、[更新] をクリックします。 これにより、収集したログをプレビューできます。image

予約フィールド

デフォルトでは、収集された各ログに特定のフィールドが含まれます。 次の表では、フィールドについて説明します。

項目

説明

__source__

LogtailコンテナのIPアドレス。

_container_ip_

アプリケーションコンテナのIPアドレス。

__タグ __:__ ホスト名__

ホスト名を示します。

__tag __:__ path__

ログ収集のパス。

__タグ __:__ receive_time__

SLSがログを受信した時刻。

__タグ __:__ user_defined_id__

マシングループのカスタム識別子。

関連する API 操作

Logtailのステータスの表示

docker exec ${logtail_container_id} /etc/init.d/ilogtaild statusコマンドを実行して、Logtailのステータスを表示できます。

Logtailのバージョン番号、IPアドレス、および起動時間の表示

docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.jsonコマンドを実行して、Logtailに関する情報を表示できます。

Logtailの操作ログの表示

Logtailの操作ログは、/usr/local/ilogtail/ ディレクトリのilogtail.LOGファイルに保存されます。 ログファイルがローテーションされると、生成されたファイルは圧縮され、ilogtail.LOG.x.gzとして保存されます。 例:

[sudo@iZb****exh2Z ilogtail]# docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG
[2018-02-06 08:13:35.721864]    [INFO]    [8]    [build/release64/sls/ilogtail/LogtailPlugin.cpp:104]    logtail plugin Resume:start
[2018-02-06 08:13:35.722135]    [INFO]    [8]    [build/release64/sls/ilogtail/LogtailPlugin.cpp:106]    logtail plugin Resume:success
[2018-02-06 08:13:35.722149]    [INFO]    [8]    [build/release64/sls/ilogtail/EventDispatcher.cpp:369]    start add existed check point events, size:0
[2018-02-06 08:13:35.722155]    [INFO]    [8]    [build/release64/sls/ilogtail/EventDispatcher.cpp:511]    add existed check point events, size:0    cache size:0    event size:0    success count:0
[2018-02-06 08:13:39.725417]    [INFO]    [8]    [build/release64/sls/ilogtail/ConfigManager.cpp:3776]    check container path update flag:0    size:1

コンテナのstdoutとstderrはサンプルシナリオには適用されません。 次のstdoutとstderrを無視します。


start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running

Logtailの再起動

Logtailを再起動するサンプルコード:

[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild stop
kill process Name: ilogtail pid: 7
kill process Name: ilogtail pid: 8
stop success
[sudo@iZb****xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild start
ilogtail is running

関連ドキュメント