クエリの自動候補と詳細検索

クエリの自動候補と詳細検索

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

ログのクエリーエディターでは、自動候補とクエリー言語を使用して、簡単な検索から高度な検索まで作成できます。クエリービルダーでは定義済みのフィルターを使用してクエリーを生成できますが、クエリーを手動で入力して、より具体的な検索条件を作成し、高度なログ分析を実行することもできます。  
 

クエリー言語 

クエリーは必ずログの種類から始まり、1つ以上の条件を含めて結果を絞り込むことができます。
クエリー形式。  

ログを検索するには、次の形式を使用します。

logtype='logtype_name' and conditions

各要素は次のとおりです。

logtype:検索するログの種類を指定します。

logtype_name:access、execute、application、scheduleなど、ログの種類の表示名です。

conditions:一致するログを絞り込むために使用する追加条件です。

例。  

logtype='access' and request_uri contains '/api'

このクエリーは、要求URIに/apiを含むアクセスログを返します。


サポートされている演算子   

クエリー言語では、ログを絞り込むための論理演算子、数値演算子、文字列演算子、nullチェック演算子を使用できます。

基本演算子

演算子

説明

and

一致する必要がある別の条件を追加します。

or

代替条件を追加します。

isEmpty

選択した項目に値がないログを検索します。

isNotEmpty

選択した項目に値があるログを検索します。

 

数値演算子

演算子

説明

>

より大きい

<

より小さい

=

等しい

>=

以上

<=

以下

 

例。  

logtype='access' and time_taken > 5000

要求の処理時間が5,000ミリ秒を超えるログを返します。


文字列演算子

演算子

説明

=

完全一致

!=

一致しない

contains

指定したテキストを含みます。

 

例: 

logtype='application' and message contains 'timeout'

単語「timeout」を含むアプリケーションログを返します。


集計演算子

集計演算子は、ログデータの集計と分析に使用します。

例として、次のものがあります。

  • count

  • count_distinct

  • sum

  • avg

  • groupby

  • histo

  • timeslice

詳細については、集計クエリーを参照してください。  

 

クエリーの種類     

クエリー言語では、主に次の2種類のクエリーがサポートされています。

  1. ログ取得クエリー

  2. 集計クエリー

 

ログ取得クエリー     

ログ取得クエリーは、特定の条件に一致するログの取得に使用します。

構文:

logtype='logtype_name' and 項目 演算子 値

時間の表記

クエリーで時間に基づく値を指定する場合は、次の表記を使用します。

時間単位

表記

1秒

1s

1分

1m

1時間

1h

1日

1d

 

例: 

要求の処理時間が10秒未満のアクセスログを検索します。

logtype='access' and time_taken < 10s

特定のテキストを含むログを取得します。

logtype='application' and message contains 'validation failed'

    

集計クエリー     

集計クエリーは、個々のログレコードを表示するのではなく、ログデータの集計と分析に使用します。

これらのクエリーは、たとえば次のような質問への回答に役立ちます。

  • 条件に一致するログはいくつありますか。

  • どのモジュールで最も多くの失敗が発生しましたか。

  • どの要求URIに最も頻繁にアクセスされていますか。

  • 平均実行時間はどれくらいですか。

  • 特定の時間間隔(例:毎分、毎時、毎日)に発生した要求、実行、またはスケジュール済み活動はいくつありますか。

形式:

logtype='logtype_name' and condition groupby field_name timeslice interval

詳細については、集計クエリーを参照してください。


クエリー作成のヒント   

  • 必ずlogtypeから始めます。

  • andを使用して結果を絞り込みます。

  • orを使用して結果を広げます。

  • 部分一致のテキスト検索にはcontainsを使用します。

  • 特定の値を検索する場合は完全一致(=)を使用します。

  • 自動候補を使用して、利用可能な項目と対応している値を確認します。

 

一般的な検索クエリー   

すべてのアクセスログを取得します。

logtype='access'

特定のユーザーのアクセス詳細を取得します。

logtype='access' and zuid='5873965'

成功した要求を取得します。

logtype='access' and status>=200 and status<300

サーバーエラーの要求を取得します。

logtype='access' and status>=400

  

集計クエリー  

集計クエリーを使用すると、個別のログレコードを取得する代わりに、ログデータを分析して要約できます。
件数、傾向、分布、パフォーマンス指標、頻出値などのインサイトが必要な場合に役立ちます。

たとえば、集計クエリーは次のような質問に回答するのに役立ちます。

  • 失敗した実行はいくつ発生しましたか。

  • どのモジュールで最も多くの失敗が発生しましたか。

  • 平均実行時間はどれくらいですか。

  • サービスにアクセスした一意のユーザーは何人ですか。

  • 時間の経過とともに活動はどのように変化しましたか。

 

集計クエリーの構造   

集計クエリーでは、集計演算子を使用して、一致するログを要約またはグループ化します。

例:

一致するログをカウントします。

logtype='access' count

項目別にログをグループ化します。

logtype='access' groupby status

時間の経過に伴う活動を分析します。

logtype='access' timeslice 1h

 

集計の種類   

ログクエリー言語では、次の2種類の集計に対応しています。

  • メトリック集計

  • バケット集計

 

メトリック集計   

メトリック集計では、一致するログから値を計算し、要約結果を返します。

対応している演算子  

演算子

説明

count

一致するログレコードの件数を返します。

count_distinct

項目内の一意の値の件数を返します。

sum

項目の合計値を返します。

min

項目の最小値を返します。

max

項目の最大値を返します。

avg

項目の平均値を返します。

sd

項目の標準偏差を返します。

stats

最小値、最大値、平均値、合計値、分散、標準偏差を返します。

percentile

項目のパーセンタイル範囲を返します。

top

項目からサンプル値または出現頻度の高い値を返します。

​
メトリック集計は、パフォーマンス分析、利用状況の統計、数値データの傾向の特定によく使用されます。

バケット集計   

バケット集計は、ログをカテゴリーまたは区間ごとにグループ化します。

サポートされている演算子  

演算子

説明

groupby

項目内の一意の値ごとにログをグループ化します。

distinct

項目から一意の値を返します。

histo

数値を区間または範囲にグループ化します。

timeslice

ログを時間間隔ごとにグループ化します。

  

集計オプション   

オプション

説明

sort

集計結果を並べ替えます。

limit

返される結果の数を制限します。

having

グループ化後に集計結果を絞り込みます。


Noteshaving演算子は、histo演算子ではサポートされていません。

   

groupbyの使用   

groupby演算子は、選択した項目に基づいてログをグループ化します。

構文。

logtype='logtype_name' groupby field_name

複数のgroupby項目  

logtype='logtype_name' groupby field1, field2

Info1つのクエリーで最大4項目を使用して結果をグループ化できます。

結果の並べ替え  

項目値での並べ替え。

logtype='access' groupby zuid sort _field desc

件数での並べ替え。

logtype='access' groupby zuid sort _count asc

結果数の制限。

logtype='access' groupby zuid limit 100

  1. デフォルトの上限:10
  2. 最大上限:1,000

集計結果の絞り込み。  

logtype='access' groupby request_url having _count > 1000

  

groupbyの制限事項   

  • groupbyは、対応している項目でのみ使用できます。

  • _countで並べ替えられた結果はページ分割できません。

  • 100文字を超える文字列値は切り捨てられる場合があります。

  • 非常に大きなデータセットでは、件数と上位の値が概算になる場合があります。

Notes大規模なデータセットでは、ログのインデックス化と集計が分散処理されるため、グループ化された件数と上位の値が概算になる場合があります。  

 

histoの使用  

histo演算子は、数値を間隔ごとにグループ化します。

構文。  

logtype='logtype_name' histo field_name interval

例。 

logtype='access' histo time_taken 1000

 

カスタム範囲  

logtype='access' histo time_taken range(10,10 to 100,100 to 1000,1000)

これにより、値は次のようにグループ化されます。

  • 10ミリ秒未満

  • 10ミリ秒から100ミリ秒

  • 100ミリ秒から1,000ミリ秒

  • 1,000ミリ秒超

 

timesliceの使用   

timeslice演算子は、ログを時間間隔ごとにグループ化します。

サポートされている単位  

時間単位

表記

1秒

1s

1分

1m

1時間

1h

1日

1d


構文。 

logtype='logtype_name' timeslice interval

例。  

logtype='access' timeslice 1h

 

結果の並べ替え  

countによる並べ替え。

logtype='access' timeslice 5m sort _count

intervalによる並べ替え。

logtype='access' timeslice 5m sort _field desc

   

集計結果の並べ替え   

集計結果は、計算値を使用して並べ替えできます。

例。

logtype='access' groupby request_url sort avg(time_taken) desc
logtype='access' groupby request_url having _count > 1000
sort avg(time_taken) desc

  

クエリーの制約    

count演算子   

count演算子は、クエリーの末尾でのみ使用できます。

有効な例。

logtype='execute' and status='failed' count

無効な例。

logtype='execute' count and status='failed'

count演算子の後に、追加の条件や集計演算子を追加することはできません。

countとcount_distinct   

同じクエリー内でcount演算子とcount_distinct演算子を一緒に使用することはできません。

要件に応じて、いずれか一方のみを使用してください。

一般的な集計クエリー   

要求パフォーマンスの分析   

要求の処理にかかった最大時間を確認します

logtype='access' max(time_taken)

 

カード作成要求の最大処理時間と最小処理時間を取得します

logtype='access' and request_urlcontains '/job' and method
contains 'post' max(time_taken) min(time_taken)

    

使用状況の分析   

一意のURLのうち、処理に10秒を超える時間がかかったものを取得します

logtype='access' and time_taken > 10s groupby request_url

  

ログのグループ化と分類   

よくアクセスされる要求URLを件数付きで取得します

logtype='access' count(request_url) groupby request_url

各モジュールでアクセス頻度の高いリモートIPを取得します

logtype='access' distinct(zuid) groupby _zl_host

  

時間経過に伴うログ分布を取得します

logtype='access' and request_urlcontains '/job' timeslice 1h