mamori017.log

歴史的クソブログ

Elasticsearchをアップデートしたら起動できなくなったのでKuromojiプラグインを再インストールした

Ubuntuのパッケージを更新したところ、ElasticsearchとKibanaのバージョンが5.6.7にアップデートされていました。 OS再起動ののちElasticsearchとKibanaの起動状態を見てみたところElasticsearchだけ起動していません。

$ sudo service --status-all | grep -e "elastic" -e "kibana"
 [ - ]  elasticsearch
 [ + ]  kibana

www.elastic.co

以前、Elasticsearchを5.0.0から5.4.0にアップデートした時、Kuromojiプラグインがバージョン非対応になり起動できなくなった経緯*1があります。恐らく同事象だと思いElasticsearchのログ(/var/log/elasticsearch/elasticesarch.log)を見たところ、やはりKuromojiプラグインのバージョンが原因のようです。

[2018-02-06T23:49:32,824][ERROR][o.e.b.Bootstrap          ] Exception
java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.6.7]; was designed for version [5.4.0]
    at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:146) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:80) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.7.jar:5.6.7]
[2018-02-06T23:49:32,845][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.6.7]; was designed for version [5.4.0]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[elasticsearch-http://blog.hatena.ne.jp/mamori017/mamori017.hatenablog.com/edit#5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.7.jar:5.6.7]
Caused by: java.lang.IllegalArgumentException: plugin [analysis-kuromoji] is incompatible with version [5.6.7]; was designed for version [5.4.0]
    at org.elasticsearch.plugins.PluginInfo.readFromProperties(PluginInfo.java:146) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Spawner.spawnNativePluginControllers(Spawner.java:80) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:168) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.7.jar:5.6.7]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.7.jar:5.6.7]
    ... 6 more

ログにはインストールされているKuromojiプラグインはElasticsearch 5.4.0用で、 5.6.7は非対応と書かれているのでプラグインを手動で更新します。 プラグインを上書きインストールをしようとするとエラーになったので一旦削除ののち再インストールします。

# 削除
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-kuromoji

# インストール
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

Kuromojiプラグインを再インストール後、Elasticsearchを手動起動したところサービスが立ち上がるようになりました。

$ sudo /etc/init.d/elasticsearch start
[ ok ] Starting elasticsearch (via systemctl): elasticsearch.service.

$ sudo service --status-all | grep "elastic"
 [ + ]  elasticsearch

データ分析基盤構築入門[Fluentd、Elasticsearch、Kibanaによるログ収集と可視化]

データ分析基盤構築入門[Fluentd、Elasticsearch、Kibanaによるログ収集と可視化]

*1:2017/5/7、5.0.0->5.4.0アップデート時に同様の記事を書いていたので削除した。

UbuntuにJenkinsをインストールした

Ubuntuの環境を新しく作ることにしたので手始めにJenkinsをインストールしました。

手順はJenkinsのWikiを参照しました。

Installing Jenkins on Ubuntu - Jenkins - Jenkins Wiki

こちらのページの手順通りにコマンドを実行しましたが、扱いとしては古いようで新しいページが公開されています。

Debian Repository for Jenkins

リポジトリの参照先が異なっていたりはしますが手順としてやることは変わりません。2018/1/29時点だとどちらもバージョン2.89.3がインストールされました。

古いページの手順

# 公開鍵の追加
wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
# パッケージリストにリポジトリを追加
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
# パッケージリストのチェック
sudo apt-get update
# Jenkinsをインストール
sudo apt-get install jenkins

新しいページの手順

# 公開鍵の追加
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# deb https://pkg.jenkins.io/debian-stable binary/ をパッケージリストに追加
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list'
# パッケージリストのチェック
sudo apt-get update
# Jenkinsをインストール
sudo apt-get install jenkins

画面

Unlock Jenkins

$ sudo cat /var/lib/jenkins/secrets/initialAdminPasswordで表示されるアンロック用のパスワードを入力します。 f:id:mamori017:20180126153632p:plain

Customize Jenkins

プラグインはあとでインストールするのでおすすめされている方を選択しました。 f:id:mamori017:20180126153621p:plain

Getting Started

待つ。 f:id:mamori017:20180126153624p:plain

Create First Admin User

管理者ユーザーの設定をします。 f:id:mamori017:20180126153627p:plain

Jenkins is ready!

Jenkinsのインストールが完了しました。 f:id:mamori017:20180126153628p:plain

f:id:mamori017:20180126153630p:plain

Function Appにリクエストクォータの上限値を設定する

Function Appにデプロイしている関数にHTTPリクエストをトリガーとしているものがあるため、 念のためリクエストクォータの上限値を設定することにしました。

docs.microsoft.com

この設定を行うと、1日あたりのリソースの使用量が設定値に到達すると関数が自動的に停止するようになります。 設定するリソースの使用量は、Function Appの利用料金を計算した際に使った値を使用しました。

mamori017.hatenablog.com

Function Appの課金対象となる要素はリソースの使用量と実行回数になります。 ただし、400,000GB秒のリソース使用量と1,000,000回の実行回数をAzureが無料提供してくれているので、 実際の使用量からこの無料提供分の値を引いたものが請求対象となります。 とりあえず今回は実行回数1,000,000回を基準に設定することにしました。

対象となる関数の平均実行時間は1.564秒、リソースの使用量は128MBになるので、計算するとリソースの使用量は195,500GB秒になります。 リソース使用量は無料提供分の400,000GB秒以内で収まるので課金対象とならないはずです。

- リソースの使用量(秒):1,000,000(回) * 1.564(秒) = 1,564,000(秒)
- リソースの使用量(GB):128MB / 1024MB = 0.125GB
- リソースの使用量(GB秒):1,564,000(秒) * 0.125(GB) = 195,500(GB秒)

リソースの使用量を195,500(GB秒)とすると、1ヶ月31日として1日あたり6,306.45(GB秒)を上限にできます。

この値をFunction Appの設定にある「日ごとの使用量クォータ (GB - 秒) 」の項目に入力し「クォータの設定」ボタンをクリックすることで上限値の設定が完了します。 (対象としている関数は別に停止しても問題なく、実際のリソースの使用量は月1,000GB秒程度あれば運用できるものなので深く考えず設定しています。)

f:id:mamori017:20180123174228p:plain

試しに適当な値を日ごとの使用量クォータに入力して関数を呼んでみると403エラーが返ってきました。

f:id:mamori017:20180123172442p:plain

コンソール上でも関数が停止していることが確認できます。

f:id:mamori017:20180123173204p:plain

停止した関数は手動で起動するか、日本時間の朝9時になると起動するようです。