Dockerがサーバーにデプロイされた後、クエリと分析のログを収集できます。 Dockerログは、標準出力 (stdoutとstderr) とファイルログの2種類に分類されます。 ファイルログは、サーバー上の指定されたディレクトリに書き込まれたコンテナー内で生成されたログを参照します。標準出力は、コンテナーのリアルタイム出力ストリームを示します。 このトピックでは、Logtailを使用してコンテナーの標準出力をLogstoreに収集する方法について説明します。
概要
このトピックでは、Linuxオペレーティングシステムを実行するElastic Compute Service (ECS) インスタンスを使用します。 ECSインスタンスにDockerをインストールした後、Logtailを使用して、ECSインスタンスにデプロイされたアプリケーションコンテナから指定されたLogstoreにstdoutとstderrを収集できます。
前提条件
プロジェクトと 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 StdoutおよびStderr - Container] をクリックします。
データのインポートウィザードのLogstoreの選択ステップで、プロジェクトとLogstoreを選択します。 [次へ] をクリックします。
データのインポートウィザードのマシングループの作成ステップで、マシングループの作成をクリックします。 表示されるパネルで、マシングループ識別子パラメーターを [カスタム識別子] に設定し、[カスタム識別子] フィールドに
log-docker-demo
と入力します。 [OK] をクリックします。 [カスタム識別子] フィールドに入力するカスタム識別子は、ステップ1.2の${your_machine_group_user_defined_id}
パラメーターに指定したカスタム識別子と同じである必要があります。[データのインポート] ウィザードの [Logtail設定] ステップで、[グローバル設定] 、[入力設定] 、[プロセッサ設定] セクションで設定を行い、[次へ] をクリックします。 パラメーターの詳細については、「サーバーからのテキストログの収集」をご参照ください。
データのインポートウィザードの [クエリと分析の構成] ステップで、インデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。 次に、システムは作成されたLogtail設定に基づいてデータを収集します。
3. 収集されたデータの表示
3.1 アプリケーションコンテナのstdoutとstderrを表示する
docker logs ${container_ID}
コマンドを実行して、アプリケーションコンテナのstdoutとstderrを表示します。 この例では、aliweb
アプリケーションコンテナーが使用されます。
アプリケーションコンテナのstdoutとstderrをログファイルで表示することもできます。 デフォルトでは、Dockerはアプリケーションコンテナのstdoutとstderrを、アプリケーションコンテナが実行されているホストの /var/lib/docker/containers
ディレクトリに保存します。 各アプリケーションコンテナは、コンテナIDにちなんで名付けられたフォルダに対応し、コンテナログはこのフォルダに格納されます。 フォルダ内のファイル名は ${container_id}-json.log
です。
3.2 Simple Log Serviceコンソールでのデータの表示
デフォルトでは、収集された各stdoutまたはstderrには次のフィールドが含まれます。
項目 | 説明 |
__source__ | LogtailコンテナのIPアドレス。 |
__タグ __:__ ホスト名__ | ホスト名を示します。 |
__タグ __:__ receive_time__ | Simple Log Serviceがログを受信した時刻。 |
_time_ | ログがSimple log Serviceにアップロードされた時刻。 例: |
_source_ | ソースのタイプ。 有効な値: stdoutおよびstderr。 |
_image_name_ | The name of the image. |
_container_name_ | アプリケーションコンテナの名前。 |
_container_ip_ | アプリケーションコンテナのIPアドレス。 |
関連ドキュメント
Logtailのステータスの詳細については、「Logtailのステータスの表示」をご参照ください。
Dockerの使用方法の詳細については、「LinuxインスタンスへのDockerのインストールと使用」をご参照ください。
Dockerコンテナからテキストログを収集する方法の詳細については、「Dockerコンテナからログを収集する」をご参照ください。
アプリケーションコンテナーが実行されているホストからテキストログを収集する方法の詳細については、「サーバーからのテキストログの収集」をご参照ください。 デフォルトでは、ホストのルートディレクトリはlogtailコンテナの
/Logtail_host
ディレクトリにマウントされます。ログがLogstoreに収集された後、ログのインデックスを作成できます。 詳細については、「インデックスの作成」をご参照ください。 次に、収集したログを照会および分析できます。 詳細については、「ログの照会と分析」をご参照ください。
Logtailを使用してDockerコンテナログを収集するときに発生するエラーのトラブルシューティング方法の詳細については、コンテナーからログを収集するときにエラーが発生した場合はどうすればよいですか?