4

最近 kubernetes の使用を開始し、集中ログを構成する方法を検討しています。ほとんどのポッドでは、アプリケーション自体が直接 GELF エンドポイント (logstash) にログを記録しますが、ログを取得する必要がある「管理」ポッドもいくつかあります。

以前、Docker Swarm を使用していたときは、ログ ドライバー (および関連する構成) を構成ファイルに追加するだけでした。ただし、Kubernetes にはそのオプションがないようです。

Fluentd を使用して /var/log/containers から直接ログを読み取ることを検討しましたが、ここでいくつかの問題に遭遇しました。

  1. どの Pod を logstash に記録するかを指定する簡単な方法はないようです。フィルターなどを作成できると思いますが、これは今後はあまり保守できないようです。個々のポッドで注釈を使用する方が賢明なようです。

  2. /var/log/containers のログは、GELF ではなく、json ファイルのログ形式です。

kubernetes で組み込みの Docker ログ ドライバーをポッドごとに使用して、GELF エンドポイントに簡単にログを記録する方法はありますか?

4

1 に答える 1

1

Kubernetes メタデータ プラグインでfluentdを使用して、ローカルの json ファイル docker ログを抽出し、Graylog2 に送信してみてください。

tag_to_kubernetes_name_regexp- 現在の fluentd タグから Kubernetes メタデータ (ポッド名、コンテナー名、名前空間) を抽出するために使用される正規表現。

于 2018-07-24T14:35:13.943 に答える