Elastic Stackを6.3.2に更新する

Elastic Stack

FreeBSDのportsでElastic Stackを6.2系から6.3系に更新してみた。それなりに変わっているので油断せずに更新した方が良い筈。

更新

# service kibana stop    #Kibanaは必ず停める
# service logstash stop  #Logstash はここで停めずに最後に再起動でも良いかも
# service elasticsearch  #elasticsearch はここで停めずに最後に再起動でも良いかも

# portupgrade elasticsearch
# portupgrade logstash
# pkg delete kibana6     #Kibanaはデータを持ってないので削除するのは躊躇不要
# pkg delete node6       #Kibana6.3は Node.js 8を使うのでNode.js 6を削除
# cd /usr/ports/www/node8 
# make install
    たとえばLibreSSLなどを利用している場合はconfigオプションでBUNDLED_SSLにチェックすること
# cd /usr/ports/textproc/kibana6
# make install

# 以下3行はやった方がよさ気
# cd /usr/local/lib/elasticsearch/config
# mv jvm.options jvm.options.BAK
# cp jvm.options.sample jvm.options   #必要に応じて修正 (-Xmsや-Xmxなど)

# 以下3行は不要かな
# cd /usr/local/etc/logstash
# mv jvm.options jvm.options.BAK
# cp jvm.options.sample jvm.options   #必要に応じて修正

# portupgrade beats     #このホストでBeatsを利用しているなら合わせて更新

X-Packの更新

Elasticsearch 6.3.2からX-Packのインストールは不要になったらしい。ただし、elasticsearchを更新した場合は旧バージョンのX-Packが残ったままになっているのでそれを削除してやる必要があるみたい。
LogstashとKibanaはおそらく旧X-Packを削除しなくて良さそう。
これまでElastic Stackの更新を行おうとするとそれぞれのX-Packの更新で時間を取られて大きなダウンタイムが発生していたけど今後は簡単に素早く更新出来そう。

# /usr/local/lib/elasticsearch/bin/elasticsearch-plugin list           #インストール済みのプラグインを確認する
# /usr/local/lib/elasticsearch/bin/elasticsearch-plugin remove x-pack    #X-Packを削除する

# /usr/local/lib/elasticsearch/bin/elasticsearch-plugin install x-pack      #仮にX-Packをインストールしようとしても弾かれる
ERROR: this distribution of Elasticsearch contains X-Pack by default

# /usr/local/logstash/bin/logstash-plugin install x-pack      #仮にX-Packをインストールしようとしても弾かれる
Logstash now contains X-Pack by default, there is no longer any need to install
it as it is already present.
ERROR: Invalid pack for: x-pack, reason: x-pack not an installable plugin, message: x-pack not an installable plugin

# /usr/local/www/kibana6/bin/kibana-plugin install x-pack      #仮にX-Packをインストールしようとしても弾かれる
Plugin installation was unsuccessful due to error "Kibana now contains X-Pack by default, there is no longer any need to install it as it is already present."

他のプラグインを利用している場合はそれらも必要に応じて更新する。

設定ファイルの変更

/usr/local/etc/logstash/logstash.yml (1行変更)
xpack.monitoring.elasticsearch.url: ["http://es1:9200", "http://es2:9200"]

行頭の#を取るのとelasticsearchが動いているホスト名に変更。これはやっておかないとKibanaのモニタリングにLogstashが表示されない筈。

サービスの再起動・起動

# service elasticsearch restart    #再起動
# service logstash restart         #再起動
# service kibana start             #起動
# service metricbeat restart       #再起動  以下2行はbeatsを更新した場合且つ稼働しているとする
# service filebeat restart         #再起動

それぞれログを見てエラーが出ていないこと、勝手に停止しないことを確認する。
しばらく監視してメモリを食い尽くされないことも確認しておかないと怖いよ。

Kibana モニタリング
KibanaのMonitoringにLogstashが表示されることも確認しておく。

Beats

6.2系から6.3系に変更したところ、hostの出力がhost:hogeではなくhost: { name: hoge } という嫌らしい構造に変わっている。KibanaのVisualizerのGUIによるFilter追加でひっかからなくて困るのでbeat.hostnameに切り替えた方が良さげ。ただし、beatsの出力やLogstashのFilterでbeat.hogeをdropしていないこと。dropしているなら要修正。
なお、beats7.0-alphaではhost:hogeに戻ってるような・・・(自分でビルドした分で確認)

関連記事: