背景
セキュリティの厳しい会社だとインターネットの接続が規制されている場合があります。そんな環境でも ELK (Elasticsearch + Logstash + Kibana) を使いたいという事があったのでメモを残しておきます。
このメモはHow to install Logstash on a Windows server with Kibana in IIS.を参考にしました。このメモでは IIS を使いませんが、それ以外のほとんどはこのページを参考にしています。
なお、おおむねメモを書き終わった後に気づきましたが、ファイルが直接ダウンロードできないことと Elasticsearch プラグインのインストール以外、インターネット接続でもそうでなくても手順に差はありませんでした…。
インストール
インストール環境
- Windows 7 SP1 64bit 版
- ELK は
C:\srv\
に配置する前提です。適宜読み換えてください。
準備
以下のファイルをインターネット接続環境でダウンロードし何らかの方法で対象のマシンに保存します。
-
Java SE Development Kit 8
- jdk-8u45-windows-x64.exe
-
Elasticsearch 1.6.0
- elasticsearch-1.6.0.zip
-
Logstash 1.5.1
- logstash-1.5.1.zip
-
Kibana 4.1.0
- kibana-4.1.0-windows.zip
-
nssm 2.24 ※ Windows のサービスを作成するためのヘルパーツール
- nssm-2.24.zip
保存したファイルを以下の様なディレクトリ構造で展開します。
Java 8 はインストーラを起動してインストールします。デフォルトで JDK は C:\Program Files\Java\jdk1.8.0_45
にインストールされます。
C:\srv\
└ elasticsearch\
└ bin 等
└ kibana\
└ bin 等
└ logstash\
└ bin 等
└ nssm\
└ win64 等
Elasticsearch のインストール
環境変数 JAVA_HOME
に JDK のインストール先を指定します。
コントロールパネル→システムとセキュリティ→システム→システムの詳細設定→詳細設定タブ→環境変数ボタン
と辿ってゆき、システム環境変数の新規を押下して
- 変数名: JAVA_HOME
- 変数値: C:\Program Files\Java\jdk1.8.0_45
と入力して OK を押下します。
もしクラスタ構成を組むつもりがならば C:\srv\elasticsearch\config\elasticsearch.yml
を開いて
cluster.name: [任意のクラスタ名]
を設定すると良いかもしれません。他に負荷分散も Elasticsearch のみで構成出来ます。詳細はLoad Balancing Across Multiple Elasticsearch Nodesを参照してください。
この時点でコマンドプロンプトを開き C:\srv\elasticsearch\bin
に移動して elasticsearch
と打つと Elasitcsearch が起動し、http://localhost:9200
でアクセスできるようになりますが、ここは Windows サービスに登録し、OS 起動時に Elasticsearch も自動起動するようにします。
Windows サービスに登録するには管理者権限でコマンドプロンプトを開き C:\srv\elasticsearch\bin
に移動して
service install
と打ちます。以下のようになると成功です。
この時点ではまだ起動もしていないので
service manager
と打ってサービスマネージャを開き、Start ボタンを押下します。また、Startup type を Automatic にして OS 起動時に自動起動するようにします。
http://localhost:9200 にアクセスして JSON 形式のレスポンスがあることを確認しましょう。以上で Elasticsearch のインストールは完了です。
なお、プラグインのインストールについてはこのページ下部の [Elasticsearch Plugin のインストール](Elasticsearch Plugin のインストール)に記載しています。
Kibana のインストール
Kibana はコマンドプロンプトで C:\srv\kibana\bin
に移動して
kibana
と打てば起動します。http://localhost:5601 にアクセスすれば Kibana をすぐに使うことができます。
Kibana を Windows サービスに登録するには nssm を使います。管理者権限でコマンドプロンプトを開き C:\srv\nssm\win64
に移動します。
nssm install kibana
として登録画面を表示し、
- Application タブ
- Path: C:\srv\kibana\bin\kibana.bat
- Startup directory: C:\srv\kibana\bin
- Details タブ
- Display name: Kibana
- Startup type: Automatic
- Dependencies タブ
- This service depends on the following system components: elasticsearch-service-x64
と入力して Install service ボタンを押下してインストールを完了します。
Logstash (Shipper) のインストール
本来なら Shipper と Elasticsearch の間には Redis をかませた方が良いようですが、このメモでは割愛します。
また、設定ファイル *.conf
は C:\srv\logstash\config
を作成して、そこに配置することにします。
例えば以下の様な内容の logstash-sample.json
を用意します。
input { stdin { } } output { elasticsearch { host => localhost } }
この設定ファイルで Logstash を起動するにはコマンドプロンプトを開き C:\srv\logstash\bin
に移動して
logstash agent -f ..\config\logstash-sample.conf
と打つと、以下のような画面で止まります。
ここで試しにコマンドプロンプト画面で test
と入力すると Elasticsearch にもその内容が反映されます。確認のため http://localhost:9200/_search?pretty にアクセスすると以下の様な結果が返ります。
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2015.06.18",
"_type" : "logs",
"_id" : "AU4HK92CYE_QZ5I4aXei",
"_score" : 1.0,
"_source":{"message":"test\r","@version":"1","@timestamp":"2015-06-18T14:56:31.678Z","host":"Dev-PC"}
} ]
}
}
終了するには Ctrl-C
を押下した後に Y
を入力してください。
こうした Shipper を Windows サービスに登録するには
logstash agent -f ..\config\logstash-sample.conf
という内容の run.bat
を用意して C:\srv\logstash\bin
に保存します。そうしたら管理者権限のコマンドプロンプトから C:\srv\nssm\win64
に移動して
nssm install logstash
として登録画面を表示し、
- Application タブ
- Path: C:\srv\logstash\bin\run.bat
- Startup directory: C:\srv\logstash\bin
- Details タブ
- Display name: Logstash
- Startup type: Automatic
- Dependencies タブ
- This service depends on the following system components: elasticsearch-service-x64
と入力して Install service ボタンを押下してインストールを完了します。
※このメモの設定ファイルだと標準入力を Input とするためサービス化しても意味がありませんが、やり方としてはこのようになります。設定ファイルは適宜変更してください。
補足: Logstash の使用メモリを変更する
Logstash の使用メモリを変更するには C:\srv\logstash\bin\logstash.bat
を開いて SETLOCAL
の下部に
set LS_MIN_MEM=256m
set LS_MAX_MEM=1g
という記述を追加してください。
Elasticsearch Plugin のインストール
ローカル上のファイルからプラグインをインストールするにはコマンドプロンプトを開き C:\srv\elasticsearch\bin
に移動して
plugin --url file:///path/to/plugin --install plugin-name
と打ちます。公式プラグインリストはここにあります。例えば Elasticsearch Head Plugin をインストールするには GitHub から elasticsearch-head-master.zip をダウンロードして端末に何らかの方法で保存し、
plugin --url file:///C:/Users/Dev/Downloads/elasticsearch-head-master.zip --install elasticsearch-head
と打ちます。これで http://localhost:9200/_plugin/head/ でアクセスできるようになります。ポイントはパスに含まれるバックスラッシュ "" をスラッシュ "/" に置き換えているところでしょうか。