Logstashは、無料のオープンソースツールであり、将来使用するためにログを収集、解析、保存するための世界で最も人気のあるログ分析プラットフォームです。 Logstashには、豊富なプラグインセットと、データストリームの変換を容易にする非常に表現力豊かなテンプレート言語が付属しています。 LogstashはELKスタックの一部ですが、単独で使用することもできます。 Logstashには、入力プラグインを使用して任意のデータソースからプルし、さまざまなデータ変換を適用し、出力プラグインを使用してデータを多数の宛先に送信する機能があります。
このチュートリアルでは、Ubuntu18.04サーバーにLogstashをインストールして構成する方法を示します。
- Ubuntu18.04を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
開始する前に、システムを最新バージョンに更新してください。次のコマンドを実行することでそれを行うことができます:
apt-get update -y
apt-get upgrade -y
システムが更新されたら、システムを再起動して変更を適用します。
Javaのインストール
Javaをインストールする前に、Java8またはJava11がインストールされていることを確認してください。次のコマンドを使用してJava8をインストールできます。
apt-get install openjdk-8-jdk -y
Javaをインストールした後、次のコマンドを使用してJavaのバージョンを確認します。
java -version
次の出力が表示されます。
openjdk version "1.8.0_162" OpenJDK Runtime Environment (build 1.8.0_162-8u162-b12-1-b12) OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
Logstashをインストール
Logstashをインストールする前に、サーバーにElasticsearchをインストールする必要があります。デフォルトでは、ElasticsearchはUbuntu18.04サーバーでは使用できません。そのため、Elasticsearchのリポジトリを追加する必要があります。
まず、次のコマンドを使用して必要なパッケージをインストールします。
apt-get install apt-transport-https -y
次に、次のコマンドを使用してElasticsearchGPGキーをダウンロードして追加します。
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
次に、次のコマンドを使用してリポジトリを追加します。
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
次に、次のコマンドを使用してElasticsearchとLogstashをインストールします。
apt-get install elasticsearch logstash -y
両方のパッケージがインストールされたら、LogstashとElasticsearchを起動し、次のコマンドを使用してシステムの再起動後に起動できるようにします。
systemctl start logstash
systemctl enable logstash
systemctl start elasticsearch
systemctl enable elasticsearch
次のコマンドを使用して、Logstashのステータスを確認することもできます。
systemctl status logstash
次の出力が表示されます。
? logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-20 10:13:22 UTC; 5s ago Main PID: 3790 (java) Tasks: 13 (limit: 1110) CGroup: /system.slice/logstash.service ??3790 /usr/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly Nov 20 10:13:22 ubuntu systemd[1]: Started logstash.
デフォルトでは、Elasticsearchはポート9200でリッスンします。次のコマンドで確認できます:
netstat -ant | grep 9200
次の出力が表示されます。
tcp6 0 0 127.0.0.1:9200 :::* LISTEN tcp6 0 0 ::1:9200 :::* LISTEN
Logstashを構成する
Logstashの構成は、システム管理者にとって最も難しい部分の1つです。 Logstash構成は、Logstash入力、Logstashフィルター、およびLogstash出力の3つの主要な構成セクションで構成されています。各セクションは、さまざまな機能とさまざまなLogstashプラグインの使用を担当しています。
Logstash入力の構成
まず、TCPポート5044でBeatsからデータを受信するために、入力構成ファイルbeats-input.confを作成する必要があります。
nano /etc/logstash/conf.d/beats-input.conf
次の行を追加します:
input { beats { port => 5044 } }
終了したら、ファイルを保存して閉じます。
Logstashフィルターを構成する
次に、ビートから受信したイベントを処理するようにフィルタープラグインを構成する必要があります。ここでは、UbuntuシステムからSSH認証イベントを収集するためのビートを構成します。これを行うには、新しいフィルター構成ファイルssh-auth-filter.confを作成します。
nano /etc/logstash/conf.d/ssh-auth-filter.conf
次の行を追加します:
filter { grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp}\s+%{IPORHOST:dst_host}\s+%{WORD:syslog_program}\[\d+\]:\s+(?\w+\s+password)\s+for\s+%{USER:auth_user}\s+from\s+%{SYSLOGHOST:src_host}.*" } add_field => { "activity" => "SSH Logins" } add_tag => "linux_auth" } }
終了したら、ファイルを保存して閉じます。
Logstash出力の構成
次に、Logstashがイベントデータを特定の宛先に送信できるように出力プラグインを構成する必要があります。
ここでは、ローカルホストで実行されているElasticsearchにデータを送信するLogstash出力構成ファイルを作成します。
nano /etc/logstash/conf.d/elasticsearch-output.conf
次の行を追加します:
output { elasticsearch { hosts => ["localhost:9200"] manage_template => false index => "ssh_auth-%{+YYYY.MM}" } stdout { codec => rubydebug } }
終了したら、ファイルを保存して閉じます。次に、Logstashサービスを再起動して、変更を適用します。
systemctl restart logstash
これで、Logstashがインストールおよび構成されました。それが機能しているかどうかをテストする時が来ました。
次のコマンドを使用して、Logstashの構成を確認できます。
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
すべてが正常であれば、次の出力が表示されます。
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties [2019-11-26T06:27:48,104][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/var/lib/logstash/queue"} [2019-11-26T06:27:48,119][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.dead_letter_queue", :path=>"/var/lib/logstash/dead_letter_queue"} [2019-11-26T06:27:50,331][INFO ][org.reflections.Reflections] Reflections took 47 ms to scan 1 urls, producing 20 keys and 40 values Configuration OK [2019-11-26T06:27:51,899][INFO ][logstash.runner ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
おめでとう!これで、Ubuntu18.04サーバーにLogstashが正常にインストールおよび構成されました。