Azureの魅力の一つにイベントログを収集し、クエリを使った様々な検索や加工ができることがあります。今回はよく使いそうなイベントログから特定のイベントを除外して表示する方法を考えてみます。
①「エラー」のイベントを表示する
これは、シンプルにEventLevelName == 'Error'と各方法もありますが、認証系のエラーも表示したかったので、不要なものを除外しています。
Event
| where (EventLevelName != 'Information')
| where (EventLevelName != 'Success')
| where (EventLevelName != 'Warning')
| sort by TimeGenerated desc
②様々なパターンで検証
(1)対象となるすべてを「or」で連結した場合は、
・イベントログのタイプが、アプリケーション
或いは
・ソースが、Microsoft-Windows-Perflib
或いは
・イベントIDが、1023
となります。和集合(論理和)なので、すべての条件のいづれかに合致するものが表示されます。
Event
| where (EventLevelName != 'Information')
| where (EventLevelName != 'Success')
| where (EventLevelName != 'Warning')
| where (EventLog == 'Application') or (Source == 'Microsoft-Windows-Perflib') or (EventID != '1023')
| sort by TimeGenerated desc
(2)対象となるすべてを「and」で連結した場合は、
・イベントログのタイプが、アプリケーション
かつ
・ソースが、Microsoft-Windows-Perflib
かつ
・イベントIDが、1023
となります。共通部分(論理積)なので、すべての条件のすべてに合致するものが表示されます。
Event
| where (EventLevelName != 'Information')
| where (EventLevelName != 'Success')
| where (EventLevelName != 'Warning')
| where (EventLog == 'Application') and (Source == 'Microsoft-Windows-Perflib') and (EventID != '1023')
| sort by TimeGenerated desc
(3)対象となるログを除外したい場合には、
・イベントログのタイプが、アプリケーション
かつ
(・ソースが、Microsoft-Windows-Perflib
かつ
・イベントIDが、1023)以外
となります。共通部分(論理積)以外の部分が表示されます。
Event
| where (EventLevelName != 'Information')
| where (EventLevelName != 'Success')
| where (EventLevelName != 'Warning')
| where (EventLog == 'Application') and (Source != 'Microsoft-Windows-Perflib') and (EventID != '1023')
| sort by TimeGenerated desc
なんとなく感覚的には、EventLog != 'Application'とする必要があるように感じますが、以下のように日本語を置き換えると、少し理解できます。
・イベントログのタイプが、アプリケーション
である者のうち、
(・ソースが、Microsoft-Windows-Perflib
かつ
・イベントIDが、1023)を除いて
具体的には
A イベントログがアプリケーション
B ソースが、Microsoft-Windows-Perflib
C ソースが、Microsoft-Windows-Perflibかつ、イベントIDが、1023
D イベントIDが、1023
とすると、Aかつ(BかつD以外)ということになります。
Comentarios