正規表現を使用した Log Analytics のログ検索のフィルター処理

ログ検索を使用すると、Log Analytics リポジトリから情報を抽出できます。 フィルター式を使用すると、特定の条件に従って検索結果をフィルター処理できます。 RegEx キーワードを使用すると、そのフィルターの正規表現を指定できます。

この記事では、Log Analytics で使用される正規表現の構文について詳しく説明します。

注意

RegEx は、検索可能なフィールドでのみ使用できます。 検索可能なフィールドの詳細については、Log Analytics におけるログ検索を使用したデータの検索に関するページの「フィールドの型」を参照してください。

RegEx キーワード

ログ検索で RegEx キーワードを使用するには、次の構文を使用します。 正規表現自体の構文については、この記事の他のセクションで確認できます。

field:Regex("Regular Expression")
field=Regex("Regular Expression")

たとえば、正規表現を使用して種類が Warning または Error のアラート レコードを返すには、次のログ検索を使用します。

Type=Alert AlertSeverity=RegEx("Warning|Error")

部分一致

正規表現は、プロパティのテキスト全体に一致する必要があります。 部分一致ではレコードは返されません。 たとえば、srv01.contoso.com という名前のコンピューターのレコードを返そうとしている場合、次のログ検索ではレコードは返されません

Computer=RegEx("srv..")

これは、名前の最初の部分しか正規表現に一致しないためです。 次の 2 つのログ検索は名前全体に一致するので、このコンピューターのレコードが返されます。

Computer=RegEx("srv..@")
Computer=RegEx("srv...contoso.com")

文字

さまざまな文字を指定します。

Character Description 一致の例
a この文字が 1 回出現することを表します。 Computer=RegEx("srv01.contoso.com") srv01.contoso.com
に関するページを参照してください。 任意の 1 文字を表します。 Computer=RegEx("srv...contoso.com") srv01.contoso.com
srv02.contoso.com
srv03.contoso.com
a? この文字が 0 回または 1 回出現することを表します。 Computer=RegEx("srv01?.contoso.com") srv0.contoso.com
srv01.contoso.com
a* この文字が 0 回以上出現することを表します。 Computer=RegEx("srv01*.contoso.com") srv0.contoso.com
srv01.contoso.com
srv011.contoso.com
srv0111.contoso.com
a+ この文字が 1 回以上出現することを表します。 Computer=RegEx("srv01+.contoso.com") srv01.contoso.com
srv011.contoso.com
srv0111.contoso.com
[abc] 角かっこ内の任意の 1 文字と一致することを表します。 Computer=RegEx("srv0[123].contoso.com") srv01.contoso.com
srv02.contoso.com
srv03.contoso.com
[a-z] この範囲内の 1 文字と一致することを表します。 複数の範囲を含めることができます。 Computer=RegEx("srv0[1-3].contoso.com") srv01.contoso.com
srv02.contoso.com
srv03.contoso.com
[^abc] 角かっこ内の文字以外であることを表します。 Computer=RegEx("srv0[^123].contoso.com") srv05.contoso.com
srv06.contoso.com
srv07.contoso.com
[^a-z] この範囲内の文字以外であることを表します。 Computer=RegEx("srv0[^1-3].contoso.com") srv05.contoso.com
srv06.contoso.com
srv07.contoso.com
[n-m] 数字の範囲に一致することを表します。 Computer=RegEx("srv[01-03].contoso.com") srv01.contoso.com
srv02.contoso.com
srv03.contoso.com
@ 任意の文字列を表します。 Computer=RegEx("srv@.contoso.com") srv01.contoso.com
srv02.contoso.com
srv03.contoso.com

文字の複数回の出現

特定の文字の出現回数を指定します。

Character Description 一致の例
a{n} この文字が n 回出現することを表します。 Computer=RegEx("bw-win-sc01{3}.bwren.lab") bw-win-sc0111.bwren.lab
a{n,} この文字が n 回以上出現することを表します。 Computer=RegEx("bw-win-sc01{3,}.bwren.lab") bw-win-sc0111.bwren.lab
bw-win-sc01111.bwren.lab
bw-win-sc011111.bwren.lab
bw-win-sc0111111.bwren.lab
a{n,m} この文字が nm 回出現することを表します。 Computer=RegEx("bw-win-sc01{3,5}.bwren.lab") bw-win-sc0111.bwren.lab
bw-win-sc01111.bwren.lab
bw-win-sc011111.bwren.lab

論理式

複数の値の中から選択します。

Character Description 一致の例
| 論理 OR。 いずれかの式で一致する場合に結果を返します。 Type=Alert AlertSeverity=RegEx("Warning|Error") 警告
エラー
& 論理 AND。 両方の式で一致する場合に結果を返します。 EventData=regex("(Security.*&.*success.*)") Security auditing successful

リテラル

特殊文字をリテラル文字に変換します。 これには、?-*^[]{}()+|.& などの正規表現に機能を提供する文字が含まれます。

Character Description 一致の例
\ 特殊文字をリテラルに変換します。 Status_CF=\[Error\]@
Status_CF=Error\-@
[Error]File not found.
Error-File not found.

次のステップ

  • ログ検索を使用して、Log Analytics リポジトリ内のデータを表示および分析します。