Logtail は、コンテナで生成されたテキストログを収集し、収集されたログをコンテナメタデータと一緒に Log Service にアップロードします。
機能特徴
基本的なログファイル収集と比較して、Docker ファイル収集は、次の機能もサポートしています。
- コンテナ内のログパスの設定。このパスからホストへのマッピングを気にする必要はありません。
- Label を使用した収集するコンテナの指定。
- Label を使用した特定のコンテナの除外。
- 収集対象のコンテナを指定する environment。
- 特定のコンテナを除外する environment。
- 複数行ログ (Java スタックログなど) 。
- コンテナデータの自動タグ付け。
- Kubernetes コンテナの自動タグ付け。
制限事項
- 収集停止のポリシー:コンテナが停止すると、Logtail は (1-3 秒の遅延で) コンテナの
die
イベントをリッスンした後、コンテナからのログの収集を停止します。 この間に収集遅延が発生すると、停止前にログの一部を失う可能性があります。 - Dockerストレージドライブ :現在、オーバーレイドライブと overlay2 ドライブのみがサポートされています。 他のドライブタイプの場合、ローカル PC にログディレクトリをマウントする必要があります。
- Logtailの実行方法:Logtail はコンテナとして実行し、Logtail のデプロイ方法に従う必要があります。
- Label:ラベルは、Docker inspect のラベル情報であり、Kubernetes 設定のラベルではありません。
- Environment:Environment は、コンテナの起動時に設定された環境情報です。
手順
- Logtail コンテナをデプロイして設定します。
- Log Service で収集設定を行います。
1. Logtail のデプロイメントと設定
- Kubernetes
Kubernetes ログ収集の詳細については、「Kubernetes のログ収集」をご参照ください 。
- その他のコンテナ管理メソッド
Swarm や Mesos などの他のコンテナ管理メソッドの詳細については、「標準の Docker ログの収集」をご参照ください。
2. Log Service の収集設定
- Logstore リスト ページで、[データインポートウィザード] アイコンをクリックして設定プロセスを入力します。
- データソースを選択します。
[サードパーティ製のソフトウェア] で [Docker ファイル] を選択し、[次へ] をクリックします。
- データソースを設定します。
設定項目 必須 説明 Docker ファイル 必須 収集する該当ファイルが Docker ファイルであるかどうかを確認します。 ホワイトリストにラベルを付ける オプション LabelKey は必須です。 LabelValue が空でない場合、LabelKey = LabelValue がラベルに含まれているコンテナのみが収集されます。 LabelValue が空の場合、LabelKey がラベルに含まれているすべてのコンテナが収集されます。 注- キーと値のペアには互いに OR 関係があります。つまり、ラベルにキーと値のペアのいずれかが含まれていればコンテナは収集されます。
- ここでは、ラベルは Docker inspect のラベル情報です。
ブラックリストに Label を付ける オプション LabelKey は必須です。 LabelValue が空でない場合、LabelKey = LabelValue がラベルに含まれているコンテナのみが除外されます。 LabelValue が空の場合、LabelKey がラベルに含まれているすべてのコンテナが除外されます。 注- キーと値のペアは相互に OR 関係を持ちます。つまり、 ラベルにキーと値のペアのいずれかが含まれている場合、コンテナは除外されます。
- ここでは、ラベルは Docker inspect のラベル情報です。
環境変数ホワイトリスト オプション EnvKey は必須です。 EnvValue が空でない場合、EnvKey = EnvValue が環境変数に含まれているコンテナのみが収集されます。 EnvValue が空の場合、EnvKey が環境変数に含まれているすべてのコンテナが収集されます。 注- キーと値のペアは相互に OR 関係を持ちます。つまり、環境変数にキーと値のペアのいずれかが含まれている場合、コンテナは収集されます。
- ここでは、環境変数とは、コンテナの起動時に設定される環境情報です。
環境変数ブラックリスト オプション EnvKeyis は必須です。 EnvValue が空でない場合、EnvKey = EnvValue が環境変数に含まれているコンテナのみが除外されます。 EnvValue が空の場合、EnvKey が環境変数に含まれているすべてのコンテナが除外されます。 注- キーと値のペアは相互に OR 関係を持ちます。つまり、環境変数にキーと値のペアのいずれかが含まれている場合、コンテナは収集されます。
- ここでは、環境変数とは、コンテナの起動時に設定される環境情報です。
その他の設定 - その他の収集設定とパラメーターの説明については、「テキストファイルの収集」をご参照ください。 - 説明
- このトピックでは、ラベルは Docker 検査に含まれるラベル情報を指します。
- Kubernetes の名前空間とコンテナ名は、Docker 内のラベル
io.kubernetes.pod.namespace
およびio.kubernetes.container.name
に割り当てられます。 たとえば、作成した Pod は backend-prod 名前空間に属し、コンテナ名は worker-server とします。 この場合、2 つのホワイトリストラベルio.kubernetes.pod.namespace : backend-pro
およびio.kubernetes.container.name : worker-server
を設定して、worker-server コンテナ内のログのみの収集を 指定ことができます。 - Kubernetes では
io.kubernetes.pod.namespace
とio.kubernetes.container.name
ラベルのみの使用を推奨します。 他のシナリオでは、環境のホワイトリストまたはブラックリストを使用できます。
- マシングループに適用します。
[マシングループに適用] ページで、収集対象の Logtail マシングループを選択し、[マシングループに適用] をクリックして、選択したマシングループに設定を適用します。 マシングループを作成していない場合は、[マシングループの作成] をクリックしてマシングループを作成します。
- コンテナのテキストログにアクセスするプロセスを完了します。
検索、分析、可視化、および Shipper と ETL 機能を設定するために、ページの指示どおりに設定を完了します。
設定例
- Environment 設定
environment が
POD_NAMESPACE=kube-system
ではなく、NGINX_PORT_80_TCP_PORT=80
であるコンテナのログを収集します。 ログファイルパスは、/var/log/nginx/access.log
で、ログはシンプルモードで解析されます。注 Environmentは、コンテナの起動時に設定された環境情報です。図 1. Environment 設定の例 この例のデータソースの設定は、次のとおりです。 その他の収集設定とパラメーターの説明については、「テキストファイルの収集」をご参照ください。
- Label 設定
Label が
io.kubernetes.container.name=nginx
で、type=pre ではないコンテナのログを収集します。 ログファイルパスは、/var/log/nginx/access.log
で、ログはシンプルモードで解析されます。注 Label は、Docker inspect のラベル情報であり、Kubernetes 設定のラベルではありません。図 2. Label モードの例 この例のデータソースの設定は、次のとおりです。 その他の収集設定とパラメーターの説明については、「テキストファイルの収集」をご参照ください。
デフォルトフィールド
標準 Docker各ログによって次のフィールドが、デフォルトでアップロードされます。
フィールド | 説明 |
---|---|
_image_name_ |
Image name. |
_container_name_ |
コンテナ名 |
_container_ip_ |
コンテナ IP アドレス |
クラスターが Kubernetes クラスターの場合、各ログによって次のフィールドがデフォルトでアップロードされます。
フィールド | 説明 |
---|---|
_image_name_ |
イメージ名 |
_container_name_ |
コンテナ名 |
_pod_name_ |
pod 名 |
_namespace_ |
pod が存在する名前空間 |
_pod_uid_ |
pod の一意の識別子 |
_container_ip_ |
pod の IP アドレス |