コンピュータサイエンスにおいて、イベントモニタリングとは、オペレーティングシステムプロセス、アクティブなデータベースルール、人間のオペレーターなどのサブスクライバーに対して、イベントの発生を収集、分析、通知するプロセスです。これらのイベントは、オペレーティングシステム、データベース管理システム、アプリケーションソフトウェア、プロセッサなど、ソフトウェアまたはハードウェアの任意のソースから発生する可能性があります。イベントモニタリングでは、時系列データベースが使用される場合があります。
イベント監視では、論理バスを使用してイベント発生をソースからサブスクライバーに転送します。イベントソースはイベント発生をすべてのイベントサブスクライバーに通知し、イベントサブスクライバーはイベント発生を受信します。イベントバスは、スタンドアロンコンピュータシステムなどの物理ノードの集合に分散させることができます。イベントバスの典型的な例としては、 X Window System、Microsoft Windowsなどのグラフィカルシステムや、SDTなどの開発ツールが挙げられます。
イベント収集とは、分析のためにフィルタリングされたイベントログにイベント発生を収集するプロセスです。フィルタリングされたイベントログには、将来的に有用なイベント発生が記録されます。つまり、将来的に不要になったイベント発生は、フィルタリングされたイベントログから削除できます。イベントログ分析とは、フィルタリングされたイベントログを分析してイベント発生を集約したり、イベント発生を通知するかどうかを判断したりするプロセスです。イベントシグナリングとは、イベントバスを介してイベント発生を通知するプロセスです。
監視対象となるものは、監視対象オブジェクトと呼ばれます。例えば、アプリケーション、オペレーティングシステム、データベース、ハードウェアなどが監視対象オブジェクトになり得ます。監視対象オブジェクトは、イベント監視を有効にするために、イベントセンサーで適切に調整されている必要があります。つまり、監視対象オブジェクトとなるには、イベントセンサーを装備する必要があります。イベントセンサーとは、イベントが発生するたびにイベントの発生を通知するセンサーです。何かを監視する際には、プローブ効果を管理する必要があります。
Gait [ 1 ]が論じたように、オブジェクトが監視されると、その動作は変化します。特に、プロセスが並列に実行できる並行システムでは、これは特別な問題となります。その理由は、システムにセンサーが導入されると、プロセスの実行順序が変わる可能性があるためです。たとえば、障害を特定しようとしているときに、システムを監視することで、障害が障害につながらないような動作に変化させてしまうと、問題が発生する可能性があります。つまり、システムを監視することで障害が隠蔽される可能性があるのです。プローブ効果とは、監視対象オブジェクトと、監視されていない対象オブジェクトとの間の動作の違いのことです。
Schütz氏[ 2 ]によれば、プローブ効果は回避、補償、または無視することができる。適時性(すなわち、締め切りなどの時間制約を満たすシステムの能力)が重要なクリティカルなリアルタイムシステムでは、回避が唯一の選択肢である。たとえば、テスト用にシステムを計測し、納品前に計測を削除すると、完全なシステムに基づくほとんどのテスト結果が無効になる。クリティカル性の低いリアルタイムシステム(たとえば、メディアベースのシステム)では、たとえばパフォーマンス テストの場合、補償が許容される。非並行システムでは、実行順序に関する動作は変更されないため、無視が許容される。
イベントログ分析は、アクティブデータベースではイベント合成、人工知能ではクロニクル認識、リアルタイムシステムではリアルタイムロジック評価として知られています。基本的に、イベントログ分析は、パターンマッチング、イベント発生のフィルタリング、およびイベント発生の複合イベント発生への集約に使用されます。一般的に、アルゴリズムの動的計画法戦略が、以前の分析結果を将来の使用のために保存するために採用されます。たとえば、同じパターンが複数の連続した分析処理で同じイベント発生と一致する可能性があるためです。通常バックトラッキング技術に基づいている一般的なルール処理(他の事実から新しい事実を主張するために使用されます。推論エンジンを参照)とは対照的に、イベントログ分析アルゴリズムは一般的に貪欲です。たとえば、複合イベントが発生したと判断された場合、バックトラッキングベースのアルゴリズムで行われるように、この事実が取り消されることはありません。
イベントログ分析には、有限状態オートマトン、ペトリネット、手続き型(命令型プログラミング言語またはオブジェクト指向プログラミング言語に基づく)、ボイヤー・ムーア文字列検索アルゴリズムの改良版、単純な時間ネットワークなど、いくつかのメカニズムが提案されている。