これは旧eviry tech blogから移行した記事です。
millvi開発のtkです。
millviではアクセスログ収集・監視のためにElasticsearchとKibanaを使用しています。
これまでは5.6を使用していたのですが、現在はメジャーバージョンが更新されて6.3になっています。(2018/08/03現在最新)
また、このバージョンではKibana上のDiscoveryの結果をCSVで出力する機能が追加されています。
検索した結果をCSVで出力したい!という声を聞くようになっていたので、今回公式のサイトを参考にこれらを更新してみました。
なお、今回は5.6から6.3へのアップロードになります。
公式サイトにあるように、どのバージョンから更新するかによって更新手順が異なっていますので、ご注意ください。
また、元のElasticsearchとKibanaはyumを使ってインストールしています。
環境
- Amazon Linux 2017.3
- Elasticsearch: 5.6.3 (-> 6.3.1)
- Kibana: 5.6.3 (-> 6.3.1)
参考
- Upgrade Elasticsearch | Elasticsearch Reference 6.3 | Elastic
- Rolling upgrades | Elasticsearch Reference 6.3 | Elastic
- Upgrading Kibana | Kibana User Guide 6.3 | Elastic
- Standard Upgrade | Kibana User Guide 6.3 | Elastic
- Migrating Kibana index to 6.0 | Kibana User Guide 6.3 | Elastic
更新手順
まずはyumで更新するための下準備としてレポジトリの情報を追加します。
sudo tee -a /etc/yum.repos.d/elasticsearch.repo << EOF [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md EOF sudo tee -a /etc/yum.repos.d/kibana.repo << EOF [kibana-6.x] name=Kibana repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md EOF
次に、起動しているElasticsearchが勝手にインデックスをアロケートするのを止めるために設定を変更します。
curl -XPUT localhost:9200/_cluster/settings -d '{"persistent":{"cluster.routing.allocation.enable":"none"}}'
これで下準備はできたので、ElasticsearchとKibanaを停止します。
sudo service kibana stop sudo service elasticsearch stop
まずはElasticsearchから更新します。
sudo yum update elasticsearch --enablerepo=elasticsearch-6.*
yum updateが正常に終了すれば更新は完了です。
ただ、弊社の環境では5.4のときと6.3ではデータやログのパスが異なっていたため、Elasticsearchの起動に失敗しました。
そこで、elasticsearch.yml
にあるそれぞれのパスを書き換えて対応しました。(正常にElasticsearchが起動すればこの手順は不要。)
sudo vim /etc/elasticsearch/elasticsearch.yml # path.data と path.logs を修正
では、準備が整ったのでElasticsearchを起動し、リクエストを投げて正常に立ち上がったかを確認します。
sudo service elasticsearch start curl -X GET “localhost:9200/_cat/nodes”
Elasticsearchの起動に成功していれば、2つ目のコマンド実行時にノードの配置状況が返ってきます。
次に、最初に設定しておいたアロケートの設定を戻します。
ここでPOSTリクエストをElasticsearchに投げるのですが、6.*
ではContent-Type:application/json
をHeaderに設定していないとPOSTリクエストを受け付けないので注意しましょう。
curl -XPUT localhost:9200/_cluster/settings -H "Content-Type: application/json" -d '{"persistent":{"cluster.routing.allocation.enable":null}}'
ここまででElasticsearchの更新は完了です。
ここからKibanaの更新を行います。
初めに、5.*
から6.*
への更新の際にはKibana関連の設定情報の入ったインデックスを更新する必要があります。
公式サイトに書かれているコマンドをそのまま実行すればよいだけです。
コマンドが長いのでここでは割愛するので、こちらのページを参考にしてください。
後はKibana自体を更新してサービスを起動して終わりです。
sudo yum update kibana --enablerepo=kibana-6.* sudo service kibana start
以上です。