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 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-5.6.4をダウンロードし、解凍します。
-
構成に従って
$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-5.6.4をダウンロードし、解凍します。
-
構成に従って
$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-5.6.4をダウンロードし、解凍します。
-
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-5.6.4をダウンロードし、解凍します。
-
既存の
filebeat.yml
をfilebeat.yml
に置き換えます。ファイルを編集して、出現するすべての/path/of/kvroot
をこのSNの実際のKVROOTパスに置き換えます。また、LOGSTASH_HOST
をLogstashの実際のIPに置き換えます。 -
Filebeatを起動します。
$ cd $FILEBEAT $ ./filebeat &
-
クラスタのすべてのストレージ・ノードで、前述のステップを繰り返します。
詳細は、Filebeat Referenceガイドを参照してください。
Kibanaを使用したOracle NoSQL Databaseの分析
この例では、Kibanaで索引を作成してデータを視覚化する方法について説明します。
索引パターンにより、探索するElasticsearch索引がKibanaに指示されます。索引パターンは、単一の索引の名前に一致させることも、複数の索引に一致するようにワイルドカード(*)を含めることもできます。
前述のテンプレート・ファイルを使用した場合は、次の索引を使用できます。
-
kvrnjvmstats-*
-
kvrnenvstats-*
-
kvpingstats-*
-
kvrnopstats-*
-
kvrnopstats-*
— イベントが発生しなかったためにストアが新しいものである場合、この索引は存在しないことがあります。
データの分析
この例では、索引kvpingstats-*
を使用して可視化を作成し、クラスタ内で95thLatencyを検出します。
-
可視化タイプを選択します。この例では、Timelionを選択します。
-
データを集約するTimelion式を入力します。この例では、次の式が使用されています。
.es(index=kvrnopstats-*, timefield='@timestamp', metric='max:SingleKeyReadOperations_Interval_95th').label('read-single').legend("sw",2).title("95thLatency"),.es(index=kvrnopstats-*, timefield='@timestamp', metric='max:SingleKeyWriteOperations_Interval_95th').label('write-single').legend("sw",2).title("95thLatency")
-
可視化を保存し、任意のダッシュボードに追加します。