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

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

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

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

クエリー言語 

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

 

集計の種類   

Logsクエリー言語は、次の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)

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

  • 10ms未満

  • 10ms~100ms

  • 100ms~1,000ms

  • 1,000ms超

 

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   

同じクエリー内でcountcount_distinct演算子を併用することはできません。

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

一般的な集計クエリー   

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

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

logtype='access' max(time_taken)

 

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

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

    

使用状況の分析   

処理に10秒を超える時間がかかった一意のURLを取得する

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