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のコレクタ・サービスを有効にするには、次のステップを実行します。
-
ストア全体で
collectorEnabled
パラメータをtrue
に設定します。plan change-parameter -global -wait -params collectorEnabled=true
-
collectorInterval
に適切な値を設定します。間隔の値を低くすると、より詳細な情報が収集され、より多くの記憶域が必要になります。間隔の値を高くすると、比較的少ない詳細が収集され、必要な記憶域が少なくなります。plan change-parameter -global -wait -params collectorInterval="30 s"
-
collectorStoragePerComponent
に適切な記憶域サイズを指定します。各コンポーネント(各SNおよびRN)によって収集されたデータは、バッファに格納されます。このバッファ・サイズは、このパラメータを設定することによって変更できます。plan change-parameter -global -wait -params collectorStoragePerComponent="50 MB"
Elasticsearchの設定
Elasticsearchを設定するには、次のステップを実行します。
-
Elasticsearch 7.15をダウンロードし、解凍します。
-
構成に従って
$ELASTICSEARCH/config/elasticsearch.yml
ファイルを変更します。たとえば:
path.data
およびpath.logs
の値を設定して、データおよびログを指定した場所に格納します。 -
Elasticsearchを起動します。
$ cd $ELASTICSEARCH $ sudo sysctl -q -w vm.max_map_count=262144; $ nohup bin/elasticsearch &
詳細は、Elasticsearch Referenceガイドを参照してください。
Kibanaの設定
Kibanaを設定するには、次のステップを実行します。
-
Kibana 7.15をダウンロードし、解凍します。
-
構成に従って
$KIBANA/config/kibana.yml
ファイルを変更します。たとえば: ElasticsearchがKibanaと同じマシンにデプロイされていない場合は、行
elasticsearch.url:”<your_es_hostname>:9200”
を追加します。これにより、Kibanaが127.0.0.1:9200
ではなく、指定されたElasticsearchアドレスに接続するように設定されます。 -
Kibanaを起動します。
$ cd $KIBANA $ nohup bin/kibana &
詳細は、Kibana Referenceガイドを参照してください。
Logstashの設定
Logstashを設定するには、次のステップを実行します。
-
Logstash 7.15をダウンロードし、解凍します。
-
Logstashの解凍先と同じディレクトリに
logstash.config
ファイルを配置します。構成に従ってlogstash.config
ファイルを変更します。たとえば: ElasticsearchがLogstashと同じマシンにデプロイされていない場合は、Elasticsearchホストを
localhost:9200
から<your_es_hostname>:9200
に変更します。 -
Logstashの解凍先と同じディレクトリにテンプレート(
kvevents.template、kvpingstats.template、kvrnenvstats.template、kvrnjvmstats.template、kvrnopstats.template
)を配置します。構成に従ってテンプレートを変更します。 -
$LOGSTASH
ディレクトリに切り替えます。ディレクトリに、Logstash設定ファイル、構成ファイルおよびすべてのテンプレートが含まれていることを確認します。次に、Logstashを起動します。$ cd $LOGSTASH $ logstash-5.6.4/bin/logstash -f logstash.config &
詳細は、Logstash Referenceガイドを参照してください。
各ストレージ・ノードでのFilebeatの設定
各ストレージ・ノードにFilebeatを設定するには、次のステップを実行します。
-
Filebeat 7.15をダウンロードし、解凍します。
-
既存の
filebeat.yml
をfilebeat.yml
に置き換えます。ファイルを編集して、出現するすべての/path/of/kvroot
をこのSNの実際のKVROOTパスに置き換えます。また、LOGSTASH_HOST
をLogstashの実際のIPに置き換えます。 -
Filebeatを起動します。
$ cd $FILEBEAT $ ./filebeat &
-
クラスタのすべてのストレージ・ノードで、前述のステップを繰り返します。
詳細は、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と通信するように設定し、すべての通信が暗号化されるようにします。このレベルのセキュリティは強力で、クラスタ内外のあらゆる通信の安全性を確保します。詳細は、スタック・セキュリティの構成を参照してください。
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の説明
- NoSQLVisualization
- NoSQLExample
- NoSQLDebug
- NoSQLQuickValidation
索引パターンの作成
kvrnjvmstats-*
kvrnenvstats-*
kvpingstats-*
kvrnopstats-*
kvevents-*
ノート:
この索引は、イベントが発生しなかったためにストアが新しい場合には存在しないことがあります。データの分析
コマンド・インポートを使用して、ダッシュボードを使用して調査できる標準ビジュアライゼーションを作成します。
図kibanadashboards.pngの説明
Oracle NoSQL Main Dashboardには、クラスタのヘルスに関する重要な情報が示されます。
図kibanamaindashboard.pngの説明
- NoSQL AllSingleOps/AllMultiOpsは、スループットおよび平均レイテンシを示します。
- NoSQL QuerySinglePartition/NoSQL QueryMultiShard/NoSQL QueryMultiPartitionは、SQL問合せのパフォーマンスの詳細情報を示します。
- QuerySinglePartition、主キー索引を使用する操作
- QueryMultiShard、セカンダリ索引を使用する操作
- QueryMultiPartition、全スキャンを実行する操作
- PutOps/GetOpsは、CRUD APIコールに関する詳細情報を示します。
Oracle NoSQLは、デバッグ時に役立つ可能性のある数百のメトリックを公開しています。この情報を視覚化するために、NoSQLDebugカテゴリにビジュアライゼーションが提供されています。これらのビジュアライゼーションを使用し、必要に応じてさらにカスタマイズされたビジュアライゼーションを作成することもできます。これらのメトリックには、各タイプのAPI操作の統計が含まれています。また、各操作統計は間隔および累計統計によって計算されます。
図kibanavisulazelibrary.pngの説明
標準のKibanaビジュアライゼーションを提供することで、この情報を「Standard Application Performance Kibana」ダッシュボードに追加できます。これにより、アプリケーション・アクティビティ、NoSQLパフォーマンス、収集されるその他のOS統計(Metricbeatを使用して収集されたCPUメトリックなど)と相関できます。
図kibanaaddvisulazation.pngの説明
Oracle NoSQL + Jmeter Performance Dashboardは、このような相関を可能にするアプリケーション・ダッシュボードのよい例です。ダッシュボードは、アプリケーション・パフォーマンス統計(JMeterが提供)とNoSQL標準パフォーマンス・メトリックの相関方法を示すために使用されます。
図kibanadashboardperfjmeter.pngの説明