Elasticsearch Logstash Kibanaの環境構築
「よーし、Elastic Stackがどんなものかだいたい理解できたから、インストールしてみよ!…あれ、なんかインストール方法もいっぱいあるみたい。どれを選べばいいのかな?」
もふもふちゃん、インストールで詰まってしまったようです。公式サイトからダウンロードでzipファイルを落としてくることができますが、他のやり方もあるようです。状況に合っている1番いいやり方を選択したいですよね。どのようなインストール方法があるか、一緒に見てみましょう。この章では各OSごとのインストール方法を紹介していますので、自分の環境の箇所を参照して下さい。
インストールの順番
インストールの前に、どのツールからインストールするかを決めておきましょう。データの流れを考えると、Elasticsearch→Logstash(Beats)→Kibanaの順にインストールすることをお勧めします。
なぜなら、 LogstashやBeatsで取りこんだデータをElasticsearchに連携するので、先にデータの連携先であるElasticsearchをセットアップしておかないと正しく動作しない可能性があるためです。
また、Kibanaは起動前にElasticsearchのURLを指定する必要があります。そのため、ElasticsearchがセットアップされていないとKibanaは動作しません。今回は各ツールごとに完結した動作確認方法を採りますが、万が一に備えるという意味ではデータの連携先→連携元→データ閲覧ツールという流れでセットアップした方が良いでしょう。
事前準備
Elasticsearch、Logstashの起動にはJava(バージョン8以上)が必要です。次に示すコマンドでJavaのインストール状態を確認して下さい。
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
もしインストールされていない場合、次のコマンドを参考にインストールを行って下さい。(Ubuntu等Debian系Linuxではインストールコマンドは別となりますので注意してください。)このとき、JavaのダウンロードはOracle社公式のリポジトリから行う必要があります。
$ sudo yum install java-1.8.0-openjdk-devel
Elasticsearchのインストール
先にも述べましたが、インストール方法は複数準備されています。導入の目的とご自身の環境に合わせてベストなものを選択すると良いでしょう。
とにかく使ってみたい場合(Linux):zipファイル・tar.gzファイル
「とにかくどんなものか試してみたい!」という場合は、zipファイルを公式サイトからダウンロードしましょう。任意のフォルダにzipファイルを解凍するだけでインストールが完了するため、導入は簡単です。ただし、サービス起動用コマンドが付属しないため、長期的な運用を考えている場合には向かない方法です。
ちゃんと運用もしたい場合(RedHat系Linux):rpmパッケージ
公式にElasticから提供されているrpmパッケージを利用した場合、サービス起動用コマンドが自動的に設定されます。また、各種設定ファイルやディレクトリ構造はLinuxのディレクトリ形式に合わせて構築されます。実際に運用を検討している場合、初めからこちらの手順を選んでおけば環境を再構築する必要がありません。
ただし、RHEL5系はこのインストール方法をサポートしていないため注意が必要です。
ちゃんと運用もしたい場合(Debian系Linux):debパッケージ
こちらもrpmパッケージを利用する方法と同様です。違いはUbuntu系のLinux用パッケージを使うか、RedHat、OpenSUSE系のLinux用パッケージを使うかだけです。
とにかく使ってみたい、かつDocker実行環境がある場合:Dockerコンテナ
Elastic StackをDocker社が利用していることもあってか、公式にElasticからDockerイメージが提供されています。手っ取り早く試してみたい場合、かつDockerコンテナの実行環境がある場合は素直にコンテナを利用した方が良いでしょう。ただし、上記の「ちゃんと運用もしたい場合」などへの移行を考えている場合、構成がかなり変わるので初めからパッケージ利用での環境構築方法を選択してください。
また、Elasticsearchはディスク性能の影響を大きく受けます。Dockerコンテナ上ではあまり性能が出ないため、大量のデータを取り扱う予定がある場合はコンテナ利用を避けるべきでしょう。
Puppet、Chef、Ansibleの実行環境がある場合:GitHubのレシピを利用
公式にElasticから各ツールのレシピが共有されています。GitHubにアップロードされているため、そちらを用いて環境を構築することも可能です。
Windows/Mac上に構築する場合:zipファイル
Windowsの場合、インストール方法はzipファイル一択となります。Macはbrewコマンドを用いることでインストールすることもできますが、Elastic公式ではサポートされていないようなので、今回はインストール方法から対象外としています。
今回はこの中からzipファイル・rpmパッケージ・debパッケージを用いたインストール方法を紹介します。
zipファイルを用いたインストール(Elasticsearch)
zipファイルを用いたインストールの場合、OSが違っていても基本的な手順は同じです。
zipファイルのダウンロード
Elasticの公式サイトにアクセスし、zipファイルをダウンロードします。
https://www.elastic.co/jp/downloads/elasticsearch
作業用ディレクトリを作成(好みで良いです)
アンインストールを簡単にするために作業用ディレクトリを作成すると良いでしょう。
$ mkdir Elastic_Stack
zipファイルの解凍
ディレクトリ内にダウンロードしたzipファイルを解凍します。
# 必要であれば
$ unzip Elasticsearch-5.4.0
rpm パッケージを用いたインストール(Elasticsearch)
インストール用PGP Keyの入手
Elastic StackのパッケージはPGP(Pretty Good Privacy)を用いて暗号化されています。使用にはPGP鍵の入手が必要なため、Elastic社が提供する署名済みの鍵または公開されている署名された鍵をダウンロードします。
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
RPMリポジトリからインストールする場合
/etc/yum.repos.d配下にelasticsearch.repoを作成し、リポジトリ登録を行います。その後、yumコマンドを用いてインストールします(RedHat系Linuxの場合)。バージョン指定しない場合、最新版のElasticsearchがインストールされます。
$ sudo touch /etc/yum.repos.d/elasticsearch.repo
$ sudo vi /etc/yum.repos.d/elasticsearch.repo
# 下記を記載する
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
$ sudo yum install elasticsearch
RPMパッケージをダウンロードしてインストールする場合
wgetコマンドを用いてパッケージをダウンロードし、rpmコマンドでインストールを行います。明示的にバージョンを指定したい場合、rpmパッケージからインストールすると良いでしょう。
# パッケージの取得
$ wget https://artifacts.elastic.co/downloads/elasticsearch/ elasticsearch-5.4.0.rpm
sha1sum elasticsearch-5.4.0.rpm
# Elasticsearchのインストール
$ sudo rpm --install elasticsearch-5.4.0.rpm
debパッケージを用いたインストール(Elasticsearch)
インストール用PGP Keyの入手
debパッケージもPGPを用いて暗号化されています。使用にはPGP鍵の入手が必要なため、Elastic社が提供する署名済みの鍵または公開されている署名された鍵をダウンロードします。
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
APTリポジトリからインストールする場合
はじめに、Elasticsearchの動作に必要なapt-transport-httpsパッケージをインストールします。
$ sudo apt-get install apt-transport-https
次にElastic Stackのaptリポジトリを/etc/apt/sources.list.d/に登録し、apt-getコマンドを用いてインストールします。バージョン指定しない場合、最新版がインストールされます。
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
debパッケージをダウンロードしてインストールする場合
wgetコマンドを用いてパッケージをダウンロードし、dpkgコマンドでインストールを行います。明示的にバージョン指定したい場合、dpkgパッケージからインストールすると良いでしょう。
# パッケージの取得
$ wget https://artifacts.elastic.co/downloads/elasticsearch/ elasticsearch-5.4.0.deb
sha1sum elasticsearch-5.4.0.deb
# Elasticsearchのインストール
sudo dpkg -i elasticsearch-5.4.0.deb
Elasticsearch起動前の設定項目
どのインストール方法をとった場合でも、事前に設定するべき項目とElasticsearchの起動方法は変わりません。
メモリ使用率の変更
ElasticsearchはJavaで動くアプリなのですが、最大ヒープサイズ(Xms)は物理メモリの50%以下である必要があります。メモリが50%以上を超えてしまう場合、Elasticsearchプロセスが立ち上がりません。ヒープサイズはjvm.optionsで設定します。(rpmパッケージかdebパッケージを用いてインストールした場合、/etc/elasticsearch下に配置されています。)
-Xmsは初期ヒープサイズの設定を行い、-Xmxでは最大ヒープサイズの設定を行います。
サーバの物理メモリが4GBであれば、2GBで設定しておくと良いでしょう。メガバイトを指定する場合は「-Xms512m」と設定します。
$ $ sudo vim /etc/elasticsearch/jvm.options
# 22・23行目を変更
19 # Xms represents the initial size of total heap space
20 # Xmx represents the maximum size of total heap space
21
22 -Xms2g
23 -Xmx2g
Elasticsearchの動作確認
Elasticsearchの起動(zipファイルでインストールした場合)
binディレクトリ下にあるElasticsearchスクリプトを実行し、サービスを起動します。OSがWindowsの場合、Elasticsearch.batを実行します。
起動コマンドは次の通りです。-dオプションを利用すると、バックグラウンドで実行できます。
# ただ実行する場合
$ bin/elasticsearch
# -dオプションでバックグラウンド実行する場合
bin/elasticsearch -d
Elasticsearchの起動(パッケージからインストールした場合)
まず、serviceコマンドとsystemdコマンドのどちらで起動すれば良いか確かめます。
$ ps -p 1
serviceコマンドを使用する場合、次のコマンドでElasticsearchサービスを起動します。
sudo -i service elasticsearch start | status | stop | restart
プロセスの自動起動・自動停止設定は次のコマンドを用いて行います。
$ sudo update-rc.d elasticsearch defaults 95 10
systemctlコマンドを使用する場合、次のコマンドでElasticsearchサービスを起動します。
$ sudo systemctl start elasticsearch.service
$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable elasticsearch.service
動作確認
Elasticsearchへアクセスし、返り値があるか確認します。返り値が帰ってくれば、正常にインストールできています。
$ curl -XGET 'localhost:9200/?pretty'
{
"name" : "kchQuTP",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "osGyfX3LRK6z1-AqH1hJrQ",
"version" : {
"number" : "5.4.0",
"build_hash" : "780f8c4",
"build_date" : "2017-04-28T17:43:27.229Z",
"build_snapshot" : false,
"lucene_version" : "6.5.0"
},
"tagline" : "You Know, for Search"
}
もしくはGoogle ChromeなどのWebブラウザ上でElasticsearchのURLにアクセスし、CURLコマンドを打ち込んだのと同様の結果が返ってくれば正常に起動しています。例としてブラウザの画像を載せましたので、参考にして下さい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- データを集めて可視化しよう(Beatsを使って情報を集めてみる)
- オフラインマルチ(ウイルス)スキャナ「Malice」「IRMA」を使ってみよう
- トラブルシューティング
- データを集めて可視化しよう(Twitterのつぶやき履歴編)
- スローログの集計に便利な「pt-query-digest」を使ってみよう
- Elastic Stackって何?
- サンドボックス解析によるマルウェア対策ツール「cuckoo」を使ってみよう
- Elasticsearchを開発するElastic、最新バージョン5.0とElastic Stackを解説
- Kubernetes環境を構築して、実際にコンテナを動かしてみよう
- 「Ubuntu」のパッケージ管理を学ぼう