IBM Cloud Private は、管理ロギング・サービスといわれる ELK スタックをデプロイして、すべての Docker キャプチャー・ログを収集して保管します。 IBM Cloud Private をインストールする前に、エンドツーエンドの TLS 暗号化など、スタックをカスタマイズする多くのオプションがあります。 カタログから追加の ELK スタックをデプロイしてカスタマイズすることも、他のサード・パーティー・ソリューションをデプロイすることもできます。これにより、最大限の柔軟性をもってログを管理できます。
管理ロギング・サービスは、ニーズに合わせてスタックを構成するための以下のような幅広いオプションを提供します。
ELK は、Elasticsearch、Logstash、および Kibana という 3 つの製品の略語です。これらの製品はすべて、Elastic によって開発されています。 これらは共に、ログなどのデータのストリーミング、保管、検索、およびモニターを行う多数のツールで構成されています。
Elasticsearch にログをストリーミングするために、Filebeat という 4 つ目の Elastic コンポーネントがデプロイされます。
クラスター内のすべてのノードで、JSON ファイル・ドライバーを使用するように Docker を構成する必要があります。 Docker は、各コンテナーからの stdout および stderr のパイプを Docker ホスト上のファイルにストリーミングします。 例えば、プラットフォームでコンテナーの
Docker ID が abcd の場合、コンテナーからの出力を保管するデフォルトの場所は、/var/lib/docker/containers/abcd/abcd-json.log になります。 IBM Cloud Private ロギング・チャートは、JSON ログ・ファイルを ELK スタックにストリーミングするために、Filebeat デーモン・セットをすべてのノードにデプロイします。
Kubernetes は、各コンテナー・ログに独自の抽象化レイヤーを追加します。 デフォルトのパス /var/log/containers の下に、各 Docker ログ・ファイルを指すシンボリック・リンクが作成されます。 シンボリック・リンク・ファイル名には、以下のように、4 つのフィールドを抽出するために解析できる追加の Kubernetes メタデータが含まれます。
| 1 | 2 | 3 | 4 |
/var/log/containers/pod-abcd_default_container-5bc7148c976a27cd9ccf17693ca8bf760f7c454b863767a7e47589f7d546dc72.log
kubernetes.pod として保管)kubernetes.namespace として保管)kubernetes.container_name として保管)kubernetes.container_id として保管)Logstash は 2 つの役割を果たします。 1 つ目として、Filebeat と Elasticsearch 間のデータをバッファーに入れます。 このバッファリングにより、データ損失から保護され、Elasticsearch へのトラフィック量が削減されます。 2 つ目の役割として、ログ・レコードをさらに解析してメタデータを抽出し、レコード内のデータの検索可能性を高めます。 以下のデフォルトのステップは、ibm-icplogging Logstash ポッドによって実行されます。
その後、レコードは短時間保管されてから、Logstash によって Elasticsearch に送信されます。
ログ・レコードは、Elasticsearch に送信されると、文書 になります。 各文書は、インデックス と呼ばれる指定グループ内に保管されます。 Logstash がレコードを Elasticsearch に送信すると、logstash-<YYYY>-<MM>-<dd> というパターンのインデックスにそのレコードが割り当てられます。送信日に基づいて名付けられたインデックスに各レコードを割り当てることで、ログ保存ポリシーを追跡するのが容易になります。
Elasticsearch 自体は、3 つの異なるポッド・タイプで独立して実行されます。 他にも多くの構成が可能です。 これは、ibm-icplogging Helm チャートで選択されている構成です。
Kibana は、照会および視覚化を提供する、ブラウザーで使いやすい Elasticsearch へのインターフェースです。 オプションでデプロイメントから除外できますが、お勧めできません。これは、Kibana が、ログを検索できるデフォルト・ツールであるためです。
Kibana では、始動後にインデックスを構成する必要が生じることがあります。 詳しくは、Elastic の資料内の Creating an Index Pattern to Connect to Elasticsearch を参照してください。
Kibana は、ログとのインターフェースとなる主要ツールです。 「Discovery」ビューが用意されています。このビューを使用して、特定の基準を満たしているログを照会できます。 このビューから ibm-icplogging ELK スタックによって自動的に追加された 1 つ以上のフィールドを使用して、ログを照合できます。
ELK スタックでは検出できない他の基準に基づいてログを照会する必要が生じることがあります。 例えば、ミドルウェア製品、アプリケーション名、ログ・レベルなどです。 アプリケーション・ログの正確度を最大化するには、JSON フォーマットの出力を検討してください。 JSON では、Elasticsearch が正確に解析するのを期待するのではなく、ログ・ファイル内で値の名前を宣言します。 ibm-icplogging Helm チャートでデプロイされる Filebeat
デーモン・セットは、JSON フォーマットのログ項目を解析し、Elasticsearch でトップレベル・エレメントとして検索できるよう値を設定するように事前構成されています。
注: IBM® Z プラットフォームで検出される Logstash の例外
Logstash で、以下のメッセージのような例外が表示されます。例外は、Filebeat から Kibana UI へのログの取り込みには影響しません。
[2019-07-07T12:11:35,834][INFO ][org.logstash.beats.BeatsHandler] [local: 10.1.79.146:5044, remote: 10.1.79.173:48148] Handling exception: error:1e00007d:Cipher functions:OPENSSL_internal:INVALID_NONCE
[2019-07-07T12:11:35,834][WARN ][io.netty.channel.DefaultChannelPipeline] An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
javax.net.ssl.SSLException: error:1e00007d:Cipher functions:OPENSSL_internal:INVALID_NONCE
at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.shutdownWithError(ReferenceCountedOpenSslEngine.java:895) ~[netty-all-4.1.30.Final.jar:4.1.30.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.shutdownWithError(ReferenceCountedOpenSslEngine.java:882) ~[netty-all-4.1.30.Final.jar:4.1.30.Final]
at io.netty.handler.ssl.ReferenceCountedOpenSslEngine.wrap(ReferenceCountedOpenSslEngine.java:824) ~[netty-all-4.1.30.Final.jar:4.1.30.Final]
Elasticsearch には、高度な柔軟性があり、詳細にドキュメント化された API があります。 前のセクションで述べられているように、ELK スタックのセキュア・インストールは、TLS での相互認証を使用した内部コンポーネントへの API アクセスを制限します。 したがって、Elasticsearch データへの外部アクセスは、Kibana を介して認証されたユーザーのみが行うことができます。 Kibana ユーザー・インターフェースの dev tools パネルを使用して、Elasticsearch
API にアクセスすることもできます。 追加の ELK スタックが標準モードでデプロイされた場合、Kibana アクセスは IBM Cloud Private 認証または許可の制御によって保護されません。
注: これらの API は、Elasticsearch データ・ストアで現在トラッキングされているデータについて照会または操作するためにのみ動作します。 バックアップには影響を与えません。