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

log operator クイック ガイド

log operator クイック ガイドには、使用可能なパーサ、アグリゲータ、search operator、および数式のリストが記載されており、各項目には詳細な説明へのリンクが付けられています。  クエリの作成方法に関するステップごとのビデオおよびチュートリアルについては、「クイック スタート チュートリアル」を参照してください。  Sumo Logic の検索で使用できる operator の全リストは PDF ファイルとしてダウンロードできます。 

以下の表は、使用可能な Sumo Logic パーサ、アグリゲータ、search operator、および数式のリストです。  

parse

Sumo には、ログ メッセージのフィールドを parse するさまざまな方法があります。

operator 説明

parse (anchor)

parse operator (parse anchor とも呼ばれる) は、指定された開始アンカーと停止アンカーに従って文字列を parse し、ソート関数、グループ化関数など、クエリ内の以降の集計関数で使用するためにフィールドとしてラベル付けします。

| parse "User=*:" as user

parse regex

parse regex operator (extract operator とも呼ばれる) によって、ユーザは正規表現構文を使用して、ログ行から複雑なデータを抽出できます。たとえば、ネストされたフィールドを抽出する場合に Parse regex を使用します。

| parse regex field=url "[0-9A-Za-z-]+\.(?<domain>[A-Za-z-]+\.(?:co\.uk|com|com\.au))/.*"

keyvalue

通常ログ ファイルには、キーと値のペア構造を持つ情報が含まれています。keyvalue operator で各値とペアになるキーを指定してログ メッセージから値を取得できます。

| keyvalue infer "module", "thread"

csv

csv operator でコンマ区切り値 (CSV) 形式ログ エントリを parse できます。コンマをデフォルト delimiter.csv operator として使用し、コンマ区切り値 (CSV) 形式ログ エントリを parse できます。デフォルトの区切り文字は、コンマです。

csv_raw extract 1 as user, 2 as id, 3 as name

JSON

JSON operator は検索クエリ言語 operator であり、JSON 入力から値を抽出できます。JSON では順序が指定された値のシーケンスを含むネストされたキーおよび配列の両方が使用できるため、Sumo Logic の JSON operator は単一最上位レベルフィールド、複数フィールド、ネストされたキー、およびキーの配列を抽出できます。

| parse "explainJsonPlan] *" as jsonobject 
| json field=jsonobject "sessionId"
| json auto

 

split

split operator で文字列を複数の文字列に分割し、スペース区切りフォーマットなどで区切られたログ エントリを parse できます。

クエリの完成例:

_sourceCategory=colon
| parse "] * *" as log_level, text
| split text delim=':' extract 1 as user, 2 as account_id, 3 as session_id, 4 as result

xml

XML operator は XPath 1.0 仕様のサブセットを使用して、XML ドキュメントのフィールドを parse できます。この operator を使用すると、XPath リファレンスを使用して XML ドキュメントから抽出するフィールドを指定できます。

| parse xml "/af/minimum/@requested_bytes"

 

集計

集計関数はメッセージを評価し、それらをグループに格納します。group operator はグループ化関数と組み合わせて使用します。グループ化関数を使用する場合、単語 "by" が group operator になります。

 

operator 説明 制限事項

avg

平均関数 (avg) は分析対象の時間範囲内で評価する数値フィールドの平均値を計算します。

 

| avg(request_received) by _timeslice

count、count_distinct、count_frequent

集計 (group-by) 関数は group operator およびフィールド名と組み合わせて使用します。group operator を表すには単語 "by" だけが必要です。count 関数はその右側の項目の operator でもあるので、単語 "by" のあるなしに関わらず使用できます。

count_frequent をダッシュボード パネルで使用すると、最大 100 件の結果が返されます。

例 1:

| count by url
 

例 2:

| count_distinct(referrer) by status_code

fillmissing

標準 group-by クエリを実行すると、結果に空白ではないグループのみが返されます。たとえば、timeslice を使用してグループ化をすると、データのあるタイムスライスのみが返されます。

この operator を使用するとグループ内にデータがなくても、グループを出力内に残すことができます。

ライブ ダッシュボードまたは継続的なクエリではサポートされません。 

error
| count by _sourceCategory
| fillmissing values("backend", "database", "webapp") in _sourceCategory

first と last

First は検索結果の最初の一致であり、last はクエリのソート順に応じた最後の結果です。

ライブ ダッシュボードまたは継続的なクエリではサポートされません。 

| sort by _timeslice
| first(error_message) by hostname

min と max

min と max 関数を使用して、一連の値の最小値と最大値を見つけます。

 

| max(request_received) by hour

most_recent と least_recent

most_recent と least_recent operator は withtime operator とともに使用すると、最新から最古の順序でデータを並び替えできます。

 

*ip* OR *address*
| parse regex "(?<IP>\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" 
| lookup latitude, longitude, country_code from geo://location on ip=IP 
| where !isNull(country_code) 
| withtime IP 
| most_recent(ip_withtime) by country_code 

pct

パーセンタイル関数 (pct) は指定されたフィールドのパーセンタイルを計算します。1 つのクエリに複数の pct 関数を使用できます。

 

| parse "value=*" as value
| pct(value, 95) as value_95pct

stddev

標準偏差関数 (stddev) は、分析対象の時間範囲内の数値の標準偏差値を計算します。この場合、グループは "group by" フィールドで指定します。

 

... | stddev(request_received) group by hour | sort by _stddev

sum

Sum は分析対象の時間範囲内で評価する数値フィールドの値を加算します。

 

... | sum(bytes_received) group by hostname

 

search operator

このセクションには、Sumo Logic operator、式および検索言語に関する詳細な構文、ルール、および例を記載しています。

operator 説明 制限事項

accum

accum operator はフィールドの累積合計を計算します。特定の時間範囲で集計することも、すべての時間間隔の累積合計数を計算することもできます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

_sourceCategory=IIS (Wyatt OR Luke)
| parse "[user=*]" as cs_username
| timeslice by 1m
| count as requests by _timeslice,cs_username
| sort by _timeslice asc,cs_username
| accum requests as running_total

ASN ルックアップ

Sumo Logic は、IP アドレスによって自律システム番号 (ASN) と組織名を確認できます。ASN が割り当てられていない IP アドレスに対しては Null 値が返されます。

 

_sourceCategory=stream "remote_ip="
| parse regex "(?<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
| lookup organization, asn from asn://default on ip = ip

backshift

backshift operator は経時的に変化する値を比較します。Backshift は rollingstd、smooth などの operator とともに使用できます。その結果はデータのスパイクによって影響を受けます (スパイクが原因で将来の結果が正しくない場合があります)。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

_sourcecategory=katta 
| timeslice by 1m 
| count by _timeslice,_sourcehost 
| sort + _timeslice 
| backshift _count,1 by _sourcehost

base64Decode

base64Decode operator は base64 文字列を ASCII 文字列に変換します。

 

| base64Decode("aHR0cDovL2NvZGVjLmFwYWNoZS5vcmcvY29tbW1vbnM=") as V

base64Encode

base64Encode operator は ASCII 文字列を base64 文字列に変換します。

 

| base64Encode("hello world") as base64

bin

bin operator を使用してヒストグラムの結果を並べ替えます。

 

_sourceCategory=analytics
| parse "ms: *" as time
| bin time width=10, min = 0, max = 500
| count by _bin, _bin_upper
| sort by _bin_upper

CIDR

CIDR operator はクラスレス ドメイン間ルーティング (CIDS) 表記を使用して IP ネットワーク トラフィックを分析し、分析を特定のサブネットに絞り込みます。CIDR 表記で IP アドレスのルーティング接頭辞を指定します。

 

(denied OR rejected AND _sourcecategory=firewall 
| parse "ip=*," as ip_address
| where compareCIDRPrefix("10.10.1.32", ip_address, toInt(27)) 
| count by ip_address

concat

Concat operator で複数の文字列、数値およびフィールドを 1 つのユーザ定義フィールドに結合できます。文字列の端と端をつないで、定義した新しい文字列に結合します。 

ダッシュボードではサポートされません。

... | concat(octet1, ".", octet2, ".",octet3, ".",octet4) as ip_address

contains

contains operator は 2 つの parse されたフィールドの文字列値を比較し、最初のフィールド値に 2 番目のフィールド値が含まれているかどうかを、ブール値の結果で返します。

 

... | contains("hello world", "hello") as containing

decToHex

decToHex operator は 2 の補数を負の値に使用して 16 桁以下の long 型値を 16 進文字列に変換します。

 

... | decToHex("4919") as V

diff

diff operator は連続する行のフィールドの変化率を計算します。結果を出力するには、diff で数値データを含むフィールドを指定する必要があります。数値以外の値は検索結果から削除されます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

* | parse "bytes transmited: '*'" as bytes
| timeslice 1m
| sum(bytes) as bytes by _timeslice
| sort _timeslice
| diff bytes as diff_bytes

フィールド

fields operator でクエリの結果に表示するフィールドを選択できます。fields operator を使用して、クエリとあまり関係のないフィールドを含む検索出力を整理できます。

 

_sourceCategory=access_logs 
| parse "[status=*]" as status_code 
| fields method, status_code

filter

filter operator は subquery のフィルタ基準に基づいて、他の検索結果を使用して、検索出力の絞り込みができます。filter operator は、フィルタ基準に一致するレコードのみを保持するため、検索結果を絞り込み、最適な情報のみを得ることができます。

この operator はクエリ 1 つあたり最大 100,000 データ ポイントを処理できます。制限値を超えるデータ ポイントは自動的にドロップされ、警告が発生します。 

_sourceCategory=HttpServers
| timeslice 1m
| count by _timeslice, _sourceHost
| filter _sourcehost in (outlier _count by _sourceHost | where _count_violation > 0)
| transpose row _timeslice column _sourcehost

format

format operator でメッセージ ログ内のフィールドのデータ (数値、文字列、日付など) を形式化して、1 つのユーザ定義文字列に結合できます。これにより、メッセージ ログ内のデータ (日付、金額など) を判読可能なフォーマットにします。フォーマット化しないと判読が困難な場合に使用します。

 

error 
| parse "fiveMinuteRate=*," as rate 
| format("%s : %s","Five Minute Rate is" , rate) as formattedVal

formatDate

formatDate operator でログ ファイル内の日付を必要な形式 (米国日付フ形式、欧州形式、タイムスタンプなど) の文字列にできます。

 

* | formatDate(now(), "YYYY-MM-dd") as today

geo lookup

Sumo Logic は、parse 済み IPv4 または IPv6 アドレスを地図上の地理的位置と照合できます。地図を作成する場合、lookup operator は parse 済み IP アドレスを、そのアドレスの発信元の緯度/経度に基づいた物理的な位置と照合します。

 

| parse "remote_ip=*]" as remote_ip
| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = remote_ip
| count by latitude, longitude, country_code, country_name, region, city, postal_code
| sort _count

haversine

haversine operator は、2 つの座標の緯度/経度値間の距離 (キロメートル) を返します。座標は、北/南または東/西に基づいて正または負の値にする必要があります。N/S や E/W は使用しません。

 

| haversine(39.04380, -77.48790, 45.73723, -119.81143) as distanceKMs

hexToDec

hexToDec operator は、負の値に 2 の補数を使用して 16 桁以下の 16 進文字列を long 型に変換します。

 

| hexToDec("0000000000001337") as V

if

Sumo Logic クエリには、2 つの形式の 3 項式を使用できます。1 つは、IF operator を使用して構成します。もう 1 つは疑問符 (?) operator を使用します。これらの式は、条件を true または false で評価します。値は各結果に割り当てられます。if-else 条件を簡単に表現するための方法です。

 

| if(status_code matches "5*", 1, 0) as server_error
Or
| status_code matches "5*" ? 1 : 0 as server_error

in

In operator はブール値を返します。指定したプロパティが指定したオブジェクトにあれば true、なければ false を返します。

 

| if (status_code in ("500", "501", "502", "503", "504", "505", "506", "401", "402", "403", "404"), "Error", "OK") as status_code_type

ipv4ToNumber

ipv4ToNumber operator でインターネット プロトコル バージョン 4 (IPv4) IP アドレスをオクテット ピリオド区切り形式から 10 進形式に変換します。この 10 進形式を使用すると、IP マスキングよりも IP アドレス間の比較が簡単になります。

 

_sourceCategory=service remote_ip
| parse "[remote_ip=*]" as ip
| ipv4ToNumber(ip) as num
| fields ip, num

isBlank

isBlank operator は、文字列にテキストが含まれているかどうかを確認します。特に、文字シーケンスがホワイトスペース、空白 ("")、または Null かどうかを確認します。1 つのパラメータを引数とし、ブール値を返します。変数が空白であれば true、変数にホワイトスペース、空白 ("")、または Null 以外の値が含まれていれば false を返します。

 

| where isBlank(user)

isEmpty

isEmpty operator は、文字列にテキストが含まれているかどうかを確認します。特に、文字シーケンスが空白 ("")、または Null かどうかを確認します。1 つのパラメータを引数とし、ブール値を返します。変数が空白であれば true、変数に空白 ("") または Null 以外の値が含まれていれば false を返します。

 

| if(isEmpty(src_ip),1,0) as null_ip_counts

isNull

isNull operator は 1 つのパラメータを引数とし、ブール値を返します。変数が Null であれば true、変数に Null 以外の値が含まれていれば false を返します。

 

| where isNull(src_ip)

isNumeric

isNumeric operator は文字列が有効な Java 数値かどうかを確認します。

 

| isNumeric(num)

isPrivateIP

isPrivateIP operator は IPv4 アドレスがプライベートかどうかを確認し、ブール値を返します。

 

| isPrivateIP(hostip)

isPublicIP

isPublicIP operator は IPv4 アドレスがパブリックかどうかを確認し、ブール値を返します。

 

| isPublicIP("10.255.255.255") as isPublic

isValidIP

isValidIP operator は値が有効な IP アドレスかどうかを確認します。isValidIPv4 と isValidIPv6 operator は、値がそれぞれ有効な IPv4 または IPv6 かどうかを確認します。 

 

| isValidIP("10.255.255.255") as isIP

join

join operator は 2 つ以上のデータ ストリームのレコードを結合します。結果はオンザフライで承認されるため、リアルタイムでテーブルを作成できます。その後、各テーブルに共通の値が検索結果として表示されます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

クエリの完成例: 

("starting stream from" OR "starting search")
| join 
(parse "starting stream from *" AS a) AS T1, 
(parse "starting search * from parent stream *" AS b, c) AS T2 
on T1.a = T2.c

length

length operator は文字列の文字数を返します。where 句内や新規フィールドを作成するために使用できます。文字列が Null の場合は、0 を返します。

 

| where length(query) <= 20

limit

limit operator は返された未処理メッセージまたは集計結果の数を削減します。"error" など特定の単語について、group by などの aggregation operator を使用せずに、クエリを実行する場合、limit は返された未処理メッセージの数を削減します。最初に group-by またはその他の aggregation operator を使用すると、limit operator はグループ化された結果の数を削減します。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| count by _sourceCategory
| sort by _count
| limit 5

logcompare

LogCompare operator を使用することで 2 つのログの集合である、基準ログ (過去のデータ) と対象ログ (現在のデータ) を比較できます。LogCompare 操作を実行するには、[Messages (メッセージ)] タブの [LogCompare] ボタンを使用して、適切にフォーマット化されたクエリを生成します。

ダッシュボードではサポートされません。

| logcompare timeshift -24h

logreduce

LogReduce のアルゴリズムはファジー理論を使用して文字列とパターンの類似性に基づいてメッセージをクラスタ化します。[LogReduce] ボタンおよび operator を使用すれば、デバイスの範囲や Web サイトでのトラフィックなどのアクティビティ パターンをすばやく評価できます。(旧 Summarize)。 

ダッシュボードではサポートされません。

| logreduce

ルックアップ

lookup operator を使用すると、ログ メッセージのデータを意味のある情報にマッピングできます。たとえば、lookup operator を使用して "userID" を実際のユーザ名にマッピングできます。または、lookup operator を使用してブラックリストに登録された IP アドレスを見つけることもできます。

 

| parse "name=*, phone number=*," as (name, phone)
| count by name, phone
//We recommend doing a lookup after an aggregation
| lookup email from https://compay.com/userTable.csv on name=userName, phone=cell

luhn (クレジット カードの有効性確認)

Luhn operator は Luhn のアルゴリズムを使用して、メッセージ ログでクレジット カード番号である可能性のある番号の文字列を確認して、有効かどうかを判定します。文字列を入力として、数値ではないすべての文字を削除して、結果の文字列が有効なクレジット カード番号かどうかを確認し、true または false を返します。

 

| parse regex "(?<maybecc>\d{4}-\d{4}-\d{4}-\d{4})" nodrop
| parse regex "(?<maybecc>\d{4}\s\d{4}\s\d{4}\s\d{4})" nodrop
| parse regex "(?<maybecc>\d{16})" nodrop
| if (luhn(maybecc), true, false) as valid

matches

matches operator を使用して、文字列をワイルドカード パターンまたは RE2 準拠正規表現と照合します。この operator はブール値を返します。where または if 式で使用できます。

 

| if (agent matches "*MSIE*","Internet Explorer","Other") as Browser
| if (agent matches "*Firefox*","Firefox",Browser) as Browser


 

median

指定したフィールドの中央値を計算するには、パーセンタイル (pct) operator をパーセンタイル引数を 50 に指定して使用します。

 

| parse "value=*" as value
| pct(value, 50) as median

merge

merge operator は指定したマージ方法を使用して、イベントのストリームを 1 つのイベントに削減します。これは特に Transactionize operator の subquery として使用すると便利です。

 

| parse "BytesSentPersec = \"*\"" as BytesPersec 
| merge BytesPersec join with "--", _messageTime takeLast

now

now operator は現在のエポック時間 (ミリ秒) を返します。formatDate operator とともに使用して、フォーマット化された現在時間を取得できます。

ダッシュボード パネルで使用できますが、ライブ モードで表示される now() 時間 (データが処理された時間) は検索時間とは一致しないため、結果は異なります。

検索の結果は、ライブ モードで表示される時間よりも数時間または数日後になる場合があります。

| now() as current_date

num

num operator はフィールドを数値に変換します。デフォルトのアルファベット順ではなく、数値を基準に結果をソートする場合は、クエリで num を使用すると便利です。必要に応じて、operator として double (別名の同機能) を使用することもできます。

 

| parse "Execution duration: * s" as duration
| num(duration)
| sort by duration

 

outliner

タイムスタンプの付いた一連の数値があるとすると、クエリで outlier operator を使用すれば、シーケンスの中で予想外と思われる値を識別でき、たとえば Scheduled Search のアラートや違反を識別できます。

 

クエリの完成例: 

_sourceCategory=IIS/Access
| parse regex "\d+-\d+-\d+ \d+:\d+:\d+ (?<server_ip>\S+) (?<method>\S+) (?<cs_uri_stem>/\S+?) \S+ \d+ (?<user>\S+) (?<client_ip>[\.\d]+) "
| parse regex "\d+ \d+ \d+ (?<response_time>\d+)$"
| timeslice 1m 
| max(response_time) as response_time by _timeslice
| outlier response_time window=5,threshold=3,consecutive=2,direction=+-

parseHex

parseHex operator で 16 桁以下の 16 進文字列を数値に変換できます。

 

| parseHex("12D230") as decimalValue

予測

predict operator は、タイムスタンプの付いた一連の数値を使用し、将来の値を予測します。たとえば、この operator を使用して現在のディスクの空き容量を取得し、システムのディスクがいっぱいになるタイミングを予測することもできます。

 

クエリの完成例:

_sourceCategory=taskmanager
| jobState=InQueue
| timeslice 1m
| count by _timeslice
| toDouble(_count)
| predict _count by 1m forecast=5

replace

指定した文字列のすべてのインスタンスを replace operator で別の文字列に置き換えることができます。置き換える文字列を一致する正規表現またはリテラル テキストで指定します。名前のすべてのインスタンスを検索して、新しい名前に変更したり、フィールド内の句読点を他の句読点に置き換えたりする場合などに使用できます。この operator は何かの名前を変更する必要がある場合に便利です。

 

| replace(query, ".","->") as query

rollingstd

定義したウィンドウでのフィールドのローリング標準偏差を rollingstd (ローリング標準) operator で計算できます。Rollingstd は _rollingstd という名前の新しい列にこの値を表示します。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| rollingstd _count,1 by _sourcehost

保存

Save operator を使用すると、クエリの結果を Sumo Logic ファイル システムに保存できます。後で lookup operator を使用して保存済みデータにアクセスできます。Save operator は、データを選択した場所に単純な形式で保存します。

ダッシュボードではサポートされません。

| save /shared/lookups/daily_users

sessionize

sessionize operator を使用して、あるログ メッセージ (システムから生成) から抽出された値で他のシステムのログ メッセージの相互に関連する値を検索できます。sessionize を実行すると、これらの関連イベントが同じページに表示されます。まとめられたログのスレッドをセッションと呼びます。

ライブ ダッシュボードまたは継続的なクエリではサポートされません。 

クエリの完成例:
(SearchServiceImpl Creating Query) or (Stream SessionId using searchSessionId) or (Started search with sessionId)
| sessionize "session: '*', streamSessionID: '*'" as (serviceSessionId, streamSessionId),
"Stream SessionId=$streamSessionId using searchSessionId=* and rawSessionId=*" as (searchSessionId, rawSessionId),
"Started search with sessionId: $searchSessionId, customerId: *, query: *" as (customerId, query)

smooth

smooth operator は、フィールドのローリング (または移動) 平均を計算して、ランダム変動をならした平均値を測定します。Smooth operator を使用して、クエリ内のデータ セットの傾向を把握できます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| smooth _count,1 by _sourcehost

sort

sort operator は集計検索結果を並び替えます。デフォルトのソート順は降順です。ソートした後に、top または limit operator を使用して、返されたソート結果の数を削減できます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| count as page_hits by _sourceHost
| sort by page_hits asc

substring

substring operator で文字列の一部 (サブストリング) のみを出力するオフセットを指定できます。この operator を使用して、たとえば従業員の名前全部ではなくイニシャルを出力する場合などに、文字列全体ではなく一部を出力できます。

 

| substring("Hello world!", 6)

timeslice

timeslice operator は時間間隔でデータを分割するので、一定の時間幅 (5 分間隔など) で結果をバケットに分割できます。Timeslice は検索結果を一定数のバケットに分割 (たとえば、最近 60 分間を 150 バケットに分割) することもできます。timeslice のエイリアス フィールドは省略可能です。エイリアスを指定しないと、デフォルトの _timeslice フィールドが作成されます。

1 日よりも大きなタイムスライスは、ダッシュボード ライブ モードでは使用できません。

| timeslice 1h
//You can further aggregate your data by these time groupings
| count by _timeslice

toLowerCase と toUpperCase

名前からわかるように、toLowerCase operator は文字列をすべて小文字に変換します。toUpperCase operator は文字列をすべて大文字に変換します。

 

| toUpperCase(_sourceHost) as _sourceHost 
| where _sourceHost matches "*NITE*"

top

top operator を sort operator とともに使用すると、返されたソート結果の数を削減できます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| top 5 _sourcecategory

total

total operator はフィールドの総合計を計算し、その値をすべての行に入力します。一連のフィールドで行をグループ化することもできます。

ダッシュボード パネルで使用できますが、検索では最初の group-by 句の後に追加する必要があります。

| total gbytes as total_memory

trace

trace operator は、非常に高度なフィルタとして機能し、個々のログ メッセージを関連付けます。trace operator に識別値 (ユーザ ID、IP アドレス、セッション ID など) を使用すると、この元の ID と関連のあるアクティビティ セット全体を取得できます。

ライブ ダッシュボードまたは継続的なクエリではサポートされません。 

| trace "ID=( [0-9a-fA-F] {4} )" "7F92"

transaction

transaction operator は、ログの関連するシーケンスを分析するために使用します。Web サイトのサインアップや E コマース データのトラッキング、分散型システムのシステム アクティビティのモニタリングまで、どのようなデータ タイプを分析する場合でも、transaction operator はさまざまな用途で使用できます。

データが未ソートの状態のテーブルはダッシュボードに追加できますが、フロー図の追加はできません。

フロー別のトランザクションはダッシュボードでは使用できません。

| transaction on sessionid fringe=10m 
with "Starting session *" as init, 
with "Initiating countdown *" as countdown_start, 
with "Countdown reached *" as countdown_done, 
with "Launch *" as launch 
results by transaction

transactionize

transactionize operator は、指定したフィールドで一致するログをグループ化します。グループ内のログはすべての定義済みフィールドで一致する必要があるその他の "group by" operator と異なり、transactionize はログを同じグループに割り当てる場合、1 つのフィールドが一致するだけですみます。

 

| parse "[system=001] [sessionId=*]" as system1Id nodrop 
| parse "[system=002][sessionId=*]" as system2Id nodrop 
| parse "[system=003][sessionId=*]" as system3Id nodrop 
| parse "system=001 with sessionId=*" as system1Id nodrop 
| transactionize system1Id, system2Id, system3Id

transpose

transpose operator は、集計検索結果に対応して動的に列を作成します。動的な機能であるため、クエリの出力を変更して、検索結果をフィールドに反映させます。最初は出力スキーマを知らなくても、クエリを設計できるということでもあります。

 

クエリの完成例:

_sourceCategory=service 
| parse "Successful login for user '*', organization: '*'" as user, org_id 
| timeslice 1d 
| count _timeslice, user 
| transpose row _timeslice column user

urldecode

urldecode operator は、クエリ内の URL をデコードし、デコードされた (エスケープされていない) URL 文字列を返します。

 

| urldecode(url) as decoded

urlencode

urlencode operator は、URL を ASCII 文字セットにエンコードします。

 

| urlencode(url) as encoded

where

検索クエリの結果を絞り込むには、"where" を conditional operator として使用します。where operator は、パイプ記号 ("|") で区切り、他の operator とは別個に配置する必要があります。つまり、以下の構成では機能せず、構文エラーが発生します。

 

//We recommend placing inclusive filters before exclusive filters in query strings
| where status_code matches "4*"
| where !(status_code matches "2*")

数式

一般的な数式をログ行から抽出した数値データに使用できます。数学関数またはグループ化関数に暗黙的に整数を入力する必要がある場合、文字列データは数値に変換されます。

operator 説明

基本

   

abs

絶対関数は x の絶対値を計算します。

| abs(-1.5) as v
// v = 1.5

round

四捨五入関数は x に最も近い整数を返します。

| round((bytes/1024)/1024) as MB

ceil

天井関数は最も小さな整数値に切り上げます。x よりも小さくない最小の整数値を返します。

| ceil(1.5) as v
// v = 2

floor

床関数は最も大きな整数値に切り下げます。x よりも大きくない最大の整数値を返します。

| floor(1.5) as v
// v = 1

max

最大関数は 2 つの値の大きなほうを返します。

| max(1, 2) as v
// v = 2

min

最小関数は 2 つの値の小さなほうを返します。

| min(1, 2) as v
// v = 1

sqrt

平方根関数は x の平方根値を返します。

| sqrt(4) as v
// v = 2

cbrt

立方根関数は x の立方根値を返します。

| cbrt(8) as v
// v = 2

指数および対数

   

exp

指数関数はオイラー数 e を x 乗して返します。

| exp(1) as v
// v = 2.7182818284590455

expm1

expm1 関数は exp(x)-1 の値を返します。exp(x) の丸めを補正します。

| expm1(0.1) as v
// v = 0.10517091807564763

log

対数関数は x の自然対数を返します。

| log(2) as v
// v = 0.6931471805599453

log10

log10 関数は x の常用対数を返します。

| log10(2) as v
// v = 0.3010299956639812

log1p

log1p 関数は x が小さな値でも log(1+x) を正確に計算します。

| log1p(0.1) as v
// v = 0.09531017980432487

三角関数

   

sin

引数の正弦 (ラジアン)。

| sin(1) as v
// v = 0.8414709848078965

cos

引数の余弦 (ラジアン)。

| cos(1) as v
// v = 0.5403023058681398

tan

引数の正接 (ラジアン)。

| an(1) as v
// v = 1.5574077246549023

asin

逆正弦 (ラジアン)。

| asin(1) as v
// v = 1.5707963267948966

acos

逆余弦 (ラジアン)。

| acos(x)\

atan

逆正接 (ラジアン)。

| atan(x)

atan2

4 象限逆正接。

| atan2(0, -1) as v
// v = pi

sinh

引数の双曲正弦 (ラジアン)。

| sinh(x)

cosh

引数の双曲余弦 (ラジアン)。

| cosh(x)

tanh

引数の双曲正接 (ラジアン)。

| tanh(x)

高度な関数

   

hypot

二乗の配列の合計の平方根を返します。

| hypot(1, 0) as v
// v = 1

toDegrees

角度をラジアンから度に変換します。

| toDegrees(asin(1)) as v
// v = 90

toRadians

角度を度からラジアンに変換します。

| toRadians(180) as v
// v = pi

 

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