このトピックでは、Logtailコンテナをデプロイし、Logtail設定を作成して標準のDockerコンテナからログを収集する方法について説明します。 ログには、テキストログ、標準出力 (stdout) 、標準エラー (stderr) が含まれます。

始める前に

  • プロジェクトと Logstore が作成されていること。 詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
  • ログを収集するコンテナーは、継続的にログを生成します。
    重要 Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。

手順1: Logtailコンテナのデプロイ

  1. 次のコマンドを実行して、Logtailイメージをプルします。
    dockerプルregistry.cn-hangzhou.aliyuncs.com /log-service/logtail
    ビジネスシナリオに基づいてregistry.cn-hangzhou.aliyuncs.comを置き換えます。 リージョンについては、「Logtailインストールのリージョン名」をご参照ください。
    説明 サーバーが仮想プライベートクラウド (VPC) にある場合、registryregistry-vpcに置き換える必要があります。
  2. Logtailコンテナを起動します。
    重要 パラメーターを設定する前に、次のいずれかの設定を完了する必要があります。 そうしないと、他のコンテナを削除するときにコンテナテキストファイルbusyエラーが発生することがあります。
    • CentOS 8.0を除くCentOS 7.4以降の場合は、fs.may_detach_mountsパラメーターを1に設定します。 詳細については、「バグ1468249」、「バグ1441737」、および「課題34538」をご参照ください。
    • スタートアップパラメーターに -- privilegedを追加して、Logtailにprivileged権限を付与します。 詳細については、『Docker run reference』をご参照ください。

    ビジネスシナリオに基づいて、次のコマンドの ${your_region_name}${your_aliyun_user_id} 、および ${your_machine_group_user_defined_id} パラメーターを置き換えます。

    docker run -d -v /:/logtail_host:ro -v /var/run:/var/run -- env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/ ${your_region_name} /ilogtail_config.json= $definy_usery_ine_unery_$} -- env} -- env
    パラメーター説明
    ${your_region_name}プロジェクトが存在するリージョンのIDと、プロジェクトが使用するネットワークのタイプ。 リージョンの詳細については、「Logtailインストールのリージョン名」をご参照ください。 ネットワークタイプの詳細については、「ネットワークタイプの選択」をご参照ください。
    • プロジェクトでインターネットを使用している場合は、region-Internet形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、パラメーターをcn-Hangzhou-internetに設定します。
    • プロジェクトでAlibaba Cloud内部ネットワークを使用している場合は、region形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合、パラメーターをcn-Hangzhouに設定します。
    ${your_aliyun_user_id}Log Serviceが有効化されているAlibaba CloudアカウントのID。 詳細については、「Log Serviceが有効化されているAlibaba CloudアカウントのIDの取得」をご参照ください。
    ${your_machine_group_user_defined_id}マシングループのカスタム識別子。 例: log-docker-demo.
    重要
    • 識別子は、プロジェクトが存在するリージョンで一意である必要があります。
    • ステップ2でマシングループを作成するときは、現在のステップで指定したカスタムIDを [カスタムID] フィールドに入力する必要があります。
    重要
    Logtailコンテナのスタートアップパラメーターは、次の条件を満たす場合にのみカスタマイズできます。
    • ALIYUN_LOGTAIL_USER_DEFINED_IDALIYUN_LOGTAIL_USER_ID、およびALIYUN_LOGTAIL_CONFIGが設定されています。
    • ホストの /var/runディレクトリは、Logtailコンテナの /var/runディレクトリにマウントされます。
    • ホストのルートディレクトリは、logtailコンテナの /Logtail_hostディレクトリにマウントされます。
    • /usr/local/ilogtail/ilogtail.LOGログファイルでパラメーターが無効: uuid=noneエラーが返された場合、ホスト上にproduct_uuidという名前のファイルを作成する必要があります。 次に、ファイルに有効なUUID (169E98C9-ABC0-4A92-B1D2-AA6239C0D261など) を入力し、Logtailコンテナの /sys/class/dmi/id/product_uuidディレクトリにファイルをマウントする必要があります。

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

ビジネス要件に基づいて、Log ServiceコンソールでLogtail設定を作成します。

  • Dockerテキストログを収集する場合は、次の手順を実行します。[データのインポート] セクションで、[オンプレミスのオープンソース /商用ソフトウェア] タブをクリックします。 このタブで、[Docker File - Container] をクリックします。 次に、Kubernetesテキストログを収集するために実行する手順に従って、データ収集を設定します。 詳細については、「Log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」をご参照ください。
    説明
    • Dockerテキストログを収集するときは、ビジネス要件に基づいて収集モードを選択する必要があります。たとえば、Simple mode、Simple Mode - Multi-line、Full Regex Mode、JSON Mode、Delimiter Mode、NGINX Modeなどです。 Logtailは、選択した収集モードに基づいてログを解析します。 たとえば、複数行のログを収集する場合は、単純モード-複数行または完全正規表現モードを選択できます。 JSONログを収集する場合は、JSONモードを選択します。 収集モードの詳細については、「テキストファイルの収集」をご参照ください。
    • 固定収集モードがログを解析する要件を満たしていない場合は、Logtail設定で [プラグイン処理の有効化] をオンにし、Logtailプラグインを追加できます。 たとえば、データ処理プラグインを追加して、フィールドの抽出、ログ時間の抽出、データの感度低下、ログのフィルタリングを行うことができます。 詳細については、「Logtailプラグイン」をご参照ください。
  • [データのインポート] セクションで、[オンプレミスのオープンソース /商用ソフトウェア] タブをクリックします。 このタブで、[Docker Standard Output - Container] をクリックします。 次に、Kubernetes stdoutとstderrを収集するために実行する手順に従って、データ収集を設定します。 詳細については、「Log Serviceコンソールを使用したDaemonSetモードでのコンテナーstdoutとstderrの収集」をご参照ください。
  • ホストからテキストログを収集する場合は、次の手順を実行します。[データのインポート] セクションで、[オンプレミスのオープンソース /商用ソフトウェア] タブをクリックします。 このタブで、テキストログに関連するデータソースを選択します。 例: 正規表現-テキストログ
    ホストテキストログの収集手順は、サーバーテキストログの収集手順と同じです。 詳細については、「テキストログの収集」をご参照ください。
    重要 デフォルトでは、ホストのルートディレクトリはlogtailコンテナの /Logtail_hostディレクトリにマウントされます。 Logtail設定を作成するときは、/logtail_hostプレフィックスをログパスに追加する必要があります。 たとえば、ホストの /home/logs/app_log/ ディレクトリからログを収集する場合は、ログパスパラメーターを /logtail_host/home/logs/app_log/ に設定する必要があります。
マシングループを作成するときは、[Identifier] パラメーターを [Custom ID] に設定し、[ALIYUN_LOGTAIL_USER_DEFINED_ID] パラメーターの値を [Custom ID] フィールドに入力する必要があります。 この値は手順1: Logtailコンテナのデプロイで指定します。 マシングループの作成

デフォルトフィールド

  • Docker stdoutおよびstderr
    次の表に、デフォルトで各ログに含まれるフィールドを示します。
    ログフィールド説明
    _time_データがアップロードされた時刻。 例: 2018-02-02T02:18:41.979147844Z
    _source_入力ソースのタイプ。 有効な値: stdoutおよびstderr。
    _image_name_画像の名前です。
    _container_name_コンテナーの名前。コンテナの名前です。
    _container_ip_コンテナーのIPアドレス。
  • Dockerテキストログ
    次の表に、デフォルトで各ログに含まれるフィールドを示します。
    ログフィールド説明
    _image_name_画像の名前です。
    _container_name_コンテナーの名前。コンテナの名前です。
    _container_ip_コンテナーのIPアドレス。

関連する操作

  • 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 **** xh2Z ilogtail]# docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG
    [2018-02-06 08:13:35.721864] [情報] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
    [2018-02-06 08:13:35.722135] [情報] [8] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtailプラグイン再開: 成功
    [2018-02-06 08:13:35.722149] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] 既存のチェックポイントイベントの追加を開始、サイズ: 0
    [2018-02-06 08:13:35.722155] [INFO] [8] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] 既存のチェックポイントイベントを追加、サイズ: 0キャッシュサイズ: 0イベントサイズ: 0成功カウント: 0
    [2018-02-06 08:13:39.725417] [情報] [8] [build/release64/sls/ilogtail/ConfigManager.cpp:3776] コンテナーパスの更新フラグをチェック: 0サイズ: 1
    Logtailコンテナのstdoutはこの場合とは無関係です。 次のstdoutを無視します。
    
    umount役に立たないマウントポイントを開始, /shm$|/merged$|/mqueue $
    umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c8215 5/merged: アンマウントするにはスーパーユーザーである必要があります
    umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: アンマウントするにはスーパーユーザーである必要があります
    umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c2 2dbe/merged: アンマウントするにはスーパーユーザーである必要があります
    ......
    xargs: umount: ステータス255で終了しました。中止
    umount done
    開始logtail
    ilogtailが実行中です
    logtailステータス:
    ilogtailが実行中です
  • 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
    成功を止める
    [sudo @ iZb **** xh2Z ilogtail]# docker exec a287de895e40 /etc/init.d/ilogtaild start
    ilogtailが実行中です

トラブルシューティング

Logtailを使用してDockerログを収集するときに発生する可能性のあるエラーのトラブルシューティング方法については、「Logtailを使用してコンテナからログを収集するときにエラーが発生した場合はどうすればよいですか?」をご参照ください。