【IBM Cloud k8s検証メモ】Kibanaによるアプリのログ分析


k8sクラスタに展開されるコンテナのアプリを運用するには、個々のアプリのログを一箇所に集めて、横断的にログを監視したり、分析できる機能が必要です。 Bluemix k8sでは、コンテナ上のアプリが、stdout や stderr へ出力したメッセージを Elasticsearch へ転送して蓄積する機能、および Kibana で検索する機能が提供されています。(1) 今回は、ログの横断的な蓄積、ログ分析、ログに含まれるキーワード監視について検証します。

このアプリケーション・ログ収集のための機能は、k8sクラスタを起動すると、自動的に Elasticsearch へログの転送と蓄積を開始し、デフォルトの無料プランでは、1日あたり500MB、3日間を検索することができます。 ログの容量や期間を超えた場合は、古いものから参照できなくなります。(ロールオーバー)

Log Analysis サービス

Elasticsearch に蓄積されたログを Kibana で参照したり、視覚化するためには、Bluemix カタログから Log Analysis サービスを作成する必要があります。

Bluemix カタログから、次のアイコンを探してクリックします。

ウェブ画面の案内に従って、プランを選択して、作成を確定することで、Kibanaの画面へアクセスできる様になります。

考慮点として、Bluemix k8sクラスタ は、地域でアカウント横断的に、ダッシュボードに表示されますが、この Log Analysis サービスは、Bluemix の Cloud Foundry のサービスとして提供されるため 組織とスペースの下に置かれます。 このため、IBM Cloud Log Analysis 概説チュートリアル (2) には、https://logging.ng.bluemix.net/ などの Kibana のウェブページに直接アクセスする様に記載されていますが、このケースでは、組織とスペースでフィルターされているため、変更しなければ参照できないケースがあります。 既に、Bluemix Cloud Foundry アプリとして、ログ分析サービスを利用していれば、注意が必要です。

k8sクラスタとアプリのデプロイ

何かk8sクラスタ環境にデプロイされたアプリケーションが必要なので、Bluemix-k8s検証メモ】アプリをHTTPSとドメイン名でアクセスするを利用しました。 このアプリでは、curl などでアクセスすると、コンテナの標準出力へ、次の様なメッセージを出しています。 そこで、それぞれのPOD(コンテナ)で標準出力されているメッセージの数をカウントすることで、それぞれのPODへの振り分け状況をKibanaで視覚化して見たいと思います。

$ kubectl logs -f express-app-943621608-202zb
GET / 200 1.218 ms - 262
GET / 200 16.771 ms - 262
GET / 200 3.331 ms - 262
GET / 200 1.588 ms - 262
GET / 200 1.568 ms - 262
GET / 200 3.360 ms - 262
GET / 200 1.438 ms - 262
GET / 200 1.943 ms - 262
GET / 200 1.470 ms - 262

アプリのログ分析

Kibanaの設定は、ダッシュボードを使用した Kibana でのログの分析が参考になります。 文字ばかりで、少し分かり難いと感じれば、Qiita Kibanaで簡単! サクサク ビジュアライズしよう! がオススメです。

Kibana 初心者の僕でも、次の様なダッシュボード画面を作ることができました。

オレンジの折れ線グラフ、緑の棒グラフが、k8sクラスタ上のトータルの HTTPS GET を受けた数、それ以外のグラフが、PODそれぞれのアクセス数です。

参考資料

(1) IBM Bluemix Container Service のロギング https://console.bluemix.net/docs/services/CloudLogAnalysis/containers/logging_containers_ov.html#logging_containers_ov
(2) IBM Cloud Log Analysis 概説チュートリアル https://console.bluemix.net/docs/services/CloudLogAnalysis/index.html#getting-started-with-cla
(3) Kibana でのログのフィルタリング https://console.bluemix.net/docs/services/CloudLogAnalysis/kibana/filter_logs.html#filter_logs