こんにちは。インフラ担当のサトウです。
今回は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を構築できるようなので、そちらもトライしてみようと思います。