NXログ

NXログ
開発者ボトンド・ボティャンスキ
初回リリース2011年10月 (2011年10月
安定版リリース
v3.1.1930
書かれたC
オペレーティング·システムLinux ( CentOSRHELUbuntu (オペレーティングシステム)Debian )、macOSWindowsAndroid (オペレーティングシステム)
タイプログツール
ライセンスNXLOG PUBLIC LICENSE v1.0に基づく独占的
Webサイトnxlog.co
リポジトリ

NXLog [ 1 ]は、ログのエンリッチメント(解析、フィルタリング、変換)やログ転送などのログ処理機能を提供する、マルチプラットフォームのログ収集および集中化ツールです。[ 2 ]概念的には、NXLog はsyslog-ngRsyslogに似ていますが、 UNIXsyslogだけに限定されません。Windows 、[ 3 ] macOS、[ 4 ] IBM AIX、[ 5 ]などの主要なオペレーティングシステムをすべてサポートしており、事実上すべてのSIEM、ログ分析スイート、その他多くのプラットフォームと互換性があります。NXLog はさまざまなログソースと形式を処理できるため、[ 6 ]安全で集中化された[ 7 ]スケーラブルなログシステムを実装するために使用できます。NXLog Community Editionはプロプライエタリであり、ライセンス費用や制限なしで無料でダウンロードできます。[ 8 ]

概要

NXLogは多くのオペレーティングシステムにインストールでき、異機種環境で動作し、数千もの異なるソースから様々な形式でイベントログを収集できます。NXLogは、TCPUDP[ 9 ]ファイル、データベース、およびsyslog、Windowsイベントログなどのさまざまなソースからのイベントログをさまざまな形式で受け入れることができます。 [ 10 ] SSL / TLS暗号化をサポートしており、転送中のデータセキュリティを確保します。

ログの書き換え、相関分析、アラート生成、パターンマッチング、スケジュールジョブの実行、ログローテーションが可能です。最新のマルチコアCPUシステムを最大限に活用できるように設計されています。マルチスレッドアーキテクチャにより、入力、ログ処理、出力の各タスクを並列実行できます。I/Oレイヤーを使用することで、数千の同時クライアント接続に対応し、100,000 EPSを超えるログボリュームを処理できます。

NXLogは、指示がない限りログメッセージを破棄しません。入力ソースを優先順位に従って処理できるため、優先度の高いソースは常に他のソースよりも先に処理されます。これにより、例えばUDPメッセージの損失を回避できます。ネットワークの輻輳やその他のログ転送の問題が発生した場合、NXLogはメッセージをディスクまたはメモリにバッファリングできます。ロード可能なモジュールを使用することで、Syslogだけでなく、Windowsイベントログ、監査ログ、カスタムバイナリアプリケーションログなど、さまざまな入力ソースとログ形式をサポートします。

NXLogでは、Apache Webサーバーと同様に、カスタムロード可能なモジュールを使用できます。オンラインログ処理モードに加えて、オフラインでバッチモードでログを処理することもできます。Apacheスタイルの設定ファイル構文を採用したNXLogの設定言語により、ログの書き換え、アラートの送信、指定した条件に基づく外部スクリプトの実行などが可能です。

歴史

2009年当時、NXlogの開発者は自身のニーズに合わせてmsyslogの改良版を使用していましたが、高性能でスケーラブルな集中型ログ管理ソリューションを実装する必要に迫られたとき、そのような最新のログソリューションは存在しませんでした。msyslogの代替となる優れた機能を持つソリューション(例えば、 Rsyslogsyslog-ngなど)はいくつかありましたが、どれも要件を満たしていませんでした。これらのほとんどは、シングルスレッドでsyslog中心であり、MS Windowsのネイティブサポートがなく、曖昧な設定構文や見苦しいソースコードなど、多くの問題を抱えていました。

彼は、他の何かをハッキングするのではなく、NXLogをゼロから設計・開発することを決意しました。こうしてNXLogは2009年に誕生し、当初はクローズドソース製品でしたが、多くの本番環境で頻繁に利用されました。NXLOG Community Editionのソースコードは2011年11月にリリースされ、それ以来無料で利用可能です。

デザイン

ほとんどのログ処理ソリューションは同じ概念に基づいて構築されています。入力はソースから読み取られ、ログメッセージが処理されます。最後に、出力は別の用語で言えばシンクに書き込まれ、送信されます。

アプリケーションまたはデバイスでイベントが発生すると、その設定に応じてログメッセージが出力されます。これは通常、「イベントログ」または「ログメッセージ」と呼ばれます。これらのログメッセージは、実際の実装に応じて異なる形式を持ち、異なるプロトコルで送信されることがあります。

すべてのイベントログメッセージに共通する点が1つあります。それは、ユーザー名、IPアドレス、アプリケーション名などの重要なデータが含まれていることです。そのため、イベントはキーと値のペアのリストとして表現することができ、これを「フィールド」と呼びます。フィールド名がキー、フィールドデータが値です。このメタデータは、別の用語ではイベントプロパティまたはメッセージタグと呼ばれることもあります。

次の例は、syslog メッセージを示しています。

<30>11月21日 11:40:27 log4ensics sshd[26459]: 192.168.1.1 ポート41193 ssh2からlog4ensicsの公開鍵を受け入れました 

このメッセージから抽出されたフィールドは次のとおりです。

AuthMethod 公開鍵 ソースIPアドレス 192.168.1.1 アカウント名 log4ensics SyslogFacilityデーモン Syslog重大度情報 重大度情報 イベント時間 2009-11-21 11:40:27.0 ホスト名 log4ensics プロセスID 26459 ソース名 sshd メッセージ 192.168.1.1 ポート 41193 ssh2 からの log4ensics の公開鍵を受け入れました 

NXLog は、標準が安定したら、フィールド名に 共通イベント式標準を使用するようにします。

NXLogには特別なフィールド$raw_eventがあります。このフィールドは、トランスポート(UDPTCP、ファイルなど)モジュールによって入力の読み取りと出力の書き込みに使用されます。また、このフィールドは、後ほど様々な関数、プロシージャ、モジュールによってログメッセージを解析し、さらに詳細なフィールドに分割するためにも使用されます。

建築

ロード可能なモジュールを活用することで、NXLogのプラグインアーキテクチャは、あらゆる種類の入力からデータを読み取り、メッセージの形式を解析・変換し、あらゆる種類の出力に送信することを可能にします。異なる入力モジュール、プロセッサモジュール、出力モジュールを同時に使用することで、ログ環境のあらゆる要件に対応できます。次の図は、このアーキテクチャを用いたログメッセージのフローを示しています。

NXLogアーキテクチャ
NXLogアーキテクチャ

NXLog のコアは、設定ファイルの解析、ファイルとソケットの監視、内部イベントの管理を担います。イベントベースのアーキテクチャを採用しており、すべてのモジュールがコアにイベントをディスパッチできます。NXLog コアはイベントを処理し、必要に応じてモジュールに渡して処理させます。NXLog はマルチスレッドアプリケーションであり、メインスレッドはファイルとソケットの監視を担当します。これらは、様々な入出力モジュールによってコアに追加されます。内部イベントを処理する専用のスレッドがあります。このスレッドは、次のイベントの処理までスリープ状態になり、その後起動してワーカースレッドにイベントをディスパッチします。NXLog はワーカースレッドプールモデルを実装しています。ワーカースレッドは、直ちに処理する必要があるイベントを受け取ります。これにより、NXLog コアはすべてのイベントとその実行順序を集中管理し、優先順位付けされた処理を可能にします。ソケットまたはファイルを処理するモジュールは、ワーカースレッドがブロックされないように、ノンブロッキング I/O を使用するように記述されています。メインスレッドによって監視されるファイルとソケットもイベントをディスパッチし、それらのイベントはワーカースレッドに委譲されます。同じモジュールに属する各イベントは、同時実行ではなく、順番に実行されます。これにより、メッセージの順序が維持され、モジュール内での同時実行の問題を回避できます。また、モジュール(ワーカースレッド)は同時に実行されるため、グローバルログ処理フローは大幅に並列化されます。

入力モジュールはデータを受信すると、基本的に生のイベントデータと任意のフィールドを含む構造体であるログメッセージの内部表現を作成します。このログメッセージはルート内の次のモジュールのキューにプッシュされ、データが利用可能であることを通知する内部イベントが生成されます。ルート内の入力モジュールの次のモジュールは、プロセッサモジュールまたは出力モジュールのいずれかになります。実際には、入力モジュールまたは出力モジュールは、組み込みコードまたはNXLog言語実行フレームワークを使用してデータを処理することもできます。唯一の違いは、プロセッサモジュールが別のワーカースレッドで実行されるため、ログ処理がさらに並列化されることです。プロセッサモジュールは連鎖させることもできるため、システム内の 複数のCPUまたはCPUコア間で作業を効率的に分散できます。

配布

  • NXLog Community Editionは、無償で利用できる独自のログ管理ツールです。WindowsやLinuxを含む様々なプラットフォームで利用可能です。NXLog Community Editionは、ログコレクターエージェントとしてもログサーバーとしても使用できます。[ 11 ]機能概要:
    • マルチプラットフォーム - LinuxIBM AIXSolarisHP-UXBSDAndroidMicrosoft WindowsXPから2012まで)をサポート
    • 動的にロード可能なプラグインによるモジュラーアーキテクチャ
    • スケーラブルで高性能な I/O - 超高速でメッセージを収集します (500k EPS 以上を達成できます)
    • メッセージのバッファリングと優先順位付け - メッセージの紛失や欠落はありません
    • Perlに似た強力な言語を使用したシンプルな設定フォーマット
    • スケジュールされたタスクと組み込みのログローテーション
    • SyslogCSV、GELF、JSONXML、Windows EventLog、さらにはカスタム形式など、さまざまな形式をサポート
    • 後処理、変換、転送のためのオフライン処理モード
    • イベント分類とパターンマッチング
    • ログメッセージの書き換え、異なる形式間の変換
    • イベント相関
    • SSL経由の安全なネットワーク転送
    • さまざまな文字セットをサポートし、エンコードを即座に自動検出する国際化
  • NXLog Enterprise Edition :NXLog Community Editionの柔軟性、低メモリフットプリント、高パフォーマンスといった機能に加え、NXLog Enterprise Editionには、エンタープライズ環境に役立つ様々な機能強化が含まれています。これらの機能には、信頼性の向上、CheckPoint LEAやSNMPイベントなどの追加ログソースのサポート、エージェント管理および監視機能、リモートWindowsイベントログ収集、データベース(Microsoft SQL Serverなど)へのデータ読み取り/書き込みのためのODBC入出力モジュールなど、数多くの機能が含まれています。機能概要:
    • マルチプラットフォーム - Unix / LinuxMS Windowsをサポート
    • 動的にロード可能なプラグインによるモジュラーアーキテクチャ
    • スケーラブルで高性能なI/O - 数千のソースから1秒あたり10万イベント以上のメッセージを収集します
    • メッセージのバッファリングと優先順位付け - メッセージの紛失や欠落はありません
    • Perlに似た強力な言語を使用したシンプルな設定フォーマット
    • スケジュールされたタスクと組み込みのログローテーション
    • syslogCSV、Windows EventLog、CheckPoint LEA、さらにはカスタム形式など、さまざまな形式をサポート
    • WebService APIを使用したリモート管理と統計により、外部監視ツールとの統合が容易になります。
    • 後処理、変換、転送のためのオフライン処理モード
    • リアルタイムのイベント相関と分類
    • ログメッセージの書き換え、異なる形式間の変換
    • 安全なSSLトランスポート、メッセージの整合性、タイムスタンプのサポート
    • さまざまな文字セットをサポートし、エンコードを即座に自動検出するための国際化。
  • NXLog Manager:多数のログコレクターエージェントの管理と監視は、特に複数のチームが担当し、異なる役割を持つ多数のサーバーがある場合、困難になる可能性があります。NXLog Managerは、集中型のWebベースの管理コンソールを使用して、NXLog Enterprise Editionインスタンスをリモートで管理および監視できます。

特徴

特徴 NXLog コミュニティエディション NXLog エンタープライズエディション
スケーラブルでマルチスレッド、高性能なアーキテクチャ はいはい
マルチプラットフォーム はいはい
モジュラーアーキテクチャ はいはい
さまざまなメッセージ形式のサポート はいはい
クライアントサーバーモード はいはい
ログメッセージの送信元と送信先 はいはい
安全な操作、安全なメッセージ はいはい
軽量 はいはい
メッセージのバッファリングと優先順位付け はいはい
メッセージの損失なし はいはい
シンプルな構成 はいはい
組み込みの設定言語 はいはい
スケジュールされたタスクと組み込みのログローテーション はいはい
イベント分類とパターンマッチング はいはい
後処理、変換、転送のためのオフライン処理モード はいはい
国際化サポート はいはい
リアルタイムのイベント相関と分類 いいえはい
リモート管理と統計 いいえはい

リリース

ライセンス

NXLogコミュニティエディションは、NXLOGパブリックライセンスv1.0に基づいてライセンスされています。[ 12 ]

参考文献