トラブルシューティング

2018年6月14日(木)
石井 葵
【誰でも簡単にログ分析!OSSのBIツールElastic Stack解説書!】 株式会社インプレスR&Dより発行された「Elastic Stackで作るBI環境 誰でもできるデータ分析入門」の立ち読みコーナー第8回です

 最後にElastic Stackを扱っていてよく遭遇するトラブルと、その解決方法をまとめて紹介します。ちなみに「特に環境構築はうまくいかないことが多いから、時間に余裕を持った方がいいかもねー」と、もふもふちゃんは言っていました。

Elasticsearchが起動しない

Elasticsearchが起動しない

$ sudo service elasticsearch start
Starting elasticsearch: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

 このエラーが出た場合、Javaに割り当てるメモリが不足しています。ElasticsearchはJavaで動くプロセスですが、割り当てられているメモリの半分以下をElasticsearch用として割り当てる必要があります。例えば物理的に4GBメモリを持っているとすると、最大2GBメモリをElasticsearchに割り当てます。

 デフォルトの設定ではElasticsearchに2GBのメモリを割り当てる設定となっていますが、サーバー自体に2GBしかメモリが搭載されていない場合、1GBしかメモリを使うことができずエラーとなります。

 解決策としてメモリを増強するか、jvm.optionsファイルで使用するメモリ量を減らす調整をするかのどちらかとなります。メモリ量を減らす場合、性能も劣化しますのでよく検討して下さい。

jvm.optionsで使用するメモリを512mに変更(物理サーバーのメモリが1GBの場合)

19 # Xms represents the initial size of total heap space
20 # Xmx represents the maximum size of total heap space
 
22 # -Xms2g
23 # -Xmx2g
24 -Xms512m
25 -Xmx512m

Elasticsearchに対してcurlコマンドを発行できない

Elasticsearchに対してcurlコマンドを発行すると、Connection refusedとなる

$ curl -XGET '10.0.0.100:9200/?pretty'
curl: (7) Failed to connect to 10.0.0.100 port 9200: Connection refused

 この場合、ほぼ確実にネットワーク設定が間違っています。Elasticsearchは起動しているので、ネットワークの状態を1つずつ確認しましょう。

①/etc/hosts記載が間違っていないか?

 意外とありがちなのが、サーバーのIPアドレス・hostsの設定ミスです。まずは自ホストにpingコマンドを打ち、応答があるかを確認しましょう。念のため自ホスト名・自分のIPアドレス両方とも応答があるか確認しておくと良いです。

②/etc/hostsでIPv6を使っていないか?

 Elasticsearchは「::1 localhostのようにIPv6が有効になっていると、そちらでcurlアクセスを行います。そのため、/etc/hostsからIPv6記載をコメントアウトするか、curlコマンドを発行するとき引数に「--ipv4」オプションをつけて明示的にIPv4形式で通信する必要があります。

IPv4形式を指定してcurlコマンドを発行する

$ curl -XGET --ipv4 '10.0.0.100:9200/?pretty'

③通信に必要なポートは空いているか?

 通信用ポートが閉じている場合、Elasticsearchにアクセスすることはできません。

 Kibanaはアクセスするポートとしてデフォルトで5601番ポートを使用します。またElasticsearchには9200番を使用しますが、内部的な通信は9300番ポートを利用して行います。

 特にAWS上で動いているサーバーの場合、セキュリティグループ設定でポートが閉じている場合があります。インバウンド設定を再度見直し、必要なポートの通信が許可されているか確認して下さい。

④elasticsearch.ymlに設定した値は間違っていないか?

 それでも解消しない場合、elasticsearch.ymlの「network.host」部分に設定した値が間違っていないか見直して下さい。記載ミスはありませんか?

Elasticsearchサービスをrestartしようとすると、エラーが出力される

Elasticsearchをリスタートすると失敗する

$ sudo service elasticsearch restart
Stopping elasticsearch:                                    [FAILED]
Starting elasticsearch:                                 [  OK  ]
$ sudo service elasticsearch status
elasticsearch dead but subsys locked

 何らかの原因により、Elasticsearchサービスを終了することができないと、このエラーが出力されます。Elasticsearchサービスを終了していない状態でelasticsearch.yml編集した場合、プロセスを管理しているファイルがロックされてしまいエラーとなるようです。コンフィグの編集はサービスを停止した後に行いましょう。

 エラーとなった場合、/var/lock/subsys配下にあるelasticsearchファイルを除去すれば解消することができます。アクセス権の都合上、rootユーザーで作業を実施して下さい。

ロックされているElasticsearchプロセスのファイルを削除

# ll /var/lock/subsys |grep elasticsearch
-rw-r--r-- 1 root root 0 May 21 21:10 elasticsearch
# rm /var/lock/subsys/elasticsearch
rm: remove regular empty file ‘elasticsearch’? y
# service elasticsearch status
elasticsearch is stopped

Kibana画面の様子がおかしい

 KibanaがElasticsearchに対して接続できていない場合、次のような画面が表示されます。

Elasticsearchに対する接続エラー

 このような場合、Elasticsearchが起動しているか・ネットワーク的に問題がないかを確認してください。Kibanaの画面が見えていますので、Kibana側の問題ではありません。

 仮にElasticsearchが起動していなかった場合、LogstashやBeatsもログの送付先がなくなってしまい、エラーとなってプロセス停止します。Elasticsearch復旧後、Kibanaでデータが閲覧できない場合はLogstash・Beatsの復旧を忘れていないか確認して下さい。

 (この項、了)

Elasticsearch、Kibana、Logstashを使用したデータ分析基盤の設計・構築をメインに行なうインフラエンジニアだったが、最近配属が変わって新卒なエンジニアの教育を実施している。新卒エンジニアと一緒にプログラミングやアプリケーション開発手法を学ぶ日々を過ごしている。

連載バックナンバー

運用・管理書籍・書評
第8回

トラブルシューティング

2018/6/14
【誰でも簡単にログ分析!OSSのBIツールElastic Stack解説書!】 株式会社インプレスR&Dより発行された「Elastic Stackで作るBI環境 誰でもできるデータ分析入門」の立ち読みコーナー第8回です
運用・管理書籍・書評
第7回

Dashboard画面を使ってグラフを一覧表示する

2018/6/7
【誰でも簡単にログ分析!OSSのBIツールElastic Stack解説書!】 株式会社インプレスR&Dより発行された「Elastic Stackで作るBI環境 誰でもできるデータ分析入門」の立ち読みコーナー第7回です。
運用・管理書籍・書評
第6回

Visualize画面でデータを可視化する

2018/5/31
【誰でも簡単にログ分析!OSSのBIツールElastic Stack解説書!】 株式会社インプレスR&Dより発行された「Elastic Stackで作るBI環境 誰でもできるデータ分析入門」の立ち読みコーナー第6回です。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています