ヘルプ アプリケーションログ管理 アプリケーションログのクエリ言語

アプリケーションログのクエリ言語

Site24x7 アプリケーションログにより、ログの収集、統合、インデックス化、検索を行うことができます。ログプロファイルログタイプを追加しすることでログ管理を設定できます。
これらログはクエリ言語で検索してフィルターでき、容易に管理できます。

概要

構文

サポートしているオペレーター

オペレーター 詳細
logtype ログタイプを指定
monitor_name 特定の監視からログを検索
monitor_group 特定の監視グループからログを検索
tags タグが付与されている監視からログを検索
and 前のクエリを含むというクエリ制限を追加
or 前のクエリを除外するというクエリ制限を追加
ratio 2つの異なる検索条件にマッチするログメッセージの数の比を表示
groupby 特定の項目で繰り返されている値の数を表示
timeslice 特定の間隔に基づいてログの時間を表示
is empty 関連する項目がnull値である
is not empty 関連する項目がnull値でない
sum 項目の選択した値の合計を返す
min 項目の最小値を返す
max 項目の最大値を返す
avg 項目の平均値を返す
sd 標準偏差値を返す
distinct 異なる値のみを返す
count_distinct 異なる値の数を返す
count クエリにマッチするログメッセージの数を返す
include 検索結果から選択した項目のみを表示
exclude 検索結果から選択した項目を除外して表示
before 検索時間から1時間、1日、1週間前のクエリ結果を返す
having groupbyクエリに条件を適用し、その結果を取得
sort いくつかの項目で値をソートした結果を返す
STARTSWITH 指定された検索条件で始まる値を指定
LIKE 値にアスタリスクを用いて検索条件を使用可能
in 複数の'or'と'='を用いることと同義
notin 複数の'and'と'!='を用いることと同義
histo 数値項目のヒストグラムを取得
range ヒストグラムの範囲を変更
range interval ヒストグラムの一定間隔の結果を返す
tophits グループ化した要素の直近の値を取得
percentage 比率を100として表示
percentile and percents 指定された割合のデータが存在する値

数値のオペレーター

項目が数の項目の場合、その値にマッチするオペレーター(>, <, =, !=, <=, or >=)を利用できます。

オペレーター 詳細
> より大きい
< より小さい
= 等しい
>= より大きいか等しい
<= より小さいか等しい

メモ:

項目値の単位を生データの単位ではなく変換して取得することもできます。

たとえば、timetaken項目の単位はミリ秒です。そのため、クエリを次のように記述できます。

logtype="Apache Access Logs" and timetaken>1000

上記を次のように記述することもできます。

logtype="Apache Access Logs" and timetaken>1s

文字のオペレーター

項目が文字項目または数値項目でない場合、以下のオペレーター(=, !=)と"CONTAINS"を利用できます。

オペレーター 詳細
= 等しい
!= 等しくない
CONTAINS 部分文字列がある
DOES NOT CONTAIN その値を含まない結果を返す

クエリテンプレート

クエリの一般的なフォーマットは次のようになります:

logtype = "examplelogtype" and "exampleNumericField1" [>,<,=,<=,>=] "dummynumber" or "examplestringfield1" [CONTAINS,!=,=] "examplesubstring1" groupby "examplestringfield2" timeslice [h,d,m]

クエリの制限事項

  • timesliceとcountの後には他のクエリを記述できません。
  • groupbyの後には必ず、timesliceが記述されます。
  • countとcount distinctは共存できません。
  • countはクエリの最後にのみ利用でき、そのクエリにはgroupby、timeslice、aggregationを含められません。

クエリ言語

クエリ言語を用いた検索は、次のフォーマットで可能です:

logtype="(name of log type)" and (other conditions)

このフォーマットでは次のようになります:

  • (name of log type) は、アカウントに追加しているログの種類の表示名でないといけません。
  • (other conditions) は、どのような条件でも追記できます。

サンプルクエリ:

logtype="SysLogs" and application CONTAINS "systemd"

この例では次のようになります:

  • (name of the log type) は、SysLogsです。
  • (other conditions) は、"systemd"を含む(CONTAINS)アプリケーションです。

結果: このクエリは、ログタイプ"Syslog"でアプリケーション項目が"systemd"を含むのログエントリーを取得します。

クエリの組み合わせ

次の例のように複数の条件を使用できます。

  • 監視名を用いた簡単なクエリ

logtype="SysLogs" and monitor_name CONTAINS "Zylker-server" and application CONTAINS "kernel"

このクエリでは、監視名とアプリケーションのクエリ項目がログの検索に使用されます。
監視名"Zylker-server"および"kernel"を監視名にもつアプリケーションが表示されます。

logtype="SysLogs" and (application CONTAINS "kernel" or application CONTAINS "systemd") and message CONTAINS "pcieport"

このクエリでは、括弧内の条件が一緒にグループ化されています。
アプリケーション項目に"kernel"または"systemd"を含むエントリーすべてが結果に表示されます。

  • Timeslice

クエリの最後に timeslice(期間)を追加することにより、クエリで選択された合計期間のテーブルを作成します。クエリで選択されたtimesliceとログエントリーの数により分割されます。可能なtimesliceの値は単位 d (day / 日)、h (hour / 時間)、 m (minute / 分) を用います。

logtype="SysLogs" timeslice 2h

上記クエリでは、最新24時間の検索で12エントリーが表示されます(24時間の2時間ごとのtimesliceで合計12のエントリー)。
  • Or

提供された条件のいずれかにマッチする値を返します。

logtype="IIS Access Logs" and (method="GET" or method="POST" or method="PUT")

上記クエリでは、すべての GET / POST / PUT メソッドリクエストを取得します。

  • Ratio

2つのクエリ出力間の比を表示できます。
orを使用して2つの条件を比較し、その比を検索結果に表示します。timesliceを使用して、特定の時間間隔で、割合をフィルターできます。

logtype="Apache Access Logs" and (status=200 or status>200) ratio
logtype="Apache Access Logs" and (status=200 or status>200) timeslice 1h ratio
  • groupby

入力された項目についての内訳とその数を表示します。

logtype="SysLogs" groupby application

上記クエリでは、項目"application"についての内訳とその数が表示されます。

  • SUM(), MIN(), MAX(), AVG()

これにより、ログの数値項目について最小、最大、平均を表示します。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) SUM(timetaken)

このクエリは、timetakenの値について計算された値を取得します。

  • Standard Deviation

データの標準偏差値を検索できます。これはデータセットの変動量を確認するのに役立ちます。
sdを用いて、応答時間や要した時間などのメトリックの平均値からの変動を把握します。

クエリ例として次のように用います。

logtype="Apache Access Logs" sd(responsesize)

ログ全体の応答量の標準偏差値を返します。

  • Distinct

指定した項目のテーブルを取得できます。

logtype="ServerLogs" distinct(threadname)

上記により、異なるスレッド名とその数が表示されます。

  • Count distinct

指定した項目の数とグラフを取得します。

logtype="ServerLogs" COUNT_DISTINCT(threadname)
countとcount distinctは共存できません。
  • Count

クエリの最後にcountを用いることにより、クエリにマッチするログメッセージの合計数を取得できます。

logtype="Windows Event Logs" and source CONTAINS "Microsoft-Windows-Security-Auditing" count

例として、上記の条件にマッチするログメッセージの数を次のように表示します。

  • groupbyとaggregation計算の組み合わせ

次の検索により、aggregation計算の値のコラムを追加したgroupbyテーブルが表示されます。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) groupby stemuri

上記では、 ユニークなstemuriのMin、Max、Avg、Countを表示します。

  • timesliceとaggregation計算の組み合わせ

次の検索により、aggregation計算の値を追加したtimesliceテーブルが表示されます。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) timeslice 1h

上記では、 1時間のtimesliceでMin、Max、Avg、Count が表示されます。

  • groupbyとtimesliceの組み合わせ

次の検索により、groupbyの値のコラムを追加したtimesliceテーブルが表示されます。左から右に、列は次のように表示されます。
timeslice、count、value(s)

logtype="SysLogs" groupby application timeslice 1d

上記では、項目"application"で同じ値をもつ、日次のtimesliceのログエントリー数が表示されます。

  • 複数のgroupby

次の検索により、複数のgroupbyのテーブルが表示されます。

logtype="ServerLogs" groupby sourcefilename,loglevel,threadname

上記では、複数のgroupby条件でグルーピングされます。

  • Include

指定した項目を含めて結果に表示します。

logtype="SysLogs" | include(application,message)

上記では、結果にapplication, messageが追加されて表示されます。


  • Exclude

指定した項目を結果から除外して表示します。

logtype="SysLogs" | exclude(pid)

上記では、結果からmessage pidを除いた状態で表示します。


  • Before

1時間、1日、1週間前のクエリ結果を表示できます。

クエリ結果よりも前の値を取得したい場合にbeforeを使用してください。

logtype="Apache Access Logs" avg(responsesize) | before 7d

上記では、クエリ実行時間から1週間前の平均応答サイズを取得しています。

  • Having

groupbyクエリに追加条件を適用してその結果を出力します。

logtype="Apache Access Logs" groupby requesturi having avg(responsesize)>10240

上記では、平均応答サイズが10240を超過しているリクエストURLを取得しています。.


  • Sort

様々な項目でリクエストをソートします。

クエリ結果をいくつかの値で整理や分類を行いたい場合に、sortを使用します。

メモ:グループクエリにのみ使用できます
logtype="Apache Access Logs" groupby requesturi sort avg(responsesize)

上記では、平均応答サイズの値でソートしたリクエストURLの結果を表示します。

  • STARTSWITH

指定された検索条件で始まる値を取得します。LIKEと*を末尾に用いた結果と同様のクエリです。例として、STARTSWITH "Log"とLIKE "Log*"の検索は同じ値を返します。

logtype="Windows Event Logs" and source STARTSWITH "Micro"

上記では、Microで始まるすべてのリソースを取得します。

  • LIKE

これは大文字と小文字が区別され、値にアスタリスクが付いた検索条件を使用できます。
例として、LIKE "Log*n"というクエリの場合はLogonとLoginの両方がマッチします。

logtype="Windows Event Logs" and source LIKE "Microsoft*Auditing"

上記では、Microsoft Security Auditing、Microsoft Windows Auditingなどのリソースを取得します。

LIKEでは先頭に*を使用することはできません。
例として、source LIKE "*"や、SOURCE LIKE "*Windows"は機能しません。

  • in

複数の'or'と'='を用いたクエリと同様の働きをします。クエリセットの全ての値が比較されます。
例えば、Status in("200","404","500")と(status="200" or status="404" or status="500")は同じ結果が取得されます。

logtype="Apache Access Logs" and referer in("Refer 2, "Refer 1")

上記では、(referer="Refer 2" or referer="Refer 1")と同じ結果が取得されます。

  • notin

複数の'and'と'!='を用いたクエリと同様の働きをします。クエリセットの全ての値が比較されます。
例えば、status notin("200","404","500")と(status!="200" and status!="404" and status!="500")は同じ結果が取得されます。

logtype="Apache Access Logs" and referer notin("Refer 2, "Refer 1")

上記では、(referer!="Refer 2" or referer!="Refer 1")と同じ結果が取得されます。

  • histo

数値項目のヒストグラムを取得します。これはgroupbyと同様の働きをしますが、共通の値ではなく、値の範囲で返されます。

logtype="Apache Access Logs" histo responsesize

上記では、応答サイズのヒストグラムが取得されます。

メモ:

histogramとgroupbyを用いて、ログデータをさらに分割して分析できます。

例1:

logtype="Apache Access Logs" histo responsesize groupby requesturi


上記では、応答サイズの数とヒストグラムの分類によってリクエストURLをグループ分けします。


例2:

logtype="Apache Access Logs" groupby requesturi histo responsesize

上記では、応答サイズのヒストグラムでリクエストを分類した上で、さらにリクエストURLの数で分類した結果を取得します。
  • range

ヒストグラムで指定した範囲の結果取得します。rangeはhistoの後に指定します。

logtype="Apache Access Logs" histo responsesize range(3800 to 4000,4200 to 4400)

上記では、指定した値の範囲でヒストグラムが取得されます。

  • range interval

ヒストグラムで指定した時間範囲の結果を取得します。range intrevalはhistoの後に指定します。

range intervalがヒストグラム項目の後に指定されている場合、その指定した時間範囲でヒストグラムが取得されます。

logtype="Apache Access Logs" histo timetaken 1s

上記では、値の1秒間の時間範囲でヒストグラムが取得されます。

  • tophits

tophitsをgroupbyと使用して、グループ化された要素から直近の値を抽出します。

logtype="Kafka-Topic-Status" tophits(topicname,offset,lag) groupby topicname

上記により、トピックオフセットやラグ数といった様々なトピックステータスの現在の値を取得できます。

  • percentage

ログから一般的な統計情報を抽出します。

logtype="IIS Access Logs" and statuscode>=400 percentage

上記により、失敗したリクエストのパーセンテージを表示できます。

  • percentile and percents

パフォーマンスデータをより正確に表示します。

logtype="IIS Access Logs" percentile(TimeTaken) percents(95)

上記により、リクエストの処理時間の95パーセンタイルで表示します。

  • percentile、timeslice、aggregationの組み合わせ

次の検索により、averageとpercentileの両方の値をトレンド線で生成します。aggregation、percentile、timesliceクエリでは、特定の期間のパーセンタイル値を集約して表示します。

例えば、時間ベースで平均とパーセンタイル結果を表示したい場合は、次の組み合わせを使用してください。

logtype="IIS Access Logs" avg(TimeTaken) percentile(TimeTaken) percents(99) timeslice 15m

percentiles-averages-comparison

最近の検索:

毎回タイピングする代わりに、最近の検索履歴から最近の検索を再使用できます。次の手順で確認できます:

  1. 検索ボックスでsaved-recent-iconアイコンをクリックします
  2. 保存された検索の下に最近の検索クエリを確認できます。検索クエリを保存することも可能です

関連ドキュメント: