Elasticsearch Logstash Kibanaの環境構築

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

「よーし、Elastic Stackがどんなものかだいたい理解できたから、インストールしてみよ!…あれ、なんかインストール方法もいっぱいあるみたい。どれを選べばいいのかな?」

 もふもふちゃん、インストールで詰まってしまったようです。公式サイトからダウンロードでzipファイルを落としてくることができますが、他のやり方もあるようです。状況に合っている1番いいやり方を選択したいですよね。どのようなインストール方法があるか、一緒に見てみましょう。この章では各OSごとのインストール方法を紹介していますので、自分の環境の箇所を参照して下さい。

インストールの順番

 インストールの前に、どのツールからインストールするかを決めておきましょう。データの流れを考えると、Elasticsearch→Logstash(Beats)→Kibanaの順にインストールすることをお勧めします。

 なぜなら、 LogstashやBeatsで取りこんだデータをElasticsearchに連携するので、先にデータの連携先であるElasticsearchをセットアップしておかないと正しく動作しない可能性があるためです。

データ連携の流れ

 また、Kibanaは起動前にElasticsearchのURLを指定する必要があります。そのため、ElasticsearchがセットアップされていないとKibanaは動作しません。今回は各ツールごとに完結した動作確認方法を採りますが、万が一に備えるという意味ではデータの連携先→連携元→データ閲覧ツールという流れでセットアップした方が良いでしょう。

事前準備

 Elasticsearch、Logstashの起動にはJava(バージョン8以上)が必要です。次に示すコマンドでJavaのインストール状態を確認して下さい。

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社公式のリポジトリから行う必要があります。

Javaのインストール(Linux系の場合)

$ 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ファイルを解凍します。

zipファイルの解凍

# 必要であれば
$ unzip Elasticsearch-5.4.0

rpm パッケージを用いたインストール(Elasticsearch)

インストール用PGP Keyの入手

 Elastic StackのパッケージはPGP(Pretty Good Privacy)を用いて暗号化されています。使用にはPGP鍵の入手が必要なため、Elastic社が提供する署名済みの鍵または公開されている署名された鍵をダウンロードします。

PGP鍵の入手

$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

RPMリポジトリからインストールする場合

 /etc/yum.repos.d配下にelasticsearch.repoを作成し、リポジトリ登録を行います。その後、yumコマンドを用いてインストールします(RedHat系Linuxの場合)。バージョン指定しない場合、最新版のElasticsearchがインストールされます。

/etc/yum.repos.d/elasticsearch.repoの作成

$ 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

Elasticsearchのインストール

$ sudo yum install elasticsearch

RPMパッケージをダウンロードしてインストールする場合

 wgetコマンドを用いてパッケージをダウンロードし、rpmコマンドでインストールを行います。明示的にバージョンを指定したい場合、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社が提供する署名済みの鍵または公開されている署名された鍵をダウンロードします。

PGP鍵の入手

$ 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

elasticsearchのインストール

$ sudo apt-get update && sudo apt-get install elasticsearch

debパッケージをダウンロードしてインストールする場合

 wgetコマンドを用いてパッケージをダウンロードし、dpkgコマンドでインストールを行います。明示的にバージョン指定したい場合、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オプションを利用すると、バックグラウンドで実行できます。

Elasticsearchの起動コマンド

# ただ実行する場合
$ bin/elasticsearch
 
# -dオプションでバックグラウンド実行する場合
bin/elasticsearch -d

Elasticsearchの起動(パッケージからインストールした場合)

 まず、serviceコマンドとsystemdコマンドのどちらで起動すれば良いか確かめます。

サービスの起動コマンドを確認する

$ ps -p 1

 serviceコマンドを使用する場合、次のコマンドでElasticsearchサービスを起動します。

Elasticsearchの起動・停止(serviceコマンド)

sudo -i service elasticsearch start | status | stop | restart

 プロセスの自動起動・自動停止設定は次のコマンドを用いて行います。

サーバ起動時にElasticsearchサービスが自動で立ち上がるように設定

$ sudo update-rc.d elasticsearch defaults 95 10

 systemctlコマンドを使用する場合、次のコマンドでElasticsearchサービスを起動します。

Elasticsearchの起動・停止(systemdコマンド)

$ sudo systemctl start elasticsearch.service

サーバ起動時にElasticsearchサービスが自動で立ち上がるように設定

$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable elasticsearch.service

動作確認

 Elasticsearchへアクセスし、返り値があるか確認します。返り値が帰ってくれば、正常にインストールできています。

# 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コマンドを打ち込んだのと同様の結果が返ってくれば正常に起動しています。例としてブラウザの画像を載せましたので、参考にして下さい。

ブラウザ上でElasticsearchのURLにアクセスした結果

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メルマガ会員のサービス内容を見る

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