メインコンテンツまでスキップ
Sumo Logic Japanese

matches

matches operator は、文字列をワイルドカード パターンまたは re2 に準拠した正規表現と一致させるのに使用します。この operator はブール値を返し、where または if operator と一緒に使用できます。

matches operator は、ダッシュボード パネルで使用でき、より正確なクエリを作成するために他の operator とよく併用されます。

構文

  • <string expression> matches <pattern> as <field>
  • if(<string expression> matches <pattern>, <value_if_true>, <value_if_false>) as <field>
  • if(<string expression> matches /<regex>/, <value_if_true>, <value_if_false>) as <field>
  • where <string expression> matches <pattern>
  • where <string expression> matches /<regex>/
  • where !(<string expression> matches <pattern>)

ルール

  • パターンでは、アスタリスク * をワイルドカードとして使用します。
  • 正規表現は re2 に準拠している必要があります。

正規表現との一致による結果の絞り込み

この例では、正規表現を使用して、ip という parse されたフィールドで特定の IPv4 アドレスと一致させています。使用する正規表現は次の通りです。

12\.1[34][1-5]\.12\.12[3-7]

クエリでは、この正規表現を matches operator で使用し、where または if operator で結果を絞り込みます。where operator を使用すると、一致した ip アドレスのみに結果を絞り込むことができます。

| where ip matches /12\.1[34][1-5]\.12\.12[3-7]/

if operator を使用すると、ブール フィールド (この例では ip_group) が追加され、ip が正規表現と一致すると、このフィールドに 1 が格納されます。

| if(ip matches /12\.1[34][1-5]\.12\.12[3-7]/, 1,0) as ip_group

Web サイトにアクセスしたブラウザとオペレーティング システムの特定

matches operator を使用したクエリを Apache Access ログに対して使用することで、Web サイトにアクセスしたデバイスとブラウザの詳細を調べることができます。そして、このクエリでダッシュボードを作成できます。このクエリでは、transpose operator を使用して、縦棒グラフの軸に名前を付けています。

次のようなクエリを実行すると:

_sourceCategory=Apache/Access
| extract "\"[A-Z]+ \S+ HTTP/[\d\.]+\" \S+ \S+ \S+ \"(?<agent>[^\"]+?)\""
| if (agent matches "*Windows NT*","Windows","Other") as OS
| if (agent matches "*Macintosh*","MacOS",OS) as OS
| if (agent matches "*iPad*","iPad",OS) as OS
| if (agent matches "*iPhone*","iPhone",OS) as OS
| if (agent matches "*Android*","Android",OS) as OS
| if (agent matches "*MSIE*","Internet Explorer","Other") as Browser
| if (agent matches "*Firefox*","Firefox",Browser) as Browser
| if (agent matches "*Safari*","Safari",Browser) as Browser
| if (agent matches "*Chrome*","Chrome",Browser) as Browser
| count(agent) by OS,Browser
| transpose row os column browser as *

次のような集計結果が返されます。この例では、積み上げ縦棒グラフを作成するように設定されています。

Matches

過去のエラーと警告の表示

この例では、Windows ログに対してクエリを実行して、過去数時間のエラーと警告の分布を調べます。クエリで timeslice operator を使用すると、結果が 1 時間ごとのバケットに分割されます。

次のようなクエリを実行すると:

_sourceCategory=OS/Windows (error or warning)
| parse "Type = \"*\";" as evtType
| if (_raw matches "*EventType = Error*",1,0) as errors
| if (_raw matches "*EventType = Warning*",1,0) as warnings
| if (evtType matches "Error*",1,errors) as errors
| if (evtType matches "Warning*",1,warnings) as warnings
| timeslice by 1h
| sum(errors) as errors, sum(warnings) as warnings by _timeslice
| sort _timeslice asc

次のような結果が返されます。この例では、折れ線グラフを作成するように設定されています。

matches イベント

parse されたフィールド値との一致

matches operator と concat operator を使用して parse されたフィールドの必要な場所にワイルドカードを追加することで、parse されたフィールドに対して文字列を一致させることができます。次の例では、インスタンス値を parse してから、parse されたフィールドの最初と最後にワイルドカードを連結しています。これにより、一致対象となるワイルドカードが matches operator に追加されます。

| parse "instance \"*\"" as instance
| concat("*", instance, "*") as instance_match
| where !(host matches instance_match)

  • この記事は役に立ちましたか?