Docker には多くのログ プラグインがあります。デフォルトでは json-file を使用します。json-file が使用されている場合にのみ、sudo docker logs -f を表示できます。docker log プラグインを表示するには、次のコマンドを入力します。 $ sudo docker info | grep ログ ここで説明すると、コンテナが実行中の場合、Docker はホスト マシン上にコンテナに関連するファイルを作成し、コンテナによって生成されたログをこのファイルに転送します。 docker logs -f コマンドはファイルの内容を検索し、ターミナルに表示します。 docker logs -f は、サービスがどのノードにデプロイされているかに関係なく、対応するすべてのサービス ログをターミナルに出力することは周知の事実です。そこで質問ですが、各ノードに対応するコンテナー ファイルには、サービスの完全なログ バックアップが保存されるのでしょうか、それともノード サービスに対応するコンテナーによって生成されたログのみが保存されるのでしょうか。 この問題は、各ノードが Filebeat を使用してホスト マシンのコンテナ ログ ファイルをリッスンする場合に、各ノードのコンテナ ログが完全なバックアップである場合、ログが重複してしまうことに関係しています。ノード上のコンテナのログのみが保存されている場合、重複は発生しません。 答えは、ノード上のコンテナのログのみを保持することです。docker logs -f コマンドは、オーバーレイ ネットワーク モデル上でプロトコルのレイヤーを実行し、他のノード上の同じコンテナ ログを集約します。 デフォルトでは、docker の json ファイルが使用されます。まず、デーモンを設定します。 $ sudo dockerd \ --log-driver=jsonファイル \ --log-opt ラベル=サービス名 コンテナを起動するには、次のパラメータを追加する必要があります。 $ sudo docker サービス更新 --label サービス名=test または、docker-compose.yml で直接マークします。 バージョン: "3" サービス: ゴージンデモ: 画像: chenghuizhang/go-gin-demo:v3 ポート: -8081:8081 ネットワーク: - かぶせる 展開する: モード: 複製 レプリカ: 3 ラベル: サービス名: go-gin-demoxxxxxxx ログ記録: オプション: ラベル: "サービス名" ネットワーク: かぶせる: 各ノードに filebeat をインストールし、filebeat.yml を次のように構成します。 ファイルビートプロスペクター: - タイプ: ログ パス: # コンテナログディレクトリ - /var/lib/docker/containers/*/*.log # docker が使用するログドライバーは json-file なので、収集されるログの形式は json 形式です。これを true に設定すると、filebeat はログに対して json_decode 処理を実行します json.keys_under_root: true tail_files: 真 出力.logstash: ホスト: ["172.17.10.114:5044"] logstash.conf でインデックスを設定します。 出力{ エラスティックサーチ アクション => "インデックス" ホスト => ["172.17.10.114:9200"] # ログラベルを取得する インデックス => "%{attrs.servicename}-%{+YYYY.MM.dd}" } } Dockerfile ファイルは、プロジェクトによって出力されたログを stdout と stderr に出力する必要があります。そうしないと、json-file ログ ドライバーはコンテナー内のログ出力を収集しません。sudo docker logs -f は、ターミナルにコンテナー ログを表示しません。次のコマンドを Dockerfile に追加する必要があります。 実行 ln -sf /dev/stdout /xx/xx.log \ # 情報 && ln -sf /dev/stderr /xx/xx.log # エラー または、プロジェクトの log4j 構成出力コンソールで: <アペンダー> <コンソール名="コンソール" ターゲット="SYSTEM_OUT"> <PatternLayout パターン="[%d{DEFAULT}]%m"/> </コンソール> </アペンダー> ログにコンテナ ID 名とイメージ名を記録する必要がある場合は、コンテナの実行時に次のパラメータを追加できます。 --log-opt タグ="//" 最後に、json-file ログ プラグインは、コンテナーがローカルの { "log":"[GIN-debug] [警告] 現在、Gin には Go 1.6 以降が必要であり、まもなく Go 1.7 が必要になります。", "ストリーム":"標準エラー出力", 「属性」:{ "タグ":"chenghuizhang/go-gin-demo:v3@sha256:e6c0419d64e5eda510056a38cfb803750e4ac2f0f4862d153f7c4501f576798b/mygo.2.jhqptjugfti2t4emf55sehamo/647eaa4b3913", "サービス名":"テスト" }, 「時間」:「2019-01-29T10:08:59.780161908Z」 } logstash でログをフォーマットします。 フィルター { 理解する { patterns_dir => "/etc/logstash/conf.d/patterns" 一致 => {"メッセージ" => "%{TIMESTAMP_ISO8601:time}%{SERVICENAME:attr.servicename}%{DOCKER_TAG:attr.tag}"} } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Expressを使用してプロジェクトを自動的にビルドするNode.jsのプロセス全体
>>: ホストがアクセスできるようにMySQLの権限を変更する方法
ページを更新せずにフォーム送信を実装するために Ajax を使用することは、プロジェクトでよく使用さ...
Baidu によって定義されているデッドリンク形式には 2 種類あります。 1: XML形式のデッド...
まず: <abbr> または <acronym>これら 2 つの記号は同じ意...
コンテナのIPアドレスを表示するdocker examine <コンテナ名またはID> ...
半年もブログを書いていなかったので、少し恥ずかしいです... 正月休みは、Dota をプレイしたり ...
インストールパス: /application/mysql-5.5.56 1. 事前準備MySQL 依...
MySQL5.7.21のインストールとパスワード設定のチュートリアルは次のとおりです。公式リファレン...
覚えて: IDE ディスク: 最初のディスクは hda、2 番目のディスクは hdb...最初のディ...
Zabbix サーバー環境プラットフォームバージョン: ZABBIX バージョン 4.4システム:...
MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...
HTML と XHTML の違い1. XHTML要素は正しくネストされている必要がある2. XHT...
目次JDKをダウンロードしてインストールするTomcat 圧縮パッケージをダウンロードTomcatの...
目次1. 現実的な背景2. 合意3. マスターを構成する3.1. 起動パラメータの設定3.2. パラ...
目次1. 問題の説明2. 問題分析3. 解決策解決策1: ディレクトリを作成する解決策2: 構成ファ...
要件:PC側とモバイル側は2つの独立したプロジェクトです。2つのプロジェクトの内容は基本的に同じで、...