This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.4. ログデータを保存し、整理するための Elasticsearch の設定
OpenShift Container Platform は Elasticsearch (ES) を使用してログデータを保存し、整理します。
Elasticsearch デプロイメントを以下を実行するように設定できます。
- Elasticsearch クラスターのストレージを設定します。
- シャードをクラスター内の複数のデータノードにレプリケートする方法 (完全なレプリケーションからレプリケーションなしを含む) を定義します。
- Elasticsearch データへの外部アクセスを設定します。
Elasticsearch ノードのスケールダウンはサポートされていません。スケールダウン時に Elasticsearch Pod が誤って削除される場合があり、その場合にはシャードが割り当てられず、レプリカシャードが失われる可能性があります。
Elasticsearch はメモリー集約型アプリケーションです。それぞれの Elasticsearch ノードには、ClusterLogging カスタムリソースに指定しない限り、メモリー要求および CPU 制限の両方に 16G のメモリーが必要です。初期設定の OpenShift Container Platform ノードのセットは、Elasticsearch クラスターをサポートするのに十分な大きさではない場合があります。その場合、推奨されるサイズ以上のメモリーを使用して実行できるようにノードを OpenShift Container Platform クラスターに追加する必要があります。
各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨されません。
Elasticsearch Operator (EO) を管理外の状態に設定し、Cluster Logging Operator (CLO) を管理対象のままにする場合、CLO は EO に加えた変更を元に戻します。EO は CLO によって管理されているためです。
6.4.1. Elasticsearch CPU およびメモリー制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
それぞれのコンポーネント仕様は、CPU とメモリーの両方への調整を許可します。Elasticsearch Operator は環境に適した値を設定するため、これらの値を手動で調整する必要はありません。
各 Elasticsearch ノードはこれより低い値のメモリー設定でも動作しますが、これは実稼働環境でのデプロイメントには推奨 されていません。実稼働環境での使用の場合には、デフォルトの 16Gi よりも小さい値を各 Pod に割り当てることはできません。 Pod ごとに割り当て可能な最大値は 64Gi であり、この範囲の中で、できるだけ多くのメモリーを割り当てることを推奨します。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
openshift-logging
プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。oc edit ClusterLogging instance
$ oc edit ClusterLogging instance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 必要に応じて CPU およびメモリー制限を指定します。これらの値を空のままにすると、Elasticsearch Operator はデフォルト値を設定します。これらのデフォルト値はほとんどのデプロイメントでは問題なく使用できるはずです。
6.4.2. Elasticsearch レプリケーションポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch シャードをクラスター内のデータノードに複製する方法を定義できます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
openshift-logging
プロジェクトでクラスターロギングのカスタムリソース (CR) を編集します。oc edit clusterlogging instance
oc edit clusterlogging instance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- シャードの冗長性ポリシーを指定します。変更の保存時に変更が適用されます。
- FullRedundancy:Elasticsearch は、各インデックスのプライマリーシャードをすべてのデータノードに完全にレプリケートします。これは最高レベルの安全性を提供しますが、最大量のディスクが必要となり、パフォーマンスは最低レベルになります。
- MultipleRedundancy:Elasticsearch は、各インデックスのプライマリーシャードをデータノードの半分に完全にレプリケートします。これは、安全性とパフォーマンス間の適切なトレードオフを提供します。
- SingleRedundancy:Elasticsearch は、各インデックスのプライマリーシャードのコピーを 1 つ作成します。2 つ以上のデータノードが存在する限り、ログは常に利用可能かつ回復可能です。5 以上のノードを使用する場合には、MultipleRedundancy よりもパフォーマンスが良くなります。このポリシーは、単一 Elasticsearch ノードのデプロイメントには適用できません。
- ZeroRedundancy:Elasticsearch は、プライマリーシャードのコピーを作成しません。ノードが停止または失敗した場合、ログは利用不可となるか、失われる可能性があります。安全性よりもパフォーマンスを重視する場合や、独自のディスク/PVC バックアップ/復元ストラテジーを実装している場合は、このモードを使用できます。
6.4.3. Elasticsearch ストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch には永続ストレージが必要です。ストレージが高速になると、Elasticsearch パフォーマンスも高速になります。
NFS ストレージをボリュームまたは永続ボリュームを使用 (または Gluster などの NAS を使用する) ことは Elasticsearch ストレージではサポートされません。Lucene は NFS が指定しないファイルシステムの動作に依存するためです。データの破損およびその他の問題が発生する可能性があります。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
クラスターロギング CR を編集してクラスターの各データノードが Persistent Volume Claim (永続ボリューム要求、PVC) にバインドされるように指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この例では、クラスターの各データノードが、「200G」の AWS General Purpose SSD (gp2) ストレージを要求する Persistent Volume Claim (永続ボリューム要求、PVC) にバインドされるように指定します。
6.4.4. Elasticsearch での emptyDir ストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch で emptyDir を使用することができます。これは、Pod のデータすべてが再起動時に失われる一時デプロイメントを作成します。
emptyDir を使用する場合、Elasticsearch が再起動するか、または再デプロイされる場合にデータが失われます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
クラスターロギング CR を編集して emptyDir を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.5. Elasticsearch のルートとしての公開 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、クラスターロギングでデプロイされた Elasticsearch はロギングクラスターの外部からアクセスできません。データにアクセスするツールについては、Elasticsearch へ外部アクセスするために re-encryption termination でルートを有効にすることができます。
re-encrypt ルート、OpenShift Container Platform トークンおよびインストールされた Elasticsearch CA 証明書を作成して Elasticsearch に外部からアクセスすることができます。次に、以下を含む cURL 要求を持つ Elasticsearch ノードにアクセスします。
-
Authorization: Bearer ${token}
- Elasticsearch reencrypt ルートおよび Elasticsearch API 要求
内部からは、Elasticsearch クラスター IP を使用して Elastiscearch にアクセスすることができます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
- ログにアクセスできるようになるには、プロジェクトへのアクセスが必要です。以下は例になります。
手順
Elasticsearch を外部に公開するには、以下を実行します。
openshift-logging
プロジェクトに切り替えます。oc project openshift-logging
$ oc project openshift-logging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Elasticsearch から CA 証明書を抽出し、admin-ca ファイルに書き込みます。
oc extract secret/elasticsearch --to=. --keys=admin-ca
$ oc extract secret/elasticsearch --to=. --keys=admin-ca admin-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Elasticsearch サービスのルートを YAML ファイルとして作成します。
以下のように YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 次の手順で Elasticsearch CA 証明書を追加するか、またはコマンドを使用します。一部の re-encrypt ルートで必要とされる
spec.tls.key
、spec.tls.certificate
、およびspec.tls.caCertificate
パラメーターを設定する必要はありません。
作成したルート YAML に Elasticsearch CA 証明書を追加します。
cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートを作成します。
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml route.route.openshift.io/elasticsearch created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Elasticsearch サービスが公開されていることを確認します。
要求に使用されるこの ServiceAccount のトークンを取得します。
token=$(oc whoami -t)
$ token=$(oc whoami -t)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成した elasticsearch ルートを環境変数として設定します。
routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートが正常に作成されていることを確認するには、公開されたルート経由で Elasticsearch にアクセスする以下のコマンドを実行します。
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}/.operations.*/_search?size=1" | jq
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}/.operations.*/_search?size=1" | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.6. Elasticsearch アラートルール リンクのコピーリンクがクリップボードにコピーされました!
これらのアラートルールを Prometheus に表示できます。
アラート | 説明 | 重大度 |
---|---|---|
ElasticsearchClusterNotHealthy | クラスターのヘルスステータスは少なくとも 2m の間 RED になります。クラスターは書き込みを受け入れず、シャードが見つからない可能性があるか、またはマスターノードがまだ選択されていません。 | critical |
ElasticsearchClusterNotHealthy | クラスターのヘルスステータスは少なくとも 20m の間 YELLOW になります。一部のシャードレプリカは割り当てられません。 | warning |
ElasticsearchBulkRequestsRejectionJumps | クラスターのノードにおける高いバルク除去率 (High Bulk Rejection Ratio) を示します。このノードはインデックスの速度に追い付いていない可能性があります。 | warning |
ElasticsearchNodeDiskWatermarkReached | クラスターのノードでディスクの低い基準値に達しています。シャードをこのノードに割り当てることはできません。ノードにディスクを追加することを検討する必要があります。 | alert |
ElasticsearchNodeDiskWatermarkReached | クラスターのノードでディスクの高い基準値に達しています。一部のシャードは可能な場合に別のノードに再度割り当てられる可能性があります。ノードにディスク領域が追加されるか、またはこのノードに割り当てられる古いインデックスをドロップします。 | high |
ElasticsearchJVMHeapUseHigh | クラスター内のノード上での JVM ヒープの使用量は <value> です。 | alert |
AggregatedLoggingSystemCPUHigh | クラスター内のノード上でのシステム CPU の使用量は <value> です。 | alert |
ElasticsearchProcessCPUHigh | クラスター内のノード上での ES プロセス CPU の使用量は <value> です。 | alert |