アプリケーションログと利用分析の異常
アプリケーションログが更新されない場合や、利用分析ページが空白になる場合は、以下の手順で対処します。
原因
Elasticsearch のデータディスク使用率が過去に 95% に達した場合や満杯になった場合、インデックスの読み取り専用保護が作動し、新しいログを書き込めなくなることがあります。現在は空き容量が回復していても、読み取り専用設定を確認してください。主なエラーは以下のとおりです。
disk usage exceeded flood-stage watermark
index has read-only-allow-delete block
読み取り専用制限の解除
ディスクを拡張するか不要なデータを削除して Elasticsearch のデータディスク使用率を 90% 未満に下げてから、すべてのインデックスの制限を解除します。
- スタンドアロンモード
- クラスタモード
-
ストレージコンポーネントのコンテナに入る
スタンドアロンサーバーで sc コンテナに入ります。
docker exec -it $(docker ps | grep mingdaoyun-sc | awk '{print $1}') bash -
すべてのインデックスの制限を解除
sc コンテナ内で読み取り専用制限を解除します。
curl -sS -u 'md:ESPassWD1234' -X PUT 'http://127.0.0.1:9200/*/_settings?expand_wildcards=all' \-H 'Content-Type: application/json' \-d '{"index.blocks.read_only_allow_delete": null}' -
解除結果を確認
sc コンテナ内で読み取り専用設定を確認します。
curl -sS -u 'md:ESPassWD1234' 'http://127.0.0.1:9200/_settings/index.blocks.read_only_allow_delete?expand_wildcards=all&flat_settings=true&pretty'確認後、
exitを実行してコンテナから退出します。
Elasticsearch にアクセスできるサーバーで実行します。ES_HOST と ES_PASSWORD を 実際のアドレスと elastic アカウントのパスワードに置き換え、ポートは実際の設定に合わせて変更してください。
-
すべてのインデックスの制限を解除
curl -sS -u 'elastic:ES_PASSWORD' -X PUT 'http://ES_HOST:9200/*/_settings?expand_wildcards=all' \-H 'Content-Type: application/json' \-d '{"index.blocks.read_only_allow_delete": null}' -
解除結果を確認
curl -sS -u 'elastic:ES_PASSWORD' 'http://ES_HOST:9200/_settings/index.blocks.read_only_allow_delete?expand_wildcards=all&flat_settings=true&pretty'
更新結果に "acknowledged": true が返され、確認結果で index.blocks.read_only_allow_delete が削除済み、または false になっていれば解除成功です。
HAP で操作を行い、新しいアプリケーションログが表示されるか確認します。読み取り専用制限が再発する場合は、各 Elasticsearch ノードのディスク容量を確認してください。
Elasticsearch データの再構築
過去のログを再表示するには、Elasticsearch データを再構築します。サービスにより、MongoDB に保持されている元のログが Elasticsearch に再度書き込まれます。
- スタンドアロンモード
- クラスタモード
-
サービスを停止
マネージャーのルートディレクトリでマネージャーと HAP サービスを停止します。
bash ./service.sh stopall -
Elasticsearch データディレクトリを移動
サービスの停止を確認してから、ホスト上の Elasticsearch データ ディレクトリの名前を変更します。
mv /data/mingdao/script/volume/data/elasticsearch-8 /data/mingdao/script/volume/data/elasticsearch-8.bak-$(date +%Y%m%d%H%M%S) -
サービスを起動
マネージャーのルートディレクトリでサービスを起動します。
bash ./service.sh startall
-
HAP マイクロサービスを停止
クリーンアップ中の書き込みやインデックス作成を防ぐため、HAP マイクロサービスを停止します。
-
インデックスを削除
Elasticsearch サーバーで実行し、
123456を実際のパスワードに変更します。別のサーバーから実行する場合は、2 か所の127.0.0.1:9200を両方とも Elasticsearch の実際の IP アドレスとポートに置き換えてください。elastic_pwd=123456for i in $(curl -u elastic:$elastic_pwd http://127.0.0.1:9200/_cat/indices|awk '{print $3}'); docurl -XDELETE -u elastic:$elastic_pwd http://127.0.0.1:9200/$idone"acknowledged": trueが返されると、対象インデックスの削除は完了です。このコマンドはシステムインデックスを除外しません。エラーや認証の異常がある場合は、解消してから HAP マイクロサービスを起動してください。 -
HAP マイクロサービスを起動
HAP マイクロサービスを起動し、データの再構築を開始します。
再構築の所要時間はデータ量によって異なります。データ量が多い場合は、より長い時間がかかります。
- アプリケーションログはデータの書き込みに伴って順次表示されます。欠けていた期間のログが復元されたか確認してください。
- 利用分析のグラフは 24 時間キャッシュされる場合があります。再構築後すぐに更新されない場合は、翌日に再度確認してください。