Docker は、アプリケーションとその依存関係をコンテナにパッケージ化して、単一のポータブル アプリケーション ユニットとして実行する、一般的なコンテナ化テクノロジです。このテクノロジーにより、開発者はさまざまな環境でアプリケーションを簡単に展開および管理できます。実際のアプリケーションでは、Docker コンテナのログ分析と例外監視が非常に必要です。この記事では、次の側面を含む、コンテナー ログ分析と例外監視に Docker を使用する方法を紹介します。
まず知っておく必要がありますDockerコンテナのログについて。
1. Docker コンテナ ログ
Docker コンテナ ログには、アプリケーションの出力情報、エラー情報、アクセス ログ、システム ログなど、コンテナ内の操作情報が記録されます。この情報はアプリケーションの運用と保守、追跡、例外処理などにとって非常に重要であるため、Docker コンテナのログを収集して分析する必要があります。
2. Docker log コマンドを使用してログを表示します
Docker は、コンテナーによって出力されたログ情報を表示するために使用できる log コマンドを提供します。 log コマンドを使用すると、実行中のコンテナーのリアルタイム出力情報を簡単に表示し、この情報をコンソールに出力したり、ファイルに保存したりできます。以下は、log コマンドを使用してコンテナーのログを表示する例です。
// 查看容器ID为xxx的日志 docker logs xxx // 查看容器ID为xxx的日志,输出到控制台并实时更新 docker logs -f xxx // 查看容器ID为xxx的最近10条日志 docker logs --tail 10 xxx
log コマンドを使用すると、開発者はコンテナーのリアルタイムの出力情報を簡単に表示し、問題を迅速に特定できますが、この方法はホスト上のコンテナの場合、コンテナのサイズが大きくなると手動でログを参照することが困難になるため、ログ収集ツールを利用して自動的にログを収集・分析する必要があります。
3. ログの収集と分析に Logstash を使用する
Logstash は、ログの収集、フィルタリング、変換、送信のためのオープン ソース ツールです。データは入力プラグインを通じて収集され、次によって処理および変換されます。データをフィルターし、出力プラグインは処理されたデータを Elasticsearch、Kafka、Amazon S3 などの宛先に送信します。 Dockerコンテナのログ収集では、ログを収集・分析するツールとしてLogstashを利用できます。 Logstash を使用してログの収集と分析を行う例を以下に示します:
1. Logstash のインストール
公式 Web サイトから Logstash をダウンロードし、解凍して使用します。 Logstash を起動するコマンドは次のとおりです:
cd logstash-7.15.1/bin ./logstash -f logstash.conf
2. Logstash の設定
Logstash をコンテナのログ収集ツールとして使用するには、入力プラグインと出力プラグを設定する必要があります。 Logstash の -in。以下は、構成ファイル logstash.conf の例です。
input { docker { endpoint => "unix:///var/run/docker.sock" container_id => "ALL" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => "localhost:9200" } stdout { codec => "json_lines" } }
上記の構成ファイルは、すべての Docker コンテナーからログ情報を収集し、grok フィルターを通じてデータをフィルターおよび解析し、最後に出力する必要があることを意味します。処理されたデータを Elasticsearch に取り込みます。
4. データのインデックス作成とストレージに Elasticsearch を使用する
Elasticsearch は、さまざまな種類のドキュメントの検索に使用できる分散型オープンソース検索エンジンです。 Dockerコンテナのログ収集では、データのインデックスとストレージとしてElasticsearchを使用します。以下は、データのインデックス作成とストレージに Elasticsearch を使用する例です:
1. Elasticsearch をインストールします
公式 Web サイトから Elasticsearch をダウンロードし、ファイルを解凍して使用します。 Elasticsearch を開始するコマンドは次のとおりです:
cd elasticsearch-7.15.1/bin ./elasticsearch
2. Elasticsearch の構成
elasticsearch.yml ファイルを変更して、ES クラスターの名前とノード名を構成します。以下は、単純な elasticsearch.yml 設定ファイルの例です:
cluster.name: docker-cluster node.name: es-node1 network.host: 0.0.0.0
上記の設定は、docker-cluster という名前のクラスターを作成することを意味します。ノード名は es-node1 で、ES サービスはすべてのノードにバインドされます。ネットワークインターフェース上で利用可能です。
3. インデックスの作成
Elasticsearch では、まずデータのインデックスを作成し、データ内のフィールドを指定する必要があります。サンプル コードは次のとおりです。
PUT /logstash-test { "mappings": { "properties": { "host": { "type": "keyword" }, "message": { "type": "text" }, "path": { "type": "text" }, "verb": { "type": "keyword" } } } }
上記のコードは、Elasticsearch に「logstash-test」という名前のインデックスを作成し、インデックスに含まれるフィールドとフィールド タイプを定義します。
5.データ視覚化表示に Kibana を使用する
Kibana は、Elasticsearch から取得したデータを表示するために使用できるオープンソースのデータ視覚化ツールです。 Dockerコンテナのログ収集処理では、データの可視化表示にKibanaを使用します。以下は Kibana を使用したデータ可視化表示の例です:
1. Kibana のインストール
公式 Web サイトから Kibana をダウンロードし、解凍して使用します。 Kibana を起動するコマンドは次のとおりです:
cd kibana-7.15.1/bin ./kibana
2. インデックス テンプレートの設定
Kibana では、インデックス テンプレートを設定する必要があります。インデックス テンプレートには、データ フィールド定義とクエリ分析情報が含まれています。サンプル コードは次のとおりです。
PUT _index_template/logstash-template { "index_patterns": ["logstash-*"], "template": { "mappings": { "properties": { "@timestamp": { "type": "date" }, "@version": { "type": "keyword" }, "message": { "type": "text" }, "path": { "type": "text" } } } } }
上記のコードは、「logstash-template」という名前のインデックス テンプレートが作成され、名前が「logstash-*」で始まるインデックスに適用されることを意味します。
3. データの視覚化
在Kibana的外掛程式面板中,可以選擇設定和管理視覺化範本。我們可以輕鬆地透過面板創建各種類型的視覺化圖表,如Line圖、Bar圖和Pie圖等等。
綜上所述,本文介紹如何使用Docker進行容器的日誌分析和異常監測,並給出了具體的程式碼範例。 Docker本身提供了log指令來查看容器的日誌,但手動查看日誌在容器規模擴大後變得更加困難。透過使用Logstash、Elasticsearch和Kibana這些工具,我們可以對容器的日誌進行自動化的收集和分析,並展示出容器的運作狀況,這對於應用程式的運維和故障處理都非常有幫助。
以上がDocker を使用してコンテナーのログ分析と例外監視を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。