Logstashサーバーの構築

初めに

こんにちは、パーソルプロセス&テクノロジーの下谷です。
Logstashとは、Elastic社によって作られたオープンソースのデータ収集ツールで、Elasticsearchにデータを取り込む際によく登場してきます。
実はAzure Sentinelでカスタムコネクタを作成する際に、このLogstashを使用する場合があり、私もAzure Sentinelを検証する過程で触りました。
今回はLogstashの特徴と、その構築方法について説明したいと思います。

Logstashの特徴

Logstashは色々な形式のデータの取り込みから、整形、そして、様々なサービスに対して出力することが可能です。
データの取り込み(input)、整形(filter)、出力(output)を1つのパイプラインとして、パイプラインを定義するファイルでそれぞれの設定を記載し、
実行することで、input、filter、output のそれぞれがが定義された内容で順に実行されます。
input、filter、outputはそれぞれ複数のプラグインを持ち、それらをインストールして、パイプラインファイルで使用することで、
様々なサービスからデータを取り込み、また出力することが可能となります。

プラグインの詳細は以下の公式ページを参照してください。
(※個人で作成されたプラグインもありますので、必要に応じてGitHubで検索するのも1つの手段です。)

 

inputプラグイン:https://www.elastic.co/guide/en/logstash/current/input-plugins.html
filterプラグイン:https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
outputプラグイン:https://www.elastic.co/guide/en/logstash/current/output-plugins.html

 

Logstashサーバーの構築

1)事前準備(javaのインストール)

logstashを使用するためには、Java8、Java11、Java15のいずれかが必要です。
また、ここでは記載ませんが、Java15については、別途設定が必要となります。
今回はOpenJDK 11 を使用します。(OSはUbuntu 20.04を使います。)

OpenJDK 11は以下のコマンドを使って、インストールします。

 

sudo apt install openjdk-11-jdk

2)Logstashのインストール

初めにlogstashをインストール可能なリポジトリを持ってくる必要があるので、以下コマンドを実行します。

 

wget qO https://artifacts.elastic.co/GPGKEYelasticsearch | sudo aptkey add
sudo aptget install apttransporthttps
echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

後は以下コマンドを実行すれば、インストールが完了します。

 

sudo apt-get update && sudo apt-get install logstah

※Cent OSの場合は以下コマンドを実行します。

vi /etc/yum.repos.d/logstash.repo

 

#以下内容を/etc/yum.repos.d/logstash.repo ファイルの中に記載して、:wqで保存。
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

 

sudo yum install logstashsudo rpm –import https://artifacts.elastic.co/GPG-KEY-elasticsearc

 

3)Logstashの確認

インストールが完了したので、最後に少し触ってみます。
logstashは/usr/share/logstash ディレクトリ配下に諸々が格納され、コマンドは/usr/share/logstash/bin ディレクトリ配下に格納されます。
従って、まずは以下コマンドでそのディレクトリに移動します。

 

cd /usr/share/logstash

続いて、Logstashが正常に動くかを以下コマンドを実行して確認します。

 

bin/logstash -e ‘input { stdin { } } output { stdout {} }’

上記コマンドを実行すると、以下の図のような文が表示され、①が表示されたら、パイプラインの準備が完了となります。
今回はデータの取り込みを標準入力、出力が標準出力としていますので、②のように「Hello」と打ってEnterを押すと、③が表示されます。

 

※Logstashを起動した際に、以下図の①のようなエラーが出る場合があります。こちらのエラーは権限回りのエラーとなりますので、
 bin/logstah コマンドをsudoを使ってスーパーユーザーで実行するか、以下コマンドを実行して一般ユーザーで使えるようにする必要があります。
 (exportコマンド等を使って、PATHを通す場合は一般ユーザーを使うことになるので、以下コマンドを実行する必要があります。)

 

sudo chmod -R 777 /usr/share/

【エラー内容】

[FATAL] 2021-05-28 02:42:56.926 [main] runner – An unexpected error occurred! {:error=>#<ArgumentError: Path “/usr/share/logstash/data” must be a writable directory. It is not writable.>, :backtrace=>[“/usr/share/logstash/logstash-core/lib/logstash/settings.rb:530:in `validate'”, “/usr/share/logstash/logstash-core/lib/logstash/settings.rb:290:in `validate_value'”, “/usr/share/logstash/logstash-core/lib/logstash/settings.rb:201:in `block in validate_all'”, “org/jruby/RubyHash.java:1415:in `each'”, “/usr/share/logstash/logstash-core/lib/logstash/settings.rb:200:in `validate_all'”, “/usr/share/logstash/logstash-core/lib/logstash/runner.rb:326:in `execute'”, “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'”, “/usr/share/logstash/logstash-core/lib/logstash/runner.rb:274:in `run'”, “/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'”, “/usr/share/logstash/lib/bootstrap/environment.rb:88:in `<main>'”]}

 

最後に

Logstashのサーバーの構築としては以上となります。実際にLogstashを使っていく場合、input、filter、outputを定義するためのパイプラインファイルを作成して、それをベースにLogstashを起動していくのですが、こちらについては、また別の機会で紹介できたらと思います。

いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください