OpenShiftのEFKログ基盤

Red HatでOpenShiftのサポートをしているid:nekopです。OpenShift 全部俺 Advent Calendar 2018 - Qiitaの11日目のエントリです。有給休暇をとって舞台など見に行っていました。

OpenShiftのログ基盤にはEFKスタック (Elasticsearch, Fluentd, Kibana) が採用されています。

Aggregating Container Logs | Configuring Clusters | OpenShift Container Platform 3.11

OpenShift 3.11ではそれぞれ以下のバージョンです。ESとKibanaのバージョンがより新しいものへと変更されました。しかし、残念ながら統合、テスト、安定化などの期間があったためまだ最新の6.xではなく5.xとなっています。

  • Elasticsearch 5.6.13
  • Kibana 5.6.13
  • Fluentd 0.12.43

OpenShift 3.10では以下のバージョンでした。だいぶ古いですね。

  • Elasticsearch 2.4.4
  • Kibana 4.6.4
  • Fluentd 0.12.43

Kibanaをブラウザで開くと、OpenShiftのシステムログおよびコンテナログを検索、参照できるようになっています。.allという全てのログを示すindex, .operations.*というシステムログのindex、.project.NAMEという各プロジェクトのindexがあります。

f:id:nekop:20181217175320p:plain

ElasticsearchとKibanaはOpenShiftの認証連携が行われており、ESのSearchGuardもあわせてセットアップされているため、一般ユーザはユーザの参照できるプロジェクト以外のプロジェクトのログは参照できないようになっています。管理者は全てのログが参照できます。

ElasticsearchとKibanaはDeploymentConfigで、FluentdはDaemonSetでデプロイされています。Elasticsearchは本来StatefulSetであるべきところですが、まだStatefulSet構成に移行できておらず、StatefulSet風味の複数のDeploymentConfig各1 podのマニュアル構成となっています。Fluentdは全てのノードからログをElasticsearchに送信し、KibanaはElasticserachに保存されているログをブラウザから参照可能にします。

Elasticsearchの古いログを消去するcuratorというcronjobがあり、デフォルトで30日を経過したログを消去するようになっています。curatorは3.11以前は別のDeploymentConfigで、その中で定期処理を行っていました。

Elasticsearchはデフォルトでrequest.memory==16Giというとても大きなリソースを指定してセットアップされるので、適宜変更しましょう。小規模なら1Giでも起動します。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。