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

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

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

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

クエリー言語 

クエリーは必ずログの種類から始まり、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