|
| 1 | +--- |
| 2 | +title: Docker ログの収集 |
| 3 | +kind: documentation |
| 4 | +aliases: |
| 5 | + - /ja/logs/docker |
| 6 | + - /ja/logs/languages/docker |
| 7 | + - /ja/logs/log_collection/docker |
| 8 | +further_reading: |
| 9 | + - link: logs/explorer |
| 10 | + tag: Documentation |
| 11 | + text: ログの調査方法 |
| 12 | + - link: logs/explorer/analytics |
| 13 | + tag: Documentation |
| 14 | + text: ログ分析の実行 |
| 15 | + - link: logs/processing |
| 16 | + tag: Documentation |
| 17 | + text: ログの処理方法 |
| 18 | + - link: logs/processing/parsing |
| 19 | + tag: Documentation |
| 20 | + text: パースの詳細 |
| 21 | +--- |
| 22 | +## 概要 |
| 23 | + |
| 24 | +Datadog Agent 6 以降は、コンテナからログを収集します。2 通りのインストレーション方法があります。 |
| 25 | + |
| 26 | +- Agent が Docker 環境の外部にあるホスト |
| 27 | +- コンテナ化された Agent の Docker 環境へのデプロイ |
| 28 | + |
| 29 | +環境コンテナからすべてのログを収集することも、コンテナイメージ名またはコンテナラベルで絞り込んで、収集するログを選別することもできます。 |
| 30 | + |
| 31 | +本ドキュメントでは、実行中のすべてのコンテナからログを収集する方法と共に、オートディスカバリーを活用しログインテグレーションを有効にする方法を紹介します。 |
| 32 | + |
| 33 | +## セットアップ |
| 34 | + |
| 35 | +### コンテナログのすべてを収集するためのシングルステップインストール |
| 36 | + |
| 37 | +まず最初に、Agent(コンテナバージョンおよび直接ホストバージョンともに) のインストレーションと、すべてのコンテナのログ収集を有効にします。 |
| 38 | + |
| 39 | +{{< tabs >}} |
| 40 | +{{% tab "Container Installation" %}} |
| 41 | + |
| 42 | +Datadog Agent を埋め込みホストを監視する [Docker コンテナ][1] を実行するには、次のコマンドを使用します。 |
| 43 | + |
| 44 | +```shell |
| 45 | +docker run -d --name datadog-agent \ |
| 46 | + -e DD_API_KEY="<DATADOG_API_キー>" \ |
| 47 | + -e DD_LOGS_ENABLED=true \ |
| 48 | + -e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true \ |
| 49 | + -e DD_AC_EXCLUDE="name:datadog-agent" \ |
| 50 | + -v /var/run/docker.sock:/var/run/docker.sock:ro \ |
| 51 | + -v /proc/:/host/proc/:ro \ |
| 52 | + -v /opt/datadog-agent/run:/opt/datadog-agent/run:rw \ |
| 53 | + -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ |
| 54 | + datadog/agent:latest |
| 55 | +``` |
| 56 | + |
| 57 | +最新版の Datadog Agent の使用が推奨されます。Docker Hub で利用できる [Agent v6 のイメージ][2]リストを参照してください。 |
| 58 | + |
| 59 | +ログ収集に関連するコマンド: |
| 60 | + |
| 61 | +| コマンド | 説明 | |
| 62 | +|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 63 | +| `-e DD_LOGS_ENABLED=true` | `true` に設定すると、ログ収集が有効になります。Agent は構成ファイルのログ命令を探します。 | |
| 64 | +| `-e DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true` | すべてのコンテナのログ収集を有効にするログコンフィギュレーションを追加します。 | |
| 65 | +| `-v /opt/datadog-agent/run:/opt/datadog-agent/run:rw` | 再起動の際やネットワークで問題が生じた際でもコンテナログを紛失しないよう、このディレクトリ内の各コンテナのために収集された最後のログ行は、ホストに保存されます。 | |
| 66 | +| `-e DD_AC_EXCLUDE="name:datadog-agent"` | Datadog Agent が自身のログやメトリクスを収集したり送信するのを防ぎます。Datadog Agent ログやメトリクスを収集したい場合は、このパラメータを削除します。 | |
| 67 | +| `-v /var/run/docker.sock:/var/run/docker.sock:ro` | ログは Docker ソケットの `stdout/stderr` コンテナから収集されます。 | |
| 68 | + |
| 69 | +[1]: https://github.com/DataDog/datadog-agent/tree/master/Dockerfiles/agent |
| 70 | +[2]: https://hub.docker.com/r/datadog/agent/tags |
| 71 | +{{% /tab %}} |
| 72 | +{{% tab "Host Installation" %}} |
| 73 | + |
| 74 | +ホストに[最新版の Agent 6][1] をインストールします。Agent は [ホスト上のファイル][2] または `stdout`/`stderr` コンテナからログを収集できます。 |
| 75 | + |
| 76 | +デフォルトの状態では、Datadog Agent でのログ収集は *無効* になっています。有効にするには、`datadog.yaml` 構成ファイルに次の行を加えます。 |
| 77 | + |
| 78 | +```yaml |
| 79 | +logs_enabled: true |
| 80 | +listeners: |
| 81 | + - name: docker |
| 82 | +config_providers: |
| 83 | + - name: docker |
| 84 | + polling: true |
| 85 | +logs_config: |
| 86 | + container_collect_all: true |
| 87 | +``` |
| 88 | +
|
| 89 | +[Agent を再起動][3] し、Datadog のコンテナログを確認します。 |
| 90 | +
|
| 91 | +[1]: /ja/agent/basic_agent_usage |
| 92 | +[2]: /ja/agent/logs/#custom-log-collection |
| 93 | +[3]: /ja/agent/guide/agent-commands/#restart-the-agent |
| 94 | +{{% /tab %}} |
| 95 | +{{< /tabs >}} |
| 96 | +
|
| 97 | +**重要**: |
| 98 | +
|
| 99 | +* Datadog Agent 6.8 以降では、`source` や `service` の初期値は `short_image` タグの値となります。 |
| 100 | +下で説明するように、ソースやサービスの値はオートディスカバリーで上書きすることができます。`source` 値をインテグレーション名に設定すると、ログをパースして関連情報を抽出するインテグレーション Pipelines がインストールされます。 |
| 101 | + |
| 102 | +* コンテナ `Stderr` からのログは `Error` の状態がデフォルトとなります。 |
| 103 | + |
| 104 | +* Docker のデフォルトである json-file ログドライバーではなく、*journald* ログドライバーを使用する場合は、コンテナ環境の設定に関するドキュメント [journald インテグレーション][1] をご覧ください。 |
| 105 | + |
| 106 | +### インテグレーションのためのログ収集を有効にする |
| 107 | + |
| 108 | +Datadog Agent 6.8 以降では、`source` や `service` の初期値は `short_image` タグの値となります。これにより、Datadog は各コンテナのログソースを特定でき、対応するインテグレーションを自動的にインストールできます。 |
| 109 | + |
| 110 | +コンテナのショートイメージ名とカスタムイメージのインテグレーション名が一致しない場合があります。アプリケーションにふさわしい名前に上書きするには、[Datadog オートディスカバリー][2] や [Kubernetes ポッドアノテーション][3] またはコンテナラベルを使います。 |
| 111 | + |
| 112 | +オートディスカバリーは、ファイルの種類に応じてラベルが以下の形式となることを前提とします。 |
| 113 | + |
| 114 | +{{< tabs >}} |
| 115 | +{{% tab "Dockerfile" %}} |
| 116 | + |
| 117 | +Dockerfile に以下の`LABEL` を追加します: |
| 118 | + |
| 119 | +```text |
| 120 | +LABEL "com.datadoghq.ad.logs"='[<ログコンフィギュレーション>]' |
| 121 | +``` |
| 122 | + |
| 123 | +{{% /tab %}} |
| 124 | +{{% tab "Docker-Compose" %}} |
| 125 | + |
| 126 | +`docker-compose.yaml` ファイルに以下のラベルを追加します: |
| 127 | + |
| 128 | +```yaml |
| 129 | +labels: |
| 130 | + com.datadoghq.ad.logs: '["<ログコンフィギュレーション>"]' |
| 131 | +``` |
| 132 | + |
| 133 | +{{% /tab %}} |
| 134 | +{{% tab "Run Command" %}} |
| 135 | + |
| 136 | +実行コマンドとして次のラベルを追加します: |
| 137 | + |
| 138 | +```text |
| 139 | +-l com.datadoghq.ad.logs='[<ログコンフィギュレーション>]' |
| 140 | +``` |
| 141 | + |
| 142 | +{{% /tab %}} |
| 143 | +{{< /tabs >}} |
| 144 | + |
| 145 | +`<LOG_CONFIG>` がログ収集コンフィギュレーションの場合、インテグレーション構成ファイルにあります。[詳細は、ログ収集コンフィギュレーションを参照してください。][4] |
| 146 | + |
| 147 | +#### 例 |
| 148 | + |
| 149 | +{{< tabs >}} |
| 150 | +{{% tab "NGINX Dockerfile" %}} |
| 151 | + |
| 152 | +次の Dockerfile は対応するコンテナにおける NGINX ログインテグレーションを有効にします (`service` の値は変更できます): |
| 153 | + |
| 154 | +```text |
| 155 | +LABEL "com.datadoghq.ad.logs"='[{"source": "nginx", "service": "webapp"}]' |
| 156 | +``` |
| 157 | + |
| 158 | +メトリクスとログ、両 NGINX インテグレーションを有効にする方法 |
| 159 | + |
| 160 | +```text |
| 161 | +LABEL "com.datadoghq.ad.check_names"='["nginx"]' |
| 162 | +LABEL "com.datadoghq.ad.init_configs"='[{}]' |
| 163 | +LABEL "com.datadoghq.ad.instances"='[{"nginx_status_url": "http://%%host%%:%%port%%/nginx_status"}]' |
| 164 | +LABEL "com.datadoghq.ad.logs"='[{"source": "nginx", "service": "webapp"}]' |
| 165 | +``` |
| 166 | + |
| 167 | +{{% /tab %}} |
| 168 | +{{% tab "Java multi-line logs" %}} |
| 169 | + |
| 170 | +スタックトレースのような複数行のログのため、Agent には複数の行を 1 行に集約する[複数行の処理規則][1]があります。 |
| 171 | + |
| 172 | +ログの一例 (Java スタックトレース): |
| 173 | + |
| 174 | +```text |
| 175 | +2018-01-03T09:24:24.983Z UTC Exception in thread "main" java.lang.NullPointerException |
| 176 | + at com.example.myproject.Book.getTitle(Book.java:16) |
| 177 | + at com.example.myproject.Author.getBookTitles(Author.java:25) |
| 178 | + at com.example.myproject.Bootstrap.main(Bootstrap.java:14) |
| 179 | +``` |
| 180 | + |
| 181 | +下にあるように、コンテナで `com.datadoghq.ad.logs` ラベルを使い、上記のログが正確に収集されているかを確かめます。 |
| 182 | + |
| 183 | +```yaml |
| 184 | +labels: |
| 185 | + com.datadoghq.ad.logs: '[{"source": "java", "service": "myapp", "log_processing_rules": [{"type": "multi_line", "name": "log_start_with_date", "pattern" : "\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])"}]}]' |
| 186 | +``` |
| 187 | + |
| 188 | +[複数行の処理規則][1]には、他にもさまざまなパターンが記載されています。 |
| 189 | + |
| 190 | +[1]: /ja/agent/logs/advanced_log_collection/#multi-line-aggregation |
| 191 | +{{% /tab %}} |
| 192 | +{{% tab "Kubernetes" %}} |
| 193 | + |
| 194 | +Kubernetes を実行している場合、ポッドアノテーションを利用できます。 |
| 195 | + |
| 196 | +```yaml |
| 197 | +apiVersion: apps/v1 |
| 198 | +kind: ReplicaSet |
| 199 | +metadata: |
| 200 | + name: nginx |
| 201 | +spec: |
| 202 | + selector: |
| 203 | + matchLabels: |
| 204 | + app: webapp |
| 205 | + template: |
| 206 | + metadata: |
| 207 | + annotations: |
| 208 | + ad.datadoghq.com/nginx.logs: '[{"source":"nginx","service":"webapp"}]' |
| 209 | + labels: |
| 210 | + app: webapp |
| 211 | + name: nginx |
| 212 | + spec: |
| 213 | + containers: |
| 214 | + - name: nginx |
| 215 | + image: nginx:latest |
| 216 | +``` |
| 217 | + |
| 218 | +オートディスカバリーに関する手順、一例、詳細に関しては、[オートディスカバリーガイド][1]を参照してください。 |
| 219 | + |
| 220 | +[1]: /ja/agent/autodiscovery/integrations/?tab=kubernetespodannotations#configuration |
| 221 | +{{% /tab %}} |
| 222 | +{{< /tabs >}} |
| 223 | + |
| 224 | +**注**: オートディスカバリー機能は、`DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL` 環境変数の有無にかかわらず使用できます。次のオプションの中から 1 つを選択してください。 |
| 225 | + |
| 226 | +* コンテナラベルまたはポッドアノテーションを使い、ログを収集するコンテナを選択します。 |
| 227 | +* 環境変数を使いすべてのコンテナからログを集め、デフォルトの `source` 値と `service` 値を上書きします。 |
| 228 | +* 必要とする一部のコンテナの処理規則を追加します。 |
| 229 | + |
| 230 | +### コンテナを絞り込む |
| 231 | + |
| 232 | +以下の方法で、ログ、メトリクス、オートディスカバリーの絞り込みができます。これにより、Datadog Agent ログの収集を防ぐことができます。 |
| 233 | + |
| 234 | +{{< tabs >}} |
| 235 | +{{% tab "Environment variable" %}} |
| 236 | + |
| 237 | +イメージまたはコンテナ名で絞り込んだコンテナ一覧を含めたり除く際に使える環境変数が 2 つあります。 |
| 238 | + |
| 239 | +* `DD_AC_INCLUDE`: 常に対象に入れるコンテナのホワイトリスト |
| 240 | +* `DD_AC_EXCLUDE`: 除外するコンテナのブラックリスト |
| 241 | + |
| 242 | +このオプションは、スペース区切り文字列形式です。たとえば、2 つのイメージのみをモニターして残りを除外したい場合、以下のようにします。 |
| 243 | + |
| 244 | +```text |
| 245 | +DD_AC_EXCLUDE = "image:.*" |
| 246 | +DD_AC_INCLUDE = "image:cp-kafka image:k8szk" |
| 247 | +``` |
| 248 | + |
| 249 | +特定のコンテナ名を除外するには、以下のようにします。 |
| 250 | + |
| 251 | +```text |
| 252 | +DD_AC_EXCLUDE = "name:datadog-agent" |
| 253 | +``` |
| 254 | + |
| 255 | +{{% /tab %}} |
| 256 | + |
| 257 | +{{% tab "Configuration File" %}} |
| 258 | + |
| 259 | +`datadog.yaml` にパラメーターが 2 つあり、イメージまたはコンテナ名で絞り込まれたコンテナ一覧を含めたり除外できます。 |
| 260 | + |
| 261 | +* `ac_exclude`: 常に含めるコンテナのホワイトリスト |
| 262 | +* `ac_include`: 除外するコンテナのブラックリスト |
| 263 | + |
| 264 | +たとえば、2 つのイメージのみをモニターして残りを除外したい場合、以下のようにします。 |
| 265 | + |
| 266 | +```text |
| 267 | +ac_exclude: ["image:.*"] |
| 268 | +ac_include: ["image:cp-kafka", "image:k8szk"] |
| 269 | +``` |
| 270 | + |
| 271 | +Datadog Agent を除外するには、以下のようにします。 |
| 272 | + |
| 273 | +```text |
| 274 | +ac_exclude = ["name:datadog-agent"] |
| 275 | +``` |
| 276 | + |
| 277 | +{{% /tab %}} |
| 278 | +{{< /tabs >}} |
| 279 | + |
| 280 | +## 存続期間が短いコンテナ |
| 281 | + |
| 282 | +Docker 環境では、Agent は Docker イベントによりコンテナのアップデートをリアルタイムに受け取ります。Agent は 1 秒ごとにコンテナラベル(オートディスカバリー)からコンフィギュレーションを抽出しアップデートします。 |
| 283 | + |
| 284 | +Agent v6.14 以降、Agent はすべてのコンテナ(実行中かは問わず)のログを収集します。つまり、直近の 1 秒間に開始し停止した存続期間の短いコンテナのログは、削除されるまで収集されます。 |
| 285 | + |
| 286 | +Kubernetes 環境には、[Kubernetes 存続期間が短いコンテナのドキュメント][5]を参照してください。 |
| 287 | + |
| 288 | +## その他の参考資料 |
| 289 | + |
| 290 | + |
| 291 | +{{< partial name="whats-next/whats-next.html" >}} |
| 292 | + |
| 293 | +[1]: /ja/integrations/journald |
| 294 | +[2]: /ja/agent/autodiscovery |
| 295 | +[3]: /ja/agent/autodiscovery/integrations/?tab=kubernetespodannotations#configuration |
| 296 | +[4]: /ja/agent/logs/#custom-log-collection |
| 297 | +[5]: /ja/agent/kubernetes/daemonset_setup/?tab=k8sfile#short-lived-containers |
0 commit comments