どうも、cloudpack の かっぱ(@inokara)です。カジュアル、カジュアル。
はじめに
Windows 上の各種ログを Nxlog というミドルウェアと loggly というログ管理ツールに集約して可視化と検索をカジュアルにやってみたいと思います。
Nxlog と loggly
Nxlog
Nxlog はマルチプラットフォーム対応でモジュール機構、マルチスレッドなログ管理ツールです。UDP や TCP と TLS/SSL を介してログを転送することが出来るようです。
詳細についてはこちらをご一読下さい。
loggly
loggly とはログ管理のクラウドサービスです。簡単なセットアップで色々な環境からログを収集して検索しやすくし、可視化することが出来るようです。API でログを送りこむことが出来ますのでサインアップした後で簡単にログを loggly に収集することが出来るようです。もちろん、fluentd のプラグインもあります!!
- loggly
- Infrastructure at Scale: Apache Kafka, Twitter Storm & Elastic Search (ARC303) | AWS re:Invent 2013
loggly のアーキテクチャとしては…
- Apache Kafka
- Storm
- Cassandra も(?)
- Elasticsearch
が AWS 上で動いているらしいです。
尚、ログを送ることが出来るソースとしては下記のようなソースが対応しているようです。
上記はサーバーサイドのアプリケーション。そして、下記はクライアントサイド。
残念ながらと言うか…もちろん有償となります。以下は価格表です。
プラン | 価格 | ログ保存量 | ログの保存期間 | 価格に含まれる機能 |
---|---|---|---|---|
Lite | 無料 | 200MB/day | 7 日 | ログの収集と検索、フィルタリング等 |
Standard | $49/month 〜 | 1G/day | 7 日 | Lite プラン+三つのソースグループ、アラート通知とダッシュボードのカスタマイズ等 |
Pro | $349/month 〜 | 7G/day | 15 日 | Standard プラン+ Amazon S3 へのアーカイブ、電話サポート等 |
全てのプランで Pro プランで 30 日間のトライアル期間が設けられています。詳細についてはこちらやこちらを御覧ください。
Windows のイベントログを Nxlog を介して loggly に送る
チョー簡単
- 手順はチョー簡単です
- loggly にサインアップしておきましょう
ダッシュボード
ダッシュボードにログインしたらユーザー名がサブドメインのダッシュボードが提供されます。
そして、Source Setup
をクリックするとログの送信元の設定を行うことが出来ます。
Source として Windows を指定すると…
以下のように Windows のイベントログを送信する為の手順が表示されます。
お優しいのね。
Nxlog のインストール
手順に従って、まずは Windows 環境(今回は Windows Server 2008 R2)にインストールします。セットアップファイルはこちらをダウンロードしておきます。
ウィザードに従ってインストールしましょう。
Nxlog の設定
手順に従って C:Program Files (x86)nxlogconfnxlog.conf
を修正します。
## This is a sample NXLog configuration file created by Loggly. June 2013 ## See the nxlog reference manual about the configuration options. ## It should be installed locally and is also available ## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html ## Please set the ROOT to the folder your nxlog was installed into, ## otherwise it will not start. #define ROOT C:Program Filesnxlog #define ROOT_STRING C:Program Files\nxlog define ROOT C:Program Files (x86)nxlog define ROOT_STRING C:Program Files (x86)\nxlog define CERTDIR %ROOT%cert Moduledir %ROOT%modules CacheDir %ROOT%data Pidfile %ROOT%datanxlog.pid SpoolDir %ROOT%data LogFile %ROOT%datanxlog.log # Include fileop while debugging, also enable in the output module below ## Module xm_fileop # Module xm_json Module xm_syslog Module im_internal Exec $Message = to_json(); # Watch your own files Module im_file File "%ROOT_STRING%\data\nxlog.log" SavePos TRUE # Include JSON and raw formats Exec $Message = to_json() + " " + $raw_event; # Windows Event Log # Uncomment im_msvistalog for Windows Vista/2008 and later Module im_msvistalog #Uncomment im_mseventlog for Windows XP/2000/2003 #Module im_mseventlog Exec $Message = to_json();Path internal, file_watch, eventlog => out
Nxlog の起動
nxlog.conf を修正したら nxlog のプロセスを再起動します。
Nxlog を起動したらダッシュボードから Verify します。
暫くすると…
以下のように Windows のイベントログが蓄積されはじめました…。
上記はさらにログの中から Warning
で絞り込んでみてます。
ほんと簡単に…
Windows Server のログを検索、可視化出来ました。さらに、検索や可視化についてもとても簡単に出来そうで、ちょっとした環境であれば自前で同じような環境を構築するよりもお手軽だと思いましたが…以下のような点が気になりました。
気になるところ
セキュアなログ転送
上記の nxlog.conf を見ると loggly への転送は…
上記のように TCP ポート 514 番ポートへ行われているようです。ログの中にはセンシティブな情報が含まれていることが少なくはありませんのでセキュアな転送は必須だと思います。もちろん、セキュアな転送方法(Syslog over TLS)は以下の通り公開されています。
簡単そうなので試してみました。
こちらとこちらの証明書をガッチャンコして所定のディレクトリに置くだけ。
証明書をディレクトリに置いたら nxlog.conf を以下のように修正します。
Nxlog を動作させることによるシステムへの負荷
チョーざっくりとパフォーマンスモニタで Processor Time 等を眺めてみました。
nxlog を稼働状態と稼働させていない状態ではそれほど負荷が掛かっているようには見えません。
但し、他のアプリケーションを稼働させていない状態なのであくまでも参考程度に…。
日本語が…
ログに日本語が含まれていた場合には残念ながら表示されません
最後に
ホントにさらっとで恐縮ですが nxlog と loggly を触ってみました。自分は今まで Windows のログってどんな風にローテーションされていてどうやって見るのかあまり意識したことがありませんでしたが、nxlog と loggly を利用することで簡単に収集と検索と可視化を実現することが出来ました。
引続き loggly や nxlog を詳細に追っていきつつ、fluentd と loggly の組み合わせや fluentd と nxlog と loggly を組み合わせを試してみたいと考えています。
元記事はこちらです。
「Windows のイベントログを Nxlog と loggly でカジュアルに管理する」