この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
初めに
こんにちは、パーソルプロセス&テクノロジーの下谷です。
前回、Logstashサーバーの構築方法について紹介したので、今回はLogstashサーバーを使って、
ログをAzure Sentinelへ取り込む方法を紹介したいと思います。
以前の記事
Logstashサーバーの構築:https://cloudsteady.jp/post/39634/
Logstashの使い方
まず、初めにLogstashの使い方について説明します。
Logstashでは、pipelineを実行することで、データの取り込み(input)から、整形(filter)、出力(output)を実施することが可能です。
そして、pipelineを実行する際は、データの取り込み(input)、整形(filter)、出力(output)の3つを定義したyaml形式のファイル(パイプラインファイルと
呼びます)と一緒に実行します。これにより、データの取り込み(input)から、整形(filter)、出力(output)までを自動的に行うことができます。
少し具体的に手順を説明すると、まず、初めに以下のパイプラインファイルを用意します。
#test-pipeline.yml(ファイルの名前は後ろに「.yml」さえついていれば、何でも大丈夫です。) |
上記のファイルのinput、filter、output がログの取り込み先と整形、ログの出力先を表したもので、その括弧の中でそれぞれを定義することができます。
括弧の中はどのように書けば良いのかと言いますと、例えば、AWSのcloudwatchのログを取り込む場合だと、そのプラグインを使って、
以下のようにファイルの中に記載することになります。
#test-pipeline.yml(ファイルの名前は後ろに「.yml」さえついていれば、何でも大丈夫です。) |
上記のように、input、output、filterの括弧の中で、プラグイン名を記載し、さらにその括弧の中で、各種プラグインの設定を記載していく形になります。
プラグインの設定方法については、公式ページもしくはプラグインが公開されているGitHub等に記載されているので、そちらを参考にして、中を作成していく形になります。
参考ページ
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
https://github.com/logstash-plugins
また、プラグインのインストールについて、標準でインストールされたものもありますが、そうでない場合は別途インストールが必要です。
インストール方法は以下を実行するだけです。
sudo /usr/share/logstash/bin/logstash-plugin install <プラグイン名> |
パイプラインファイルを作成したら、後は以下のように実行するだけです。
#パイプラインファイルが問題ないかを確認 sudo /usr/share/logstash/bin/logstash -f <パイプラインファイル名> –config.test_and_exit #パイプラインの実行 sudo /usr/share/logstash/bin/logstash -f <パイプラインファイル名> –config.reload.automatic |
Logstashを使って、ログをAzure Sentinelに取り込む方法
上記の[Logstashの使い方]を踏まえた上で、Azure Sentinelにログを取り込む方法を紹介します。
まず、状況を整理すると、Azure Sentinelへログを取り込むということは、ログが出力されている場所をinputで定義し、
outputでAzure Sentinel(正確にはログを貯める場所であるLog Analytics)を定義する必要があります。
Azure SentinelではoutputのプラグインがGithubに公開されており、プラグイン名が[microsoft-logstash-output-azure-loganalytics]となっています。
Azure Sentinelのoutput のプラグイン
https://github.com/Azure/Azure-Sentinel/tree/master/DataConnectors/microsoft-logstash-output-azure-loganalytics
まずは、上記のプラグインを以下コマンドでインストールします。
sudo /usr/share/logstash/bin/logstash-plugin install microsoft-logstash-output-azure-loganalytics |
インストールが完了したら、以下のようにパイプラインファイルを定義します。
(inputで使用するプラグインやそのプラグインの設定については取り込みログによって、変更してください。)
#test-pipeline.yml input { cloudwatch { namespace => “AWS/EC2” metrics => [ “CPUUtilization” ] region => “ap-northeast-1” } } filter { } output { microsoft-logstash-output-azure-loganalytics { workspace_id => “<LogAnalyticsのワークスペースID>” workspace_key => “<LogAnalyticsのワークスペースのキー>” custom_log_table_name => “<テーブル名、これを使って、取り込んだログをKQLを使って検索することになります。>” plugin_flash_interval=> 5 #ログの取得間隔(秒) } } |
パイプラインファイルが完成したら、以下コマンドで、パイプラインを実行します。
#パイプラインファイルが問題ないかを確認 sudo /usr/share/logstash/bin/logstash -f <パイプラインファイル名> –config.test_and_exit #パイプラインの実行 sudo /usr/share/logstash/bin/logstash -f <パイプラインファイル名> –config.reload.automatic |
正常に動いたら、後は定期的にログをSentinelへ取り込んでくれます。
( [plugin_flash_interval] で設定した秒数でログが取り込まれます。上の例だと5秒間隔になります。)
最後に
Logstashのログの取り込み方法についてまとめると、以下のようになります。
- ログの取り込み先(input)とログの出力先(output)のプラグインをインストール
(整形する場合はfilterのプラグインもインストール) - パイプラインファイルの中で、インストールしたプラグイン名とそれぞれの設定値を記載。
各プラグインの設定値については、プラグインが公開されている公式ホームページもしくはGitHubを参照 - 「2.」で作成したパイプラインファイルを用いて、Logstashのパイプラインを実行
Azure Sentinelへ取り込む場合は上記の手順のログの出力先(output)のプラグインで
Azure Sentinel用のプラグイン(microsoft-logstash-output-azure-loganalytics)を使用する形になります。
次回はLogstashを使って、実際にAzure Sentinelにログを取り込んでみたいと思います。
以上となります。