Elastic Stackの8.0がリリースされてから少し経ちましたが、そろそろ7系から8系にアップグレードしようかと考えている方々も多いのではないでしょうか?そこで、メジャーアップグレード時の心強い味方、Upgrade Assistantを使って、8系へのバージョンアップについて触れておきたいと思います。
こちらの情報は記事投稿時(2022年4月)の話です。
8系の新機能って?
8.0のGAは今年の2月ですが、Elastic Stack周りでざっくり言うと、以下のような機能になります。
- Lucene 9がベースに
- ネイティブなVector SearchとNLPのサポート
- Elastic Serverless Forwarderを使った、AWSにおけるAgentless Log Ingestion
- Stack Securityがデフォルトで有効化
ダウンロードしてインストールすると最初に戸惑うのは、Stack Securityがデフォルトで有効化されたことかもしれません。最早、TLSも認証もデフォルトです。また、NLP周りは@ijokarumawak@githubさんの記事がとても参考になります。
Upgrade Assistantってなに?
さて、本題のUpgrade Assistantですが、Elastic Stackのメジャーアップグレードを行う時に、名前の通り色々とアシストしてくれる機能です。Kibanaの Stack Management > Upgrade Assistant から開くことができます。
使ってみよう
実際にUpgrade Assistantをクリックすると、次のような画面が開きます。ここでは、Elastic Cloud上のElastic Stackデプロイメントを例に取って、ステップ毎に見ていきましょう。
1. Back up your data
どんなアップグレードでも、何はともあれバックアップから、です。Elastic Cloudの場合、デフォルトスナップショットが取得されるので、最新の取得時間が表示されます。もし、直近でもう一度取得したい場合は、Create snapshot をクリックすると、スナップショット取得の画面が新たに開くので、そこでスナップショットを取得しましょう。
2. Migrate system indices
ここでは、System indices、つまり"."で始まる".kibana-"のようなElasticsearchやKibanaが内部的に使うIndexが、8系に移行できるかどうかのチェックを行い、必要であれば移行に必要な処理が行われます。通常は、直ぐに Migration complete のチェックが付きます。
3. Review deprecated settings and resolve issues
このステップの裏側では、ElasticsearchのClusterやNode、Indexレベル、さらにKibanaのSettingsをチェックしています。Indexについては、8系へのアップグレードの前提として、既に7.17にバージョンアップされていることが前提になるので、Reindexは基本必要ありません。但し、6系で作成したIndexをスナップショットからリストアしたりしていると、8系と互換性がないのでReindexが必要となる場合もあります。ちなみに、6系 > 7系の時のUpgrade Assistantでは、5系で作成したIndexのReindex機能があったのですが、7系 > 8系では、その機能はなくなってました。必要に応じてDev ToolからReindexしましょう。画面ではKibanaからバッチでまとめてReindexするAPIが、Experimentalながらもガイドされるので、興味があれば試してみてください。
Issueがある場合は、その数が表示されるのでクリックして確認します。
Elasticsearch、KibanaそれぞれIssueをクリックすると、その詳細や解決方法がガイドされるので、それに従って対応します。
例えば、Setting [index.max_adjacency_matrix_filters] is deprecated をクリックしてみましょう。
この場合、Remove deprecated settings ボタンをクリックすると該当の設定が削除されて、次のように Deprecated settings removed にチェックが付きました。
もう一方の Setting node.attributes.data is not recommended は、ここでは放置でOKです。Warning Issue の大半は非推奨設定の指摘なので、あまり目くじらを立てる必要はないのですが、この辺りは、そのクラスタの辿ってきた歴史に応じて、様々な設定が施されているはずなので、詳しくは公式ドキュメントを参照するようにしてみて下さい。
ちなみに、Elastic Cloudの場合、変更できるClusterやNodeの設定は限定されているので、Critical Issue を目にすることは滅多にないと思いますが、例えばオンプレで、Stack Securityを無効にしていると、こんな風にレポートされます。8系では冒頭でも書いた通り、有効にしておく必要があるからですね。Critical Issueは、実際のアップグレード前に解決する必要があります。
このステップでチェックしているのは、あくまでClusterやNode、Indexの設定レベルです。アプリケーションから非推奨のAPIを叩いているかも?といったことは次のステップになります。
4. Address API deprecation
非推奨のAPIを使ったアプリケーションからのアクセスがないかチェックします。例えば、以下のように非推奨のAPIをDev Toolから叩いてみます。
GET _cat/nodes?local
Deprecation logにログが出力されるので、以下のように教えてくれます。
ここでは、ある期間におけるDeprecation logを検索して表示してくれています。ひとつ気をつけないといけないことは、あくまで一定期間でのありなしを表示しているので、その期間に該当するAPIによるアクセスがなければ表示されないということです。実際の詳細は、Logアプリ か Discover で確認することができます。アプリケーションの対応後、再度テストをして、Deprecation logが出なくなったことを確認したりといった使い方ができますね。
5. Upgrade to Elastic 8.x
Elastic Cloudの場合は、Upgrade on Cloudをクリックすれば、Cloud UIにナビゲートされて、後は良しなにアップグレードしてくれます。
オンプレの場合は、マニュアルでアップグレードプロセスを実行する必要がありますが、そこは挫けずに頑張りましょう。
まとめ
メジャーアップグレードというと、ついつい気後れしてしまいがちですが、こうしたアシスタント機能を使うことで事前の確認を効率化して、作業漏れを防ぐことができます。Elastic Stackも8系になって、さらに新しい機能がどんどんリリースされてきますので、ぜひUpgrade Assistantを活用して、8系へアップグレードしていきましょう。アップグレード時の注意点は、公式ドキュメントを参考にしてみて下さい。