[Docker, Kubernetes, WLS] Processing the Oracle WebLogic Server Kubernetes Operator Logs using Elastic Stack

原文はこちら。
https://blogs.oracle.com/weblogicserver/processing-the-oracle-weblogic-server-kubernetes-operator-logs-using-elastic-stack

Oracleは、WebLogicコミュニティとともに、重要なワークロードをWebLogic Serverで実行する組織が、それらのワークロードをクラウドに移行するための、できるだけ簡単に行う方法を探しています。その取り組みの1つの側面として、Oracle WebLogic Server Kubernetes Operatorを提供しています。
Announcing the Oracle WebLogic Server Kubernetes Operator
https://blogs.oracle.com/developers/announcing-oracle-weblogic-server-kuberentes-operator
https://orablogs-jp.blogspot.jp/2018/03/announcing-oracle-weblogic-server.html
この記事では、Kubernetes環境におけるWebLogicドメインの管理を支援する重要な機能、すなわち、Elastic Stackの製品を使用してオペレータからのログを公開および分析する機能について説明します。

What Is the Elastic Stack?

Elastic Stack(ELK)は、Elasticsearch、Logstash、Kibanaなどのいくつかのオープンソース製品で構成されています。Elastic Stackをログデータとともに使用すると、アプリケーションのパフォーマンスをほぼリアルタイムで把握できます。
ElasticsearchはLuceneをベースにしたスケーラブルで分散型かつRESTfulな検索エンジンです。さまざまなデータセットに対するインデックス作成と高速検索を柔軟に制御できます。
Logstashは、複数のソースからのデータを同時に取得、変換し、選択した宛先にルーティングできるサーバーサイドのデータ処理パイプラインです。
Kibanaは、Elasticsearchのブラウザベースのプラグインで、収集したデータを視覚化して探索するために使用します。ダッシュボードでデータをナビゲート、選択、配置するための数多くの機能が含まれています。
Kubernetes環境でOperatorを使用してWebLogic Serverクラスタを実行する顧客は、Operatorとサーバを監視する必要がありますが、これはElasticsearchとKibanaを組み合わせることで実現できます。以下の手順でこれを設定する方法を説明します。

Processing Logs Using ELK

この例では、OperatorとLogstashエージェントは1つのPodにデプロイされ、ElasticsearchとKibanaはdefault名前空間に2つの独立したPodとしてデプロイされています。OperatorとLogstashコンテナ間で共有され、ログの保存に使用するメモリバックアップボリュームを使用します。Operatorインスタンスは、ログを共用ボリューム(/logs)に入れます。Logstashはボリュームからログを収集し、フィルタリングされたログをElasticsearchに転送します。最後に、KibanaとブラウザベースのUIを使用してログを分析し、視覚化します。ELKIntegration.png

Operator and ELK integration

OperatorとELKの統合を有効にするには、まずcreate-weblogic-operator-inputs.yamlファイルのelkIntegrationEnabledパラメータをtrueに設定する必要があります。
create-weblogic-operator-inputs.yaml
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/kubernetes/create-weblogic-operator-inputs.yaml
これにより、Elasticsearch、LogstashおよびKibanaがインストールされ、LogstashがOperatorのログをElasticsearchにエクスポートするように設定されます。その後、インストール手順に従って、Operatorをインストールして始動してください。
weblogic-kubernetes-operator Installation
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/installation.md
ELKとの統合がアクティブ化されていることを確認するには、以下のコマンドで生成された出力を確認します。
$ . ./create-weblogic-operator.sh -i create-operator-inputs.yaml
このコマンドで、以下のELKに関する情報が出力されるはずです。
Deploy ELK...

deployment "elasticsearch" configured

service "elasticsearch" configured

deployment "kibana" configured

service "kibana" configured 
3つのデプロイメントがすべて実行されていることを確認するには、次の手順で確認します。
1. ElasticsearchとKibanaのPodがデプロイされ、起動済みであることを確認します(defaultのKubernetes名前空間で実行されます)。
$ kubectl get pods
以下のような出力が出ていればOKです。

2. OperatorのPodがデプロイ済みで起動済みであることを確認します。なお、weblogic-operator名前空間で実行されていることに注意してください。
$ kubectl -n weblogic-operator get pods 
以下のような出力が出ていればOKです。

3. OperatorとLogstashコンテナがOperator Pod内で動作していることを確認します。
$ kubectl get pods -n weblogic-operator --output json    | jq '.items[].spec.containers[].name'
以下のような出力が出ていればOKです。

4. ElasticsearchのPodが起動済みであることを確認します。
$ kubectl exec -it elasticsearch-3938946127-4cb2s /bin/bash

$ curl   "http://localhost:9200"

$ curl  "http://localhost:9200/_cat/indices?v”
Elasticstashが無事に起動していれば、以下のような情報が得られるはずです。

Logstashがリストに現れない場合は、Logstashのログ出力を確認してみましょう。
$ kubectl logs weblogic-operator-501749275-nhjs0 -c logstash   -n weblogic-operator
Logstashログにエラーがない場合は、ElasticsearchのPodがLogstashコンテナの後に起動されている可能性があります。そのような場合は、単にLogstashを再起動して修正してください。

Using Kibana

Kibanaはログを閲覧するためのWebアプリケーションです。KibanaのKubernetesサービス構成には、NodePortが含まれているため、Kubernetesクラスタ外からKibanaにアクセスできます。ポート番号を見つけるため、以下のコマンドを実行します。
$ kubectl describe service kibana
このコマンドを実行すると、以下のようなサービスのNodePort情報が出力されるはずです。

この例では、NodePortの値は30911です。KibanaのWebアプリケーションには、http://[NODE_IP_ADDRESS]:30911でアクセスできます。

Kibanaが正しくインストールされていることを確認し、Kibanaのステータスを確認するには、http://[NODE_IP_ADDRESS]:30911/statusのWebページに接続してください。ステータスはGreenでなければなりません。

続いて、Kibanaのインデックスパターンを定義します。これを行うには、左側のパネルでDiscoverをクリックします。デフォルトのインデックスパターンはlogstash- *で、デフォルトの時間フィルタフィールド名は@timestampです。Createをクリックします。

Managementページではlogstash*インデックスのフィールドを表示しています。

続いて、オペレータログの表示方法をカスタマイズします。時間間隔と自動リフレッシュの設定を行うには、Discoverページの右上隅をクリックし、Auto-refreshタブをダブルクリックして、希望の間隔を選択します。たとえば、10秒といった具合です。

また、時間範囲を設定し、特定の時間間隔に生成されたログメッセージに絞ることもできます。

Logstashを構成し、Operatorログレコードを別々のフィールドに分割します。例えば以下のような感じです。
method:
dispatchDomainWatch

level:

INFO

log:
Watch event triggered for WebLogic Domain with UID: domain1

thread:
39

timeInMillis:
1518372147324

type:
weblogic-operator

path:
/logs/operator.log

@timestamp:
February 11th 2018, 10:02:27.324

@version:
1

host:
weblogic-operator-501749275-nhjs0

class:
oracle.kubernetes.operator.Main

_id:
AWGGCFGulCyEnuJh-Gq8

_type:
weblogic-operator

_index:
logstash-2018.02.11

_score:
表示するフィールドを制限できます。例えば、level、method、logfieldsを選択してaddをクリックすると、選択したフィールドのみ表示されます。

フィルタを使用して、式に一致するフィールドを持つログメッセージのみを表示することもできます。Discoverページの上部にあるAdd a filterをクリックしてフィルタ式を作成します。 たとえば、method、is one of、onFailureを選択すると…

KibanaにはonFailureメソッドからの全てのメッセージが表示されます。
ここまでの設定で、KibanaでOperatorログを収集できるようになりました。ブラウザベースのビューアを使用して、ログを簡単に表示、分析できます。

Summary

このエントリでは、Elastic StackとOracle WebLogic Server Kubernetes Operatorの統合アーキテクチャを紹介した後、Operatorログと対話するためにKibanaを設定および構成する方法について詳しく説明しました。Kubernetes環境でのWebLogicドメインの監視にあたり、機能、柔軟性、および豊富な機能が非常に有用な資産であることがおわかりいただけたかと思います。

0 件のコメント:

コメントを投稿