Dockerがサーバーにデプロイされた後、クエリと分析のログを収集できます。 Dockerログは、標準出力 (stdoutとstderr) とファイルログの2種類に分類されます。 ファイルログは、サーバー上の指定されたディレクトリに書き込まれたコンテナー内で生成されたログを参照します。標準出力は、コンテナーのリアルタイム出力ストリームを示します。 このトピックでは、Logtailを使用してアプリケーションコンテナーaliweb
からファイルログを収集し、/var/www/test.log
ディレクトリに保存する方法について説明します。
概要
このトピックでは、Linuxオペレーティングシステムを実行するElastic Compute Service (ECS) インスタンスを使用します。 ECSインスタンスにDockerをインストールした後、Logtailを使用して、ECSインスタンスにデプロイされたアプリケーションコンテナから指定されたLogstoreにログを収集できます。
前提条件
プロジェクトと Logstore が作成済みである必要があります。 詳細については、「プロジェクトの管理」および「Logstoreの管理」をご参照ください。
ECSインスタンスが作成され、Dockerがインスタンスにインストールされ、インスタンスが実行中の状態です。 詳細については、「LinuxインスタンスへのDockerのインストールと使用」をご参照ください。
ログを収集するコンテナーは、継続的にログを生成します。
重要Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
1. Logtail コンテナーのデプロイ
1.1 Logtailイメージをプルする
ECSコンソールにログインし、ECSインスタンスを見つけ、[操作] 列の [接続] をクリックします。 ECSインスタンスが接続されたら、
docker -v
コマンドを実行してDockerバージョンを表示します。 次のコードに似た情報が返された場合、DockerがECSインスタンスにインストールされます。Logtailイメージをプルします。 サポートされているリージョンの詳細については、「付録: Logtailインストールのリージョン名」をご参照ください。
cn-hangzhou
を実際の値に置き換えます。 ECSインスタンスが仮想プライベートクラウド (VPC) にある場合、registry
をregistry-vpc
に置き換える必要があります。docker pull registry.cn-hangzhou.aliyuncs.com/log-service/logtail
1.2 Logtailコンテナのデプロイと開始
次のコマンドを実行し、${your_region_name}
、${your_aliyun_user_id}
、および ${your_machine_group_user_defined_id}
パラメーターを実際の値に置き換えます。
docker run -d \
-v /:/logtail_host:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
--env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${your_region_name}/ilogtail_config.json \
--env ALIYUN_LOGTAIL_USER_ID=${your_aliyun_user_id} \
--env ALIYUN_LOGTAIL_USER_DEFINED_ID=${your_machine_group_user_defined_id} \
registry.${your_region_name}.aliyuncs.com/log-service/logtail
コマンドが成功すると、コンテナIDが生成されます。 たとえば、カスタム識別子がdocker-log-demo
であるマシングループ内のサーバーにLogtailコンテナをデプロイする場合は、次のサンプルコードを使用してコンテナを起動します。
次の表に、コード内のパラメーターを示します。
パラメーター | 説明 |
|
|
| プロジェクトが存在するリージョンのIDと、プロジェクトで使用されるネットワークタイプ。 サポートされているリージョンの詳細については、「付録: Logtailインストールのリージョン名」をご参照ください。 ネットワークタイプの詳細については、「ネットワークタイプの選択」をご参照ください。
|
| Simple Log Serviceが有効化されているAlibaba CloudアカウントのID。 詳細については、「Simple Log Serviceが有効化されているAlibaba CloudアカウントのIDの取得」をご参照ください。 |
| マシングループのカスタム識別子。 プロジェクトが存在するリージョンで識別子が一意であることを確認してください。 例: |
次の条件が満たされている場合にのみ、Logtailコンテナのスタートアップパラメーターのカスタム設定を構成できます。
ALIYUN_LOGTAIL_USER_DEFINED_ID
、ALIYUN_LOGTAIL_USER_ID
、およびALIYUN_LOGTAIL_CONFIG
が設定されています。Logtailコンテナが実行されるホストの
/var/run
ディレクトリは、Logtailコンテナの/var/run
ディレクトリにマウントされます。ホストのルートディレクトリは、logtailコンテナの
/Logtail_host
ディレクトリにマウントされます。/usr/local/ilogtail/ilogtail.LOG
ログファイルにパラメーターが無効: uuid=none
エラーが表示された場合、ホスト上にproduct_uuid
という名前のファイルを作成する必要があります。 次に、作成したファイル (169E98C9-ABC0-4A92-B1D2-AA6239C0D261
など) に有効なUUIDを入力し、Logtailコンテナの/sys/class/dmi/id/product_uuid
ディレクトリにファイルをマウントします。
2. Logtail構成の作成
Simple Log Service コンソールにログインします。 表示されるページの右側にあるクイックデータインポートカードをクリックします。 表示されるダイアログボックスで、[自己管理オープンソース /商用ソフトウェア] タブをクリックします。 次に、[Docker File - Container] をクリックします。
データのインポートウィザードのLogstoreの選択ステップで、プロジェクトとLogstoreを選択します。 [次へ] をクリックします。
データのインポートウィザードのマシングループ設定ステップで、マシングループの作成をクリックします。 マシングループの作成パネルのマシングループの設定セクションで、マシングループ識別子パラメーターを [カスタム識別子] に設定し、[カスタム識別子] フィールドに
log-docker-demo
と入力し、[OK] をクリックします。 入力するカスタム識別子は、ステップ1.2で${your_machine_group_user_defined_id}
パラメーターに指定したカスタム識別子と同じである必要があります。データのインポートウィザードのLogtail設定ステップで、[設定名] および [ファイルパス] パラメーターを設定します。 File Pathパラメーターは、アプリケーションコンテナーのログディレクトリ (
/var/www/test.log
など) に設定できます。 [次へ] をクリックします。 パラメーターの詳細については、「DaemonSetモードでのKubernetesコンテナーからのテキストログの収集」をご参照ください。データのインポートウィザードの [クエリと分析の構成] ステップで、インデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。 次に、システムは作成されたLogtail設定に基づいてログを収集します。
3. データのクエリと分析
3.1 アプリケーションコンテナのログを表示する
docker exec -it ${container_ID} /bin/bash
コマンドを実行して、アプリケーションコンテナの継続的に生成されたログを表示します。 この例では、aliweb
アプリケーションコンテナーが使用されます。
3.2 収集したログをSimple Log Serviceコンソールで表示する
デフォルトでは、収集された各ログに特定のフィールドが含まれます。 次の表では、フィールドについて説明します。
項目 | 説明 |
__source__ | LogtailコンテナのIPアドレス。 |
_container_ip_ | アプリケーションコンテナのIPアドレス。 |
__タグ __:__ ホスト名__ | ホスト名を示します。 |
__tag __:__ path__ | ログ収集のパス。 |
__タグ __:__ receive_time__ | Simple Log Serviceがログを受信した時刻。 |
__タグ __:__ 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
関連ドキュメント
Dockerの使用方法の詳細については、「LinuxインスタンスへのDockerのインストールと使用」をご参照ください。
Dockerコンテナからstdoutとstderrを収集する方法の詳細については、「Dockerコンテナからstdoutとstderrを収集する」をご参照ください。
アプリケーションコンテナーが実行されているホストからテキストログを収集する方法の詳細については、「サーバーからのテキストログの収集」をご参照ください。 デフォルトでは、ホストのルートディレクトリはlogtailコンテナの
/Logtail_host
ディレクトリにマウントされます。ログがLogstoreに収集された後、ログのインデックスを作成できます。 詳細については、「インデックスの作成」をご参照ください。 次に、収集したログを照会および分析できます。 詳細については、「ログの照会と分析」をご参照ください。
Logtailを使用してDockerコンテナログを収集するときに発生するエラーのトラブルシューティング方法の詳細については、コンテナーからログを収集するときにエラーが発生した場合はどうすればよいですか?