ElasticsearchとKibanaを利用したWindowsイベントログの可視化
2019-08-14
azblob://2022/11/11/eyecatch/2019-08-13-elk-kibana-windowslog-000.png

こんにちは。インフラ担当のサトウです。
今回はElastic Stackを使ったログの可視化について投稿します。

Elastic Stackとは

Elastic StackとはElastic社が提供するOSSのツール群で、データ分析で活用が可能です。
ある程度まで無償で利用することが出来ます。

↓リンク
https://www.elastic.co/jp/

今回利用するツールとしては、下記の3つが対象となります。

・Elasticsearch・・・データ分析エンジン

・Winlogbeat・・・Windowsイベントログ用の転送ツール

・Kibana・・・収集したデータの可視化ツール 

Winlogbeatがログを収集し転送、KibanaでElasticsearchに貯まったデータを可視化する、という流れです。
では、環境構築にトライしてみましょう。

導入準備

今回はAzure上の仮想マシンを利用して構築を行います。
↓ざっくり構成

・Elasticsearch+Kibana用サーバ

 1台のWindowsVMにElasticsearchとKibanaをインストール。
 せっかく(?)なので、Windowsサーバ上で構築 。

・Winlogbeat用サーバ

 WindowsVMにWinlogbeatをインストールする。
 該当サーバのWindowsイベントログの以下の4項目(デフォルト)を収集。
 ・Applicationログ
 ・セキュリティログ
 ・Setupログ
 ・システムログ

・その他

 今回利用するバージョンはElasticSearch、Kibana、Winlogbeatのいずれも7.3.0
 実行環境はWindows Server 2016、B2ms(2コア8GB)インスタンス

構築手順

下記のサイトからツールをダウンロードします。

https://www.elastic.co/jp/products/elasticsearch
https://www.elastic.co/jp/products/kibana
https://www.elastic.co/jp/products/beats/winlogbeat

1.Elasticsearchのインストールと実行

コマンドラインからインストールを実施します。

C:\>cd C:\Elastic\elasticsearch-7.3.0\bin

C:\Elastic\elasticsearch-7.3.0\bin>elasticsearch-service install

続いて\config配下の「elasticsearch.yml」を編集し、「localhost:9200」での接続と外部からの接続を有効にします。

# ---------------------------------- Network -----------------------------------
#
network.host: 0.0.0.0
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300
#

再びコマンドラインに戻り、以下のコマンドを実行する。

C:\Elastic\elasticsearch-7.3.0\bin>elasticsearch-service manager

コマンドの実行後に設定画面が立ち上がる。

設定画面から、「Start」を押下し実行しブラウザから 「localhost:9200」 にアクセスし、疎通を確認する。

2.Kibanaの実行

「kibana.bat」を実行する。

「localhost:5601」にブラウザから接続し、Kibanaの立ち上がりを確認する。

3.Winlogbeatのインストールと実行

「install-service-winlogbeat.ps1」を実施しインストールを実行。

インストール後に「winlogbeat.yml」を編集し、「hosts」にElasticsearchを導入したサーバのIP+ポート番号を指定します。(今回はプライベートIPを指定)

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["172.16.100.5:9200"]

「winlogbeat.bat」を実行する。

4.Kibana側の設定 

Kibana側のデータソースを設定して、収集されたログが表示されることを確認する。

Kibana>Management>Index Patternsから、「Index Pattern」と「Time Filter field name Refresh」を指定する。

ログの件数がグラフに出力される。

まとめ

今回はWinlogbeatの実行例でしたが、Filebeat等の別ツールではIISログなどの収集も可能です。
また、IaaS上での構築でしたが、マネージドサービスも提供されているようです。(Azureにはない)
Azure上ではマーケットプレイスからElasticsearch Clusterを構築できるようなので、そちらもトライしてみようと思います。