Logstashの導入方法
実行環境
- OS:Ubuntu 16.04 LTS
- JDK:Open JDK 8
事前準備
- Elasticsearchが構築済みであること
- JDKがインストール済みであること
手順
- Logstashのダウンロード
- Logstashのインストール
- 設定ファイルの準備
- Logstashの起動
- Logstashの停止
1. Logstashのダウンロード
下記のサイトよりLogstashのダウンロードを行います
ダウンロードサイト:https://www.elastic.co/jp/downloads/logstash
本手順ではcURLを使ってダウンロードを行っています
ダウンロードコマンド例:curl -k -L -O "https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.deb"
2. Logstashのインストール
ダウンロードしたLogstashをインストールします
インストールコマンド例:sudo dpkg -i logstash-5.1.1.deb
3. 設定ファイルの準備
3-1. 設定ファイルの形式と配置場所
Logstashの受け口の指定や送られてくるデータ整形の形式などを定義します
ファイル形式は下記のように.conf
形式で作成します
Logstashファイル例:logstash.conf
設定ファイルの記載が終わったら~/logstash/conf.d
以下に作成した設定ファイルを配置します
本環境においては下記の場所に配置を行いました
設定ファイル配置場所:/etc/logstash/conf.d/
3-2. 設定ファイルの記載内容
設定ファイルには3つのプラグインに関する記載を行っていきます
プラグイン名 | 説明 |
---|---|
input {} | Logstashへの入力に関するプラグインの記載を行います |
filter {} | Logstashに入ってきたデータのフィルタリングに関するプラグインの記載を行います |
output {} | Logstashから外部への出力に関するプラグインの記載を行います |
今回はFileBeatからデータの受け取りを行い、その受け取ったデータを整形しElasticsearchへデータを出力することを想定し、下記のような設定ファイルを作成しました
logstash.conf
input {
# inputのプラグインに存在する「beats」を用いて、受け口のIPアドレスとポートを指定します
beats {
host => "192.168.1.1"
port => 5044
}
}
filter {
# filterのプラグインに存在する「grok」を用いて、送られてきたデータのパースを行っています
# 今回送られてくるデータの想定例:{"id":"123ID","order_number":1}
grok {
match => { "message" => "\{\"id\":\"%{WORD:ID}\",\"order_number\":%{NUMBER:order}\}" }
}
# filterのプラグインに存在する「date」を用いて、日付の形式をパースを行っています
date {
match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
}
}
output {
# outputのプラグインに存在する「elasticsearch」を用いて、出力先のelasticsearchの指定とindexの指定を行っています
elasticsearch {
hosts => [ "localhost:9200" ]
index => "Test-%{+YYYYMMdd}"
}
}
※ 各プラグインの種類や属性などの詳しい情報は公式ドキュメントをご参照ください
4. Logstashの起動
設定ファイルの配置までが完了したら、下記コマンドでLogstashを起動します
本環境おいてはあらかじめElasticsearchの起動を行っておく必要があります
起動コマンド:sudo service logstash start
また、logstashが起動しているかどうかは下記コマンドにて確認することができます
確認コマンド:sudo service logstash status
正常に起動している場合、「active」や「running」といった応答が返ります
5. Logstashの停止
下記コマンドでLogstashの停止を行うことができます
停止コマンド:sudo service logstash stop