Logstashサーバーを使って、Azure Sentinelにログを取り込む方法

初めに

こんにちは、パーソルプロセス&テクノロジーの下谷です。
前回、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 {                                                                         
}

上記のファイルのinput、filter、output がログの取り込み先と整形、ログの出力先を表したもので、その括弧の中でそれぞれを定義することができます。
括弧の中はどのように書けば良いのかと言いますと、例えば、AWSのcloudwatchのログを取り込む場合だと、そのプラグインを使って、
以下のようにファイルの中に記載することになります。

 

#test-pipeline.yml(ファイルの名前は後ろに「.yml」さえついていれば、何でも大丈夫です。)
input {
  cloudwatch {
    namespace => “AWS/EC2”
    metrics => [ “CPUUtilization” ]
    region => “ap-northeast-1”
  }
}
filter {
}
output {
}

上記のように、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のログの取り込み方法についてまとめると、以下のようになります。

 

  1. ログの取り込み先(input)とログの出力先(output)のプラグインをインストール
    (整形する場合はfilterのプラグインもインストール)
  2. パイプラインファイルの中で、インストールしたプラグイン名とそれぞれの設定値を記載。
    各プラグインの設定値については、プラグインが公開されている公式ホームページもしくはGitHubを参照
  3. 「2.」で作成したパイプラインファイルを用いて、Logstashのパイプラインを実行

 

Azure Sentinelへ取り込む場合は上記の手順のログの出力先(output)のプラグインで
Azure Sentinel用のプラグイン(microsoft-logstash-output-azure-loganalytics)を使用する形になります。

 

次回はLogstashを使って、実際にAzure Sentinelにログを取り込んでみたいと思います。

以上となります。

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

注意事項・免責事項

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

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

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

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