OpenSearchのカスタマイズ
Verrazzanoは、OpenSearchクラスタの2つのクラスタ・トポロジをサポートしています:
- 単一ノード・クラスタ: 単一ノードによって実行されるマスター・ロール、取込みロールおよびデータ・ロール。
- 個別のマスター・ノード、データ・ノードおよび取込みノードを含むマルチノード・クラスタ構成。
Verrazzanoによって提供されるデフォルトのOpenSearchクラスタ構成の詳細は、「インストール・プロファイル」を参照してください。
クラスタ・トポロジの計画
ハードウェア・ニーズの初期見積りから開始します。次の推奨事項は、初期の経験に基づく見積りを提供しますが、理想的なサイズにするには、代表的なワークロードでテストし、パフォーマンスをモニターしてから繰り返す必要があります。
ストレージ要件
入力 | 説明 | 値 |
---|---|---|
\(s\) | GiB単位の格納されたデータ・サイズ(1日当たりのログ・サイズ * 保持する日数)。 | ユーザー定義 |
\(sr\) | 索引当たりのシャード・レプリカ数。 | ユーザー定義 |
\(o\) | 全体のオーバーヘッド。これは一定です。 | 1.45 |
最小ストレージ要件= \( ( s * ( 1 + sr ) ) * o \)
例
\(s\) = 66 GiB (1日当たりのログ・サイズである6 GiB * 保持する日数である11)の場合、索引ごとに1つのシャード・レプリカを選択すると、\(sr\) = 1になります
最小ストレージ要件 = \((66 * (1 + 1) ) * 1.45\) = 192 GiB
前の表で定義したオーバーヘッドは、さらに次のように説明できます。
入力 | 説明 | 値 |
---|---|---|
\(io\) | 索引作成オーバーヘッド: 実際のデータ以外に使用される余分な領域で、通常は索引サイズの10% ( 0.1 )です。 | 1 + 0.1 = 1.1 |
\(lrs\) | Linux予約済領域: Linuxでは、一部のOS操作用にファイル・システムの5%がrootユーザー用に予約されています。 | 1- 0.05 = .95 |
\(oo\) | OpenSearchオーバーヘッド: OpenSearchは、セグメントのマージ、ログおよびその他の内部操作について、インスタンスの最大20%を保持します。 | 1- 0.2 = 0.8 |
全体のオーバーヘッド\(o\) = \( io / lrs / oo \) = 1.45
メモリー
ストレージ要件の100 GiBごとに、8 GiBのメモリーが必要です。
「例」を参照してください:
ストレージ要件が192 GiBの場合は、16 GiBのメモリーが必要です。
データ・ノードの数
入力 | 説明 | 値 |
---|---|---|
\(ts\) | 合計ストレージ(GiB単位)。 | ユーザー定義 |
\(mem\) | データ・ノード当たりのメモリー(GiB単位)。 | ユーザー定義 |
\(md\) | メモリー:データ比率(1:30の比率は、ノード上のストレージがRAMよりも30倍多いことを意味します。使用される値は30です)。 | ユーザー定義 |
\(fc\) | フェイルオーバー容量用の1つのデータ・ノード。これは定数です。 | 1 |
ROUNDUP \(ts / mem / md + fc\)
「例」を参照してください:
\(ts\) = 192 GiB、\(mem\) = 8 GiB、\(md\) = 1:10、\(fc\) = 1
データ・ノードの数 = ROUNDUP \( 192 / 8 / 10 + 1 \) = 3
JVMヒープ・メモリー
ヒープ・サイズは、OpenSearchノードのJVMに割り当てられるRAMの量です。OpenSearchプロセスはメモリーに非常に負荷がかかるため、ノードで使用可能なメモリーの50%近くをJVMに割り当てる必要があります。JVMマシンは、索引付けおよび検索操作にメモリーを使用します。その他の50%は、メモリーで定期的にアクセスされるデータを保持するファイル・システム・キャッシュに必要です。原則として、-Xms
と-Xmx
を同じ値(使用可能なRAMの合計の50%)に設定する必要があり、(おおよその)最大値は31 GiBになります。
CPU
ハードウェア要件はワークロードによって大きく異なりますが、通常は、ストレージ要件の100 GiBごとに2つのvCPUコアで十分です。
「例」を参照してください:
192 GiBのストレージの場合、必要なvCPUコアは4つです。
シャード・サイズ
ロギングの場合は、一般に10 GiBから50 GiBのシャード・サイズがパフォーマンスに優れています。検索集中型操作の場合は、一般に10から25 GiBが適切なシャード・サイズです。全体として、単一のシャードの場合、OpenSearchシャード・サイズが50GiBを超えないようにすることをお薦めします。シャードが50 GiBを超える場合は、データの索引を再作成する必要があります。
プライマリ・シャード数
入力 | 説明 | 値 |
---|---|---|
\(s\) | GiB単位の格納されたデータ・サイズ(1日当たりのログ・サイズ * 保持する日数)。 | ユーザー定義 |
\(sh\) | 必要なシャード・サイズ(GiB単位)。 | ユーザー定義 |
\(io\) | 索引作成オーバーヘッド: 実際のデータ以外に使用される余分な領域で、通常は索引サイズの10%です。 | 0.1 |
プライマリ・シャード = \( ( s * (1 + io) ) / sh \)
「例」を参照してください:
\(s\) = 66 GiBで、シャード・サイズ\(sh\) = 30 GiBを選択した場合
プライマリ・シャード数 = \( ( 66 * 1.1 )/ 30 \) = 2
推奨アラーム
PrometheusをカスタマイズしてAlertmanagerを有効にし、推奨アラームを構成(アラート・ルールを追加)して、OpenSearchクラスタに関するインサイトを取得し、いくつかのアクションをプロアクティブに実行できます。
OSDataNodeFilesystemSpaceFillingUp
アラートを使用して、OpenSearchの平均ディスク使用量が指定したしきい値を超えたことを示します。必要に応じてアラートしきい値を調整します。
kubectl apply -f - <<EOF
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
labels:
release: prometheus-operator
name: prometheus-operator-os
namespace: verrazzano-monitoring
spec:
groups:
- name: os
rules:
- alert: OSDataNodeFilesystemSpaceFillingUp
annotations:
runbook_url: <link to runbook>
summary: Opensearch average disk usage exceeded 75%.
expr: |-
1 - (es_fs_total_available_bytes{node=~".*data.*"}/ es_fs_total_total_bytes) > .75
for: 30m
labels:
severity: warning
EOF
クラスタ・トポロジの構成
Verrazzanoカスタム・リソースのspec.components.opensearch.nodesフィールドを使用して、OpenSearchクラスタのノード特性をカスタマイズできます。Verrazzanoをインストールまたはアップグレードするときに、このフィールドを使用すると、ノード・グループを使用してOpenSearchクラスタを定義できます。
次の例は、dev
インストール・プロファイルのOpenSearch構成(1Giのメモリーおよびエフェメラル・ストレージを含む単一ノード・クラスタ)をオーバーライドして、永続ストレージを含むマルチノード・クラスタ(3つのマスター・ノードおよび3つのデータ/取込み組合せノード)を使用するようになります。
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: custom-opensearch-example
spec:
profile: dev
components:
opensearch:
nodes:
- name: master
replicas: 3
roles:
- master
storage:
size: 50Gi
resources:
requests:
memory: 1.5Gi
- name: data-ingest
replicas: 3
roles:
- data
- ingest
storage:
size: 100Gi
resources:
requests:
memory: 1Gi
# Override the default node groups because we are providing our own topology.
- name: es-master
replicas: 0
- name: es-data
replicas: 0
- name: es-ingest
replicas: 0
Verrazzanoをインストールまたはアップグレードした後に、デフォルトのノード・トポロジを変更するには、次の2つのステップを使用します。
- 新しいノード・ポッドを追加します。
apiVersion: install.verrazzano.io/v1beta1 kind: Verrazzano metadata: name: custom-opensearch-example spec: profile: prod components: opensearch: nodes: - name: master replicas: 3 roles: - master storage: size: 50Gi resources: requests: memory: 1.5Gi - name: data-ingest replicas: 3 roles: - data - ingest storage: size: 100Gi resources: requests: memory: 1Gi
- 独自のトポロジを指定するので、デフォルトのノード・プール・レプリカをゼロに設定します。
apiVersion: install.verrazzano.io/v1beta1 kind: Verrazzano metadata: name: custom-opensearch-example spec: profile: dev components: opensearch: nodes: - name: master replicas: 3 roles: - master storage: size: 50Gi resources: requests: memory: 1.5Gi - name: data-ingest replicas: 3 roles: - data - ingest storage: size: 100Gi resources: requests: memory: 1Gi # Override the default node groups because we are providing our own topology. - name: es-master replicas: 0 - name: es-data replicas: 0 - name: es-ingest replicas: 0
前述の構成のverrazzano-logging
ネームスペースにあるポッドと永続ボリュームをリストすると、必要なノードが適切なデータ・ボリュームで実行されていることを確認できます。
$ kubectl get pvc,pod -l opster.io/opensearch-cluster=opensearch -n verrazzano-logging
# Sample output
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/data-opensearch-master-0 Bound pvc-9ace042a-dd68-4975-816d-f2ca0dc4d9d8 50Gi RWO standard 5m22s
persistentvolumeclaim/data-opensearch-master-1 Bound pvc-8bf68c2c-235e-4bd5-8741-5a5cd3453934 50Gi RWO standard 5m21s
persistentvolumeclaim/data-opensearch-master-2 Bound pvc-da8a48b1-5762-4669-98f0-8479f30043fc 50Gi RWO standard 5m21s
persistentvolumeclaim/data-opensearch-data-ingest-0 Bound pvc-7ad9f275-632b-4aac-b7bf-c5115215937c 100Gi RWO standard 5m23s
persistentvolumeclaim/data-opensearch-data-ingest-1 Bound pvc-8a293e51-2c20-4cae-916b-1ce46a780403 100Gi RWO standard 5m23s
persistentvolumeclaim/data-opensearch-data-ingest-2 Bound pvc-0025fcef-1d8c-4307-977c-3921545c6730 100Gi RWO standard 5m22s
NAME READY STATUS RESTARTS AGE
pod/opensearch-data-ingest-0 2/2 Running 0 5m21s
pod/opensearch-data-ingest-1 2/2 Running 1 5m21s
pod/opensearch-data-ingest-2 2/2 Running 0 5m21s
pod/opensearch-dashboards-56d845466c-9xsrv 2/2 Running 0 5m21s
pod/opensearch-master-0 2/2 Running 0 5m21s
pod/opensearch-master-1 2/2 Running 0 5m21s
pod/opensearch-master-2 2/2 Running 0 5m21s
コマンドkubectl describe pod -n verrazzano-logging opensearch-data-ingest-0
を実行すると、リクエストしたメモリー量が表示されます。
Containers:
opensearch:
...
Requests:
memory: 1Gi
デフォルトの索引状態管理ポリシー
索引状態管理(ISM)ポリシーは、索引内のデータを管理するようにOpenSearchを構成します。ポリシーを使用すると、古いデータを自動的にロールオーバーおよびプルーニングして、OpenSearchクラスタでのディスク領域の不足を防ぐことができます。
ディスク領域の不足などの問題を管理するために、デフォルトで次の2つのISMポリシーが作成されます:
-
vz-system
: Verrazzanoシステム索引のデータを管理します。 -
vz-application
: パターンverrazzano-application*
を持つアプリケーション関連索引内のデータを管理します。
どちらのISMポリシーも同じ構成であり、2つの状態で構成されます:
- ホット: これがデフォルトの状態です。プライマリ・シャード・サイズが5GBを超えるか、索引の経過時間が21日を超える場合、索引はロールオーバーされます。索引がロールオーバーされてから14日後、
Delete
状態に遷移します。 - 削除: この状態では、索引は削除されます。ロールオーバーされてから14日後、索引はこの状態になります。
デフォルトのISMポリシーのオーバーライド
OpenSearchクラスタがデータを取り込む速度によっては、デフォルトのISMポリシーが適切ではないことがあります。そのため、要件を満たすためにデフォルトのISMポリシーのオーバーライドが必要になる場合があります。
vz-system
およびvz-application
ポリシーは不変であり、これらのポリシーに対する変更は即時に元に戻されます。ただし、次の2つの方法によってこの動作がオーバーライドされます:
- デフォルト・ポリシーの無効化: Verrazzano CRでフラグspec.components.opensearch.disableDefaultPolicyを
true
に設定して、デフォルト・ポリシーを無効にできます。これにより、デフォルトのISMポリシーが削除され、データを取り込んでいる索引からポリシーが削除されます。ただし、削除されたポリシーは古い索引から削除されません。古い索引からポリシーを手動で削除するには、「Remove policy from index」を参照してください。 - デフォルト・ポリシーのオーバーライド: これらのデフォルト・ポリシーの優先度はどちらもゼロ(
0
)です。同じ索引パターンに対して0
より大きいpolicy.ism_template.priority
を使用してポリシーを作成することで、デフォルトのポリシーをオーバーライドできます。独自のポリシーを構成するには、「ISMポリシーの構成」を参照してください。
ノート
- ポリシーIDが
vz-system
またはvz-application
のポリシーは、Verrazzanoのデフォルト・ポリシー名用に予約されているため作成しないでください。Verrazzano CRではデフォルトで、フラグspec.components.opensearch.disableDefaultPolicyがfalse
に設定されている場合、これらの名前で作成されたポリシーはデフォルトのISMポリシーでオーバーライドされます。 - デフォルトのポリシーは、新しく作成された索引およびデータを取り込んでいる索引に適用されます。新しいポリシーを古い索引に手動でアタッチするには、「Step 2: Attach policies to indexes」を参照してください。
ISMポリシーの構成
Verrazzanoでは、Verrazzanoカスタム・リソースを使用してOpenSearch ISMポリシーを構成できます。Verrazzanoによって作成されたISMポリシーには、取込みと削除の2つの状態が含まれます。取込み状態は、ロールオーバー・アクションに対してのみ構成できます。取込み状態のロールオーバー・アクションは、Verrazzanoカスタム・リソースで提供されるロールオーバー構成に基づいて構成されます。
次のポリシー例は、パターンmy-app-*
に一致する索引を管理するようにOpenSearchを構成します。これらの索引のデータは14日ごとに自動的にプルーニングされ、索引が次の条件の少なくとも1つを満たすとロールオーバーされます:
- 3日以上経過しています
- 1,000件以上のドキュメントが含まれています
- サイズが10GB以上です
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: custom-opensearch-example
spec:
profile: dev
components:
opensearch:
policies:
- policyName: my-app
indexPattern: my-app-*
minIndexAge: 14d
rollover:
minIndexAge: 3d
minDocCount: 1000
minSize: 10gb
{
"_id" : "my-app",
"_version" : 17,
"_seq_no" : 16,
"_primary_term" : 1,
"policy" : {
"policy_id" : "my-app",
"description" : "__vmi-managed__",
"last_updated_time" : 1671096525963,
"schema_version" : 12,
"error_notification" : null,
"default_state" : "ingest",
"states" : [
{
"name" : "ingest",
"actions" : [
{
"rollover" : {
"min_size" : "10gb",
"min_doc_count" : 1000,
"min_index_age" : "3d"
}
}
],
"transitions" : [
{
"state_name" : "delete",
"conditions" : {
"min_index_age" : "14d"
}
}
]
},
{
"name" : "delete",
"actions" : [
{
"delete" : { }
}
],
"transitions" : [ ]
}
],
"ism_template" : [
{
"index_patterns" : [
"my-app-*"
],
"priority" : 1,
"last_updated_time" : 1671096525963
}
]
}
}
ノート: OpenSearchにポリシーが表示されるまでに数分かかる場合があります。
また、Verrazzanoカスタム・リソースを使用して作成されたISMポリシーには、最小限の構成セットが含まれています。より詳細なISMポリシーを作成するには、OpenSearch REST APIを使用できます。OpenSearch APIを使用してポリシーを作成するには、次を実行します:
$ PASS=$(kubectl get secret \
--namespace verrazzano-system verrazzano \
-o jsonpath={.data.password} | base64 \
--decode; echo)
$ HOST=$(kubectl get ingress \
-n verrazzano-system opensearch \
-o jsonpath={.spec.rules[0].host})
$ curl -ik -X PUT --user verrazzano:$PASS https://$HOST/_plugins/_ism/policies/policy_3 \
-H 'Content-Type: application/json' \
--data-binary @- << EOF
{
"policy": {
"description": "ingesting logs",
"default_state": "ingest",
"states": [
{
"name": "ingest",
"actions": [
{
"rollover": {
"min_doc_count": 5
}
}
],
"transitions": [
{
"state_name": "search"
}
]
},
{
"name": "search",
"actions": [],
"transitions": [
{
"state_name": "delete",
"conditions": {
"min_index_age": "5m"
}
}
]
},
{
"name": "delete",
"actions": [
{
"delete": {}
}
],
"transitions": []
}
]
}
}
EOF
$ curl -ik \
--user verrazzano:$PASS https://$HOST/_plugins/_ism/policies
デフォルトの索引テンプレートのオーバーライド
Verrazzanoには、デフォルトの索引テンプレートverrazzano-data-stream
が用意されています。索引を作成する場合、デフォルトの索引テンプレートには、シャードとレプリカの数やフィールドの動的マッピングなど、いくつかの事前定義済設定があります。ただし、デフォルトの索引テンプレートをオーバーライドして、独自の優先索引テンプレートを使用できます。
そのためには、デフォルトの索引テンプレートのコンテンツをコピーして、必要に応じて設定を変更してから、新しいテンプレートでデフォルトのテンプレートをオーバーライドするように、より優先度の高い索引テンプレートを作成する必要があります。
OpenSearch Dev Tools Consoleを使用して、特定の問合せをOpenSearchに送信できます。コンソールを開くには、OpenSearchダッシュボードのメイン・ページで「Dev Tools」を選択し、コンソールの左側にあるエディタ・ペインに問合せを記述します。
既存のデフォルト・テンプレートを取得するには:
$ GET /_index_template/verrazzano-data-stream
シャードおよびレプリカのデフォルト数のオーバーライド
初期のVerrazzano v1.5インストール(アップグレードではない)では、デフォルトの索引テンプレートによって、索引ごとに1つのシャードと1つのレプリカが作成されます。(以前のインストールとアップグレード・インストールでは、5つのシャードと1つのレプリカが作成されます)。シャードとレプリカのデフォルト数を変更するには、デフォルトの索引テンプレートを取得し、シャードとレプリカの数を必要な値に変更して、より優先度の高い新しい索引テンプレートを作成します。
次に、新しい索引テンプレートを作成してシャード数を3
に、レプリカ数を2
に変更する例を示します。
$ PUT _index_template/my-template
{
"index_patterns" : [
"verrazzano-application-myapp*"
],
"template" : {
"settings" : {
"index" : {
"mapping" : {
"total_fields" : {
"limit" : "2000"
}
},
"refresh_interval" : "5s",
"number_of_shards" : "3",
"auto_expand_replicas" : "0-1",
"number_of_replicas" : "2"
}
},
"mappings" : {
"dynamic_templates" : [
{
"message_field" : {
"path_match" : "message",
"mapping" : {
"norms" : false,
"type" : "text"
},
"match_mapping_type" : "string"
}
},
{
"object_fields" : {
"mapping" : {
"type" : "object"
},
"match_mapping_type" : "object",
"match" : "*"
}
},
{
"all_non_object_fields" : {
"mapping" : {
"norms" : false,
"type" : "text",
"fields" : {
"keyword" : {
"ignore_above" : 256,
"type" : "keyword"
}
}
},
"match" : "*"
}
}
],
"properties" : {
"@timestamp" : {
"format" : "strict_date_time||strict_date_optional_time||epoch_millis",
"type" : "date"
}
}
}
},
"priority" : 201,
"data_stream" : {
"timestamp_field" : {
"name" : "@timestamp"
}
}
}
verrazzano-application-myapp*
索引パターンに一致する新しい索引が3つのシャードと2つのレプリカで作成され、一致しない他の索引は引き続きデフォルトのシャードとレプリカの数で作成されます。詳細は、OpenSearchドキュメントの「Index templates」を参照してください。
デフォルトのマッピングおよびフィールド・タイプのオーバーライド
デフォルトの索引テンプレートでは、動的マッピングを使用して、すべてのフィールドをtext
およびkeyword
として格納します。アプリケーションで、フィールドを別のタイプとして格納する場合は、デフォルトの索引テンプレートを取得し、目的のフィールドのマッピングを変更してから、より優先度の高い新しい索引テンプレートを作成します。
次に、myapp*
ネームスペース内のアプリケーションについて、新しい索引テンプレートを作成する例を示します。この例では、すべての長いフィールドを整数に動的にマップし、age
およびip_address
フィールドをそれぞれinteger
およびip
として明示的にマップします。
$ PUT _index_template/my-template
{
"index_patterns" : [
"verrazzano-application-myapp*"
],
"template" : {
"settings" : {
"index" : {
"mapping" : {
"total_fields" : {
"limit" : "2000"
}
},
"refresh_interval" : "5s",
"number_of_shards" : "1",
"auto_expand_replicas" : "0-1",
"number_of_replicas" : "0"
}
},
"mappings" : {
"dynamic_templates" : [
{
"long_as_int" : {
"mapping" : {
"type" : "integer"
},
"match_mapping_type" : "long"
}
},
{
"message_field" : {
"path_match" : "message",
"mapping" : {
"norms" : false,
"type" : "text"
},
"match_mapping_type" : "string"
}
},
{
"object_fields" : {
"mapping" : {
"type" : "object"
},
"match_mapping_type" : "object",
"match" : "*"
}
},
{
"all_non_object_fields" : {
"mapping" : {
"norms" : false,
"type" : "text",
"fields" : {
"keyword" : {
"ignore_above" : 256,
"type" : "keyword"
}
}
},
"match" : "*"
}
}
],
"properties" : {
"@timestamp" : {
"format" : "strict_date_time||strict_date_optional_time||epoch_millis",
"type" : "date"
},
"age" : {
"type" : "integer"
},
"ip_address" : {
"type" : "ip",
"ignore_malformed" : true
}
}
}
},
"priority" : 201,
"data_stream" : {
"timestamp_field" : {
"name" : "@timestamp"
}
}
}
verrazzano-application-myapp*
索引パターンに一致する新しい索引は、age
およびip_address
フィールドをtext
ではなくinteger
およびip
として格納します。また、長いデータ・フィールドはinteger
として格納されます。詳細は、OpenSearchドキュメントの「Mappings and field types」を参照してください。
デフォルトの索引テンプレートをオーバーライドした後の既存の索引の構成
アプリケーションで、デフォルトの索引テンプレートに基づく索引がOpenSearchによってすでに作成されている場合は、次の項のステップを実行してそれらを構成します。
データ・ストリームのロールオーバー
既存の索引のマッピングは変更できないため、アプリケーションで索引を作成するには、データ・ストリームをロールオーバーする必要があります。その後、OpenSearchは、ユーザーが作成した新しいテンプレートに基づいてデータの索引付けを開始します。
データ・ストリームをロールオーバーするには:
POST /verrazzano-application-myapp/_rollover
ノート: Verrazzanoが提供するデフォルトのISMポリシーは、特定の条件が満たされると定期的に索引をロールオーバーするため、索引を手動でロールオーバーする必要はありません。
索引パターンのリフレッシュ
「Discover」ページにフィールドの更新されたマッピングを表示するには、アプリケーションの索引パターンをリフレッシュする必要があります。
索引パターンをリフレッシュするには:
- OpenSearchダッシュボードのメイン・ページの「Management」セクションで、ドックの「Stack Management」に移動します。
- 次に、「Index Pattern」>「
verrazzano-application*
」に移動します。アプリケーション用に個別の索引パターンを作成した場合は、それを選択します。 - ページの右上にある「Refresh field list」アイコンをクリックします。
索引の再作成
フィールド・リストをリフレッシュした後に、マッピングの競合に関する警告が表示された場合は、以前の索引を再作成する必要があります。マッピングの競合が発生するのは、以前の索引のフィールドに対するマッピングが新しい索引と異なるためです(新しい索引は、マッピングが異なる新しい索引テンプレートに基づいて作成されています)。
以前の索引を再作成するには:
POST _reindex
{
"conflicts" : "proceed",
"source" : {
"index" : [
".ds-verrazzano-application-myapp-000001"
]
},
"dest" : {
"index" : "verrazzano-application-myapp",
"op_type" : "create"
}
}
sourceで、デフォルトの索引テンプレートに基づいて作成された以前の索引をすべてリストします。索引の再作成が完了したら、再度索引パターンをリフレッシュします。詳細は、OpenSearchドキュメントの「Reindex data」を参照してください。
OpenSearchおよびOpenSearchダッシュボードのプラグインのインストール
Verrazzanoは、Verrazzanoカスタム・リソースにプラグインを含めることで、OpenSearchおよびOpenSearchダッシュボードのプラグインのインストールをサポートしています。OpenSearchのプラグインをインストールするには、Verrazzanoカスタム・リソースでフィールドspec.components.opensearch.pluginsを定義します。
次のVerrazzanoカスタム・リソースの例では、OpenSearchのanalysis-stempel
およびopensearch-anomaly-detection
プラグインをインストールします:
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: custom-opensearch-example
spec:
profile: dev
components:
opensearch:
plugins:
enabled: true
installList:
- analysis-stempel
- https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-anomaly-detection/2.3.0.0/opensearch-anomaly-detection-2.3.0.0.zip
OpenSearchのビルド済プラグイン
OpenSearchイメージにバンドルされているビルド済プラグインを次にいくつか示します:
analysis-icu
analysis-kuromoji
analysis-phonetic
analysis-smartcn
ingest-attachment
mapper-murmur3
mapper-size
opensearch-alerting
opensearch-index-management
opensearch-job-scheduler
opensearch-notifications
opensearch-notifications-core
prometheus-exporter
repository-s3
plugins.installList
でプラグインを指定するには、次の3つの方法があります:
-
名前でインストールできる唯一のプラグインであるビルド済の追加プラグインがいくつかあります。
installList: - analysis-icu
-
必要なプラグインを含むリモートZIPファイルへのURLを指定します。
installList: - https://repo1.maven.org/maven2/org/opensearch/plugin/opensearch-anomaly-detection/2.2.0.0/opensearch-anomaly-detection-2.2.0.0.zip
-
Maven Centralでホストされている使用可能なアーティファクトおよびバージョンのMaven座標を指定します。
installList: - org.opensearch.plugin:opensearch-anomaly-detection:2.2.0.0
ノート
plugins.installList
に新しいプラグインを追加するか、plugins.installList
からプラグインを削除すると、OpenSearch関連のポッドが再起動されます。- プラグインが正常にインストールされたことを確認するには、CrashLoopBackOff状態のポッドがなく、プラグイン機能が正常に動作していることを確認します。
- プラグインのインストール中にエラーが発生した場合は、OpenSearchマスター・ポッドの1つがCrashLoopBackOff状態になりますが、他のポッドは実行中の状態のままで、OpenSearchクラスタは正常に機能します。ログで失敗の正確な原因を確認します。
- 指定したプラグインURLまたはMaven Centralにアクセスしてプラグインをインストールするには、ご使用の環境がインターネットに接続できる必要があります。インターネットの問題の場合、ログにSocketExceptionまたはUnknownHostException例外が表示されることがあります。この問題を解決するには、ポッドがインターネットに接続されていることを確認します。
- 互換性を保つには、メジャー、マイナーおよびパッチのプラグイン・バージョンがOpenSearchのメジャー、マイナーおよびパッチのバージョンと一致している必要があります。たとえば、プラグイン・バージョン2.3.0.xは、OpenSearchバージョン2.3.0のみと互換性があります。
OpenSearchダッシュボードでは、Verrazzanoカスタム・リソースでフィールドspec.components.opensearch-dashboards.pluginsを定義することで、プラグインを指定できます。
OpenSearchダッシュボードのビルド済プラグイン
次に、OpenSearchダッシュボード・イメージにバンドルされているビルド済プラグインを示します:
alertingDashboards
indexManagementDashboards
notificationsDashboards
OpenSearchダッシュボードのプラグインをインストールするVerrazzanoカスタム・リソースの例を次に示します:
apiVersion: install.verrazzano.io/v1beta1
kind: Verrazzano
metadata:
name: custom-opensearch-example
spec:
profile: dev
components:
opensearchDashboards:
plugins:
enabled: true
installList:
- <URL to OpenSearch Dashboards plug-in ZIP file>
OpenSearchユーザーの追加
デフォルトのOpenSearchユーザーの他に、追加でユーザーを作成する場合は、次の手順に従います。
-
まず、まだユーザーが存在しないことを確認します。既存のユーザーを取得するには:
$ GET _plugins/_security/api/internalusers/
-
Keycloakで新しいユーザーとバックエンド・ロールを作成し、そのロールをユーザーに関連付けます。また、ロール
vz_api_access
を新しく作成したユーザーに関連付けます。 -
ステップ2で作成したユーザーに、新しいOpenSearchロールを作成します。次に、カスタム・ロールを作成するカスタム・リソースの例を示します。
apiVersion: opensearch.opster.io/v1 kind: OpensearchRole metadata: name: custom-role namespace: verrazzano-logging spec: opensearchCluster: name: opensearch clusterPermissions: - "cluster:monitor/main" - "cluster:monitor/health" indexPermissions: - indexPatterns: - verrazzano* allowedActions: - index - read
設定できる権限については、OpenSearchの権限を参照してください。
-
allowedActionsでactionGroupsを使用する場合は、次の例を参照してActionGroupカスタム・リソースを作成します。
apiVersion: opensearch.opster.io/v1 kind: OpensearchActionGroup metadata: name: custom-action-group namespace: verrazzano-logging spec: opensearchCluster: name: opensearch allowedActions: - index - read type: index description: Custom action group
-
ユーザーとロールを作成したら、OpensearchUserRoleBindingカスタム・リソースを使用して、それらすべてをリンクします。次に示すのはRoleBindingを作成するカスタム・リソースの例で、ステップ2で作成したユーザー
custom-user
とバックエンド・ロールcustom-role
、およびステップ3で作成したOpenSearchロールcustom-role
をバインドします。apiVersion: opensearch.opster.io/v1 kind: OpensearchUserRoleBinding metadata: name: custom-rb namespace: verrazzano-logging spec: opensearchCluster: name: opensearch users: - custom-user backendRoles: - custom-role roles: - custom-role