このトピックでは、Logtailコンテナをデプロイし、Logtail設定を作成して標準のDockerコンテナからログを収集する方法について説明します。 ログには、テキストログ、標準出力 (stdout) 、標準エラー (stderr) が含まれます。
始める前に
- プロジェクトと Logstore が作成されていること。 詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
- ログを収集するコンテナーは、継続的にログを生成します。 重要 Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
手順1: Logtailコンテナのデプロイ
- 次のコマンドを実行して、Logtailイメージをプルします。
dockerプルregistry.cn-hangzhou.aliyuncs.com /log-service/logtail
ビジネスシナリオに基づいてregistry.cn-hangzhou.aliyuncs.comを置き換えます。 リージョンについては、「Logtailインストールのリージョン名」をご参照ください。説明 サーバーが仮想プライベートクラウド (VPC) にある場合、registryをregistry-vpcに置き換える必要があります。 - 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_ID
、ALIYUN_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を使用してコンテナからログを収集するときにエラーが発生した場合はどうすればよいですか?」をご参照ください。