6
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu18へのElasticStackインストール

Last updated at Posted at 2018-08-13

概要

久々にElasticsearch達をインストールしたら思わずハマったので、記録に残します。

以下の想定となっています。

  • OS
    • Ubuntu18
  • ElasticStack
    • Elasticsearch 6.3.2
    • Kibana 6.3.2
    • Logstash 1:6.3.2-1
      • リポジトリを足して入れる。アップデートしやすい、はず?

エグゼクティブサマリ(?)

  • Javaを入れる場合、openjdk-8-jdk を使う事
    • openjdk-11-jdkやdefault-jdk(中身はopendjk-11)を利用すると、 logstashのインストール に失敗します。
  • JAVA_HOME、なくても動くっぽい
  • リポジトリ追加する方法の方が、安全だしアップデートしやすそう

インストール

Javaのインストール

まずはJavaを入れる必要がある。

  • openjdk-11-jdk を入れると、Elasticsearch, Kibana までは問題ないが、logstashを入れる際に /etc/logstash/..にアクセス権がない のようなエラーメッセージで、 apt-get install ができない。

openjdk-11の中身は10.0.1系のようだが、少なくとも「リポジトリを使ったlogstashのインストール」では問題が出るようだ。tar.gz版は試していませんので、問題ない可能性もあります。
サポートマトリックスを見ると、Logstashはopenjdk9以降には対応していないですね。Jun Ohtaniさん、指摘をありがとうございます!

なので、openjdk8を使いましょう!(これが言いたくてこの記事書いた)

install-Java
$ sudo apt-get install openjdk-8-jdk
$ java -version

Elasticsearchのインストール

apt-get install でエラーが出る場合は、Javaを入れていないはず。

install-elasticsearch
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# add configuration
network.host:0.0.0.0
$ sudo systemctl start elasticsearch
$ systemctl status elasticsearch
$ sudo systemctl enable elasticsearch

一応稼働確認として curl "http://localhost:9200/" でアクセスができることを確認。
IPv6が有効な場合、503が返ってアクセスできていないことがある。その際は、IPv6無効とか、調整が必要。

ipv6Disable
$ sudo vi /etc/sysctl.conf
# add configuration
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ sudo sysctl -p
(うまく行かないようなら、reboot)

Kibanaのインストール

これは特にエラーは出ないはず。インストール直後のタイミングによっては503が返るので、その場合はealsticsearchがきちんと動いていることを確認する。

install-kibana
$ sudo apt-get install kibana
$ sudo vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"
$ sudo systemctl start kibana
$ systemctl status kibana
$ sudo systemctl enable kibana

確認は、http://localhost:5601/などへのアクセス。

Logstashのインストール

インストール時にエラーが出る場合、openjdk-8-jdkを使っているか(openjdk-11やdefault-jdkを使っていない事)を確認する。
パッケージでjavaを入れると JAVA_HOME環境変数 が無いが、動く。

install-logstash
$ sudo apt-get install logstash
$ sudo systemctl start logstash
$ systemctl status logstash
$ sudo systemctl enable logstash

syslogを受ける場合

syslogを受信する場合は logstashが 514/UDP のポートにbindされる必要が有る。
しかしながら、非rootが特権ポートにプログラムをbindすることができないため、起動後に 514/UDP のbindが失敗する。

[YYYY-MM-DDTHH:MM:SS,NNN][INFO ][logstash.inputs.udp      ] Starting UDP listener {:address=>"0.0.0.0:514"}
[YYYY-MM-DDTHH:MM:SS,NNN][ERROR][logstash.inputs.udp      ] UDP listener died {:exception=>#<SocketError: bind: name or service not known>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:200:in `bind'", "/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-udp-3.3.4/lib/logstash/inputs/udp.rb:116:in `udp_listener'", "/usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-udp-3.3.4/lib/logstash/inputs/udp.rb:68:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:409:in `inputworker'", "/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:403:in `block in start_input'"]}
[YYYY-MM-DDTHH:MM:SS,NNN][WARN ][logstash.runner          ] SIGTERM received. Shutting down.

回避策は2つ有り、1. rootでlogstashを動かす、2. iptablesで別ポート(5514/UDP等)に転送してしまう。

  • logstashをrootで動かす
    • パッケージの場合、Ubuntuなどの場合は/etc/systemd/system/logstash.service などに起動ユーザが「logstash」とされている。その為、これを User=root などとして、root起動に変更する
    • logstashがroot権限で動くので、一義的なリスクは増加する可能性あり
  • iptables
    • スマートじゃないよね。

終わりに

今後のJavaはどうなるかよくわからないが、現時点ではopenjdk-8 を使うのが安全。
Logstashがopenjdk-11で動くなら移行してもいいかもしれない。

また、たまたま私の環境とタイミングでopenjdk-11では動かなかっただけかもしれないので、まずはjdk11でトライしてみるのが良いかもしれないです。

  • apt-get remove openjdk-11-jdk openjdk-11-jre ; apt autoremove で消しされる。その後 $ java がエラーになれば、消え去ったはず(ゴミファイルは気にしない)。
6
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?