eviry tech & service blog

「株式会社エビリー」の社員ブログです。弊社では、クラウド型動画配信サービス「millvi」、ソーシャル動画データ及び分析サービス「kamui tracker」、YouTube総合メディア「かむなび」を開発・提供しています。https://eviry.com/

ElasticsearchとKibanaを更新する

これは旧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)

参考

更新手順

まずは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

以上です。