11 ELKを使用したOracle NoSQL Databaseの監視

ELKは、Elasticsearch、LogstashおよびKibanaの3つのオープン・ソース・プロジェクトの略語です。

Elasticsearchは検索と分析のエンジンです。Logstashはサーバー側のデータ処理パイプラインとして、複数のソースからデータを同時に収集して変換し、Elasticsearchと同様、stashに送信します。Kibanaでは、ユーザーがElasticsearchでデータをチャートやグラフで可視化できます。ELKスタックは、Oracle NoSQL Databaseの監視に使用できます。

ノート:

ストレージ・ノード・エージェント(SNA)が検出および監視されるためには、JMX用に構成する必要があります。デフォルトではJMXは無効となっています。show parametersコマンドを発行し、mgmtClassパラメータのレポート値をチェックすることで、デプロイ済のSNAでJMXが有効かどうかがわかります。この値がoracle.kv.impl.mgmt.jmx.JmxAgentでない場合、planコマンドのchange-parametersを発行してJMXを有効にする必要があります。

たとえば:

plan change-parameters -service sn1 -wait \
-params mgmtClass=oracle.kv.impl.mgmt.jmx.JmxAgent

詳細は、標準化されたインタフェース監視を参照してください。

Oracle NoSQLメトリックとログ情報を、既存のELK構成と統合できます。ELKコンポーネントを専用サーバーにインストールすることをお薦めします。Oracle NoSQLノードは使用しないでください。詳細は、エラスティック・スタックと製品のドキュメントを参照してください。既存のELK設定がない場合は、提供されている手順に従ってください。ただし、詳細は常にエラスティック・ドキュメントを参照してください。安全なELKデプロイメントを使用する場合は、提供された構成ファイルを、設定要件およびセキュリティ要件に従って編集する必要があります。

FilebeatとMetricbeatは、特にNoSQLサービスからメトリックを収集することにより、サーバーとサーバーがホストするサービスを監視するのに役立ちます。Filebeatは、分析および監視のために各ストレージ・ノード(SN)の「Collector Service」によって生成されたファイルをELKに送信するコンポーネントです。Filebeatコンポーネントは、クラスタのすべてのNoSQLノードにデプロイする必要があります。

次の方法を学習します。
  • 監視する各NoSQLクラスタでのFilebeatのインストールと構成
  • 収集するメトリックの指定
  • Logstash、次にElasticsearchへのメトリックの送信
  • Kibanaのメトリック・データのビジュアル化
  • 安全なELKデプロイメントを使用する場合の構成ファイルの変更

コレクタ・サービスの有効化

Oracle NoSQL Databaseのコレクタ・サービスを有効にするには、次のステップを実行します。

  1. ストア全体でcollectorEnabledパラメータをtrueに設定します。

    plan change-parameter -global -wait -params collectorEnabled=true
  2. collectorIntervalに適切な値を設定します。間隔の値を低くすると、より詳細な情報が収集され、より多くの記憶域が必要になります。間隔の値を高くすると、比較的少ない詳細が収集され、必要な記憶域が少なくなります。

    plan change-parameter -global -wait -params collectorInterval="30 s"
  3. collectorStoragePerComponentに適切な記憶域サイズを指定します。各コンポーネント(各SNおよびRN)によって収集されたデータは、バッファに格納されます。このバッファ・サイズは、このパラメータを設定することによって変更できます。

    plan change-parameter -global -wait -params collectorStoragePerComponent="50 MB"

Elasticsearchの設定

Elasticsearchを設定するには、次のステップを実行します。

  1. Elasticsearch 7.15をダウンロードし、解凍します。

  2. 構成に従って$ELASTICSEARCH/config/elasticsearch.ymlファイルを変更します。

    たとえば: path.dataおよびpath.logsの値を設定して、データおよびログを指定した場所に格納します。

  3. Elasticsearchを起動します。

    $ cd $ELASTICSEARCH
    $ sudo sysctl -q -w vm.max_map_count=262144;
    $ nohup bin/elasticsearch &

詳細は、Elasticsearch Referenceガイドを参照してください。

Kibanaの設定

Kibanaを設定するには、次のステップを実行します。

  1. Kibana 7.15をダウンロードし、解凍します。

  2. 構成に従って$KIBANA/config/kibana.ymlファイルを変更します。

    たとえば: ElasticsearchがKibanaと同じマシンにデプロイされていない場合は、行elasticsearch.url:”<your_es_hostname>:9200”を追加します。これにより、Kibanaが127.0.0.1:9200ではなく、指定されたElasticsearchアドレスに接続するように設定されます。

  3. Kibanaを起動します。

    $ cd $KIBANA
    $ nohup bin/kibana &

詳細は、Kibana Referenceガイドを参照してください。

Logstashの設定

Logstashを設定するには、次のステップを実行します。

  1. Logstash 7.15をダウンロードし、解凍します。

  2. Logstashの解凍先と同じディレクトリにlogstash.configファイルを配置します。構成に従ってlogstash.configファイルを変更します。

    たとえば: ElasticsearchがLogstashと同じマシンにデプロイされていない場合は、Elasticsearchホストをlocalhost:9200から<your_es_hostname>:9200に変更します。

  3. Logstashの解凍先と同じディレクトリにテンプレート(kvevents.template、kvpingstats.template、kvrnenvstats.template、kvrnjvmstats.template、kvrnopstats.template)を配置します。構成に従ってテンプレートを変更します。

  4. $LOGSTASHディレクトリに切り替えます。ディレクトリに、Logstash設定ファイル、構成ファイルおよびすべてのテンプレートが含まれていることを確認します。次に、Logstashを起動します。

    $ cd $LOGSTASH
    $ logstash-5.6.4/bin/logstash -f logstash.config &

詳細は、Logstash Referenceガイドを参照してください。

各ストレージ・ノードでのFilebeatの設定

各ストレージ・ノードにFilebeatを設定するには、次のステップを実行します。

  1. Filebeat 7.15をダウンロードし、解凍します。

  2. 既存のfilebeat.ymlfilebeat.ymlに置き換えます。ファイルを編集して、出現するすべての/path/of/kvrootをこのSNの実際のKVROOTパスに置き換えます。また、LOGSTASH_HOSTをLogstashの実際のIPに置き換えます。

  3. Filebeatを起動します。

    $ cd $FILEBEAT
    $ ./filebeat &
  4. クラスタのすべてのストレージ・ノードで、前述のステップを繰り返します。

詳細は、Filebeat Referenceガイドを参照してください。

エラスティック・スタックのセキュリティの構成

セキュリティのニーズは、テスト環境を開発しているか、本番環境ですべての通信を保護しているかによって異なります。次のシナリオでは、エラスティック・スタックを構成するための様々なオプションを提供します。

最小限のセキュリティ(Elasticsearch Development)

これを使用して、テスト環境でElasticsearchを設定できます。この構成により、組込みユーザーのパスワードを設定することでクラスタへの不正アクセスが防止されます。Kibanaのパスワード認証も構成します。この最小のセキュリティ・シナリオは、本番モード・クラスタでは十分ではありません。クラスタに複数のノードがある場合は、最小限のセキュリティを有効にしてから、ノード間でTransport Layer Security (TLS)を構成する必要があります。

基本セキュリティ(Elasticsearch Production)

このシナリオは、ノード間の通信にTransport Layer Security (TLS)を追加することで、最小限のセキュリティ要件に基づいて構築されます。この追加レイヤーは、ノードによるセキュリティ証明書の検証を要求し、権限のないノードがElasticsearchクラスタに参加するのを防ぎます。

基本的なセキュリティと保護されたHTTPSトラフィック(Elastic Stack)

このシナリオは、基本的なセキュリティ用に構築され、すべてのHTTPトラフィックをTLSで保護します。Elasticsearchクラスタのトランスポート・インタフェースでのTLSの構成に加えて、ElasticsearchおよびKibanaの両方のHTTPインタフェースでTLSを構成します。HTTPレイヤーで相互(双方向) TLSが必要な場合は、相互認証された暗号化を構成する必要があります。次に、KibanaとBeatsがTLSを使用してElasticsearchと通信するように設定し、すべての通信が暗号化されるようにします。このレベルのセキュリティは強力で、クラスタ内外のあらゆる通信の安全性を確保します。詳細は、スタック・セキュリティの構成を参照してください。

この場合、構成に従ってlogstash.configを変更する必要があります。接続を実行するには、ユーザー/パスワードとTLS証明書を指定する必要があります。たとえば:
 elasticsearch {
            manage_template => true
            template => "kvrnjvmstats.template"
            template_name => "kvrnjvmstats"
            template_overwrite => true
            index => "kvrnjvmstats-%{+YYYY.MM.dd}"
            hosts => "elk-node1:9200"
            user => "logstash_internal"
            password => "thepwd"
            cacert => '/etc/logstash/config/certs/ca.crt'
}

Kibanaを使用したOracle NoSQL Databaseの分析

Kibanaを使用してNoSQLメトリックをビジュアル化および監視する方法を学習します。Kibanaでは、探索するElasticsearchデータにアクセスするための索引パターンが必要です。索引パターンでは、使用するデータが選択され、フィールドのプロパティを定義できます。

インポート操作とエクスポート操作を使用して、様々なKibanaインスタンス間でオブジェクトを移動できます。この操作は、開発と本番用の複数の環境がある場合に役立ちます。インポートとエクスポートは、更新するオブジェクトが多数あり、それらのオブジェクトをバッチ処理する場合も適切に機能します。「Saved Objects」UIは、保存したオブジェクトを追跡および管理するのに役立ちます。これらのオブジェクトには、ダッシュボード、ビジュアライゼーション、マップ、索引パターン、Canvasワークパッドなど、後で使用するためのデータが格納されます。

ダッシュボード、ビジュアライゼーション、索引パターンの作成タスクを改善するために、Kibana構成にインポートできるこのjsonファイルを使用できます。これは、このjsonファイルをインポートして、提供されているダッシュボード、ビジュアライゼーション、索引パターンにアクセスできるようにするために非常に便利です。
kibanaimport.gifの説明が続きます
図kibanaimport.gifの説明

保存オブジェクトは、タグを使用して4つのタイプに分類されます。
  1. NoSQLVisualization
  2. NoSQLExample
  3. NoSQLDebug
  4. NoSQLQuickValidation


索引パターンの作成

コマンド・インポートを使用して、索引パターンを自動的に構成します。
  1. kvrnjvmstats-*
  2. kvrnenvstats-*
  3. kvpingstats-*
  4. kvrnopstats-*
  5. kvevents-*

ノート:

この索引は、イベントが発生しなかったためにストアが新しい場合には存在しないことがあります。


データの分析

コマンド・インポートを使用して、ダッシュボードを使用して調査できる標準ビジュアライゼーションを作成します。
kibanadashboards.pngの説明が続きます
図kibanadashboards.pngの説明

Oracle NoSQL Main Dashboardには、クラスタのヘルスに関する重要な情報が示されます。
kibanamaindashboard.pngの説明が続きます
図kibanamaindashboard.pngの説明

Oracle NoSQL API Performance DashboardおよびOracle NoSQL Query Performance Dashboardには、NoSQLクラスタのパフォーマンスに関するサマリー情報が示されます。次の重要なAPIコールについて、スループットおよび平均レイテンシに関する情報を提供しています。
  1. NoSQL AllSingleOps/AllMultiOpsは、スループットおよび平均レイテンシを示します。
  2. NoSQL QuerySinglePartition/NoSQL QueryMultiShard/NoSQL QueryMultiPartitionは、SQL問合せのパフォーマンスの詳細情報を示します。
    • QuerySinglePartition、主キー索引を使用する操作
    • QueryMultiShard、セカンダリ索引を使用する操作
    • QueryMultiPartition、全スキャンを実行する操作
  3. PutOps/GetOpsは、CRUD APIコールに関する詳細情報を示します。


Oracle NoSQLは、デバッグ時に役立つ可能性のある数百のメトリックを公開しています。この情報を視覚化するために、NoSQLDebugカテゴリにビジュアライゼーションが提供されています。これらのビジュアライゼーションを使用し、必要に応じてさらにカスタマイズされたビジュアライゼーションを作成することもできます。これらのメトリックには、各タイプのAPI操作の統計が含まれています。また、各操作統計は間隔および累計統計によって計算されます。
kibanavisulazelibrary.pngの説明が続きます
図kibanavisulazelibrary.pngの説明

標準のKibanaビジュアライゼーションを提供することで、この情報を「Standard Application Performance Kibana」ダッシュボードに追加できます。これにより、アプリケーション・アクティビティ、NoSQLパフォーマンス、収集されるその他のOS統計(Metricbeatを使用して収集されたCPUメトリックなど)と相関できます。
kibanaaddvisulazation.pngの説明が続きます
図kibanaaddvisulazation.pngの説明

Oracle NoSQL + Jmeter Performance Dashboardは、このような相関を可能にするアプリケーション・ダッシュボードのよい例です。ダッシュボードは、アプリケーション・パフォーマンス統計(JMeterが提供)とNoSQL標準パフォーマンス・メトリックの相関方法を示すために使用されます。
kibanadashboardperfjmeter.pngの説明が続きます
図kibanadashboardperfjmeter.pngの説明