コンテンツにスキップ

検索


エクスプローラーの検索バーは、テキスト検索、フィールドフィルター、JSON 検索、関数クエリをサポートしています。DQL モードに切り替えて、完全なクエリ文を作成することもできます。

検索方式の選択

クエリ要件 使用方法
テキスト内容を検索 テキスト検索 connection timeout
連続するフレーズを検索 フレーズ検索 "connection timeout"
フィールドと値でフィルター フィールドフィルター service:api
JSON 内の埋め込みフィールドを検索 JSON 検索 @meta.service:api
MD5 マスキングデータを検索 MD5 関数クエリ 下記参照
IP ネットワークセグメントを検索 CIDR 関数クエリ CIDR(@client_ip, 10.0.0.0/8)
複雑なクエリや計算を実行 DQL クエリ L::logs:(*) {...}
検索とフィルター

テキストを直接入力すると、システムはテキスト検索を実行します。フィールド名:フィールド値 を使用すると、フィールドフィルターを実行します。たとえば、error timeout はテキスト検索に、service:apiservice フィールドのフィルターに使用されます。

複合検索

ログエクスプローラーは、検索バーのドロップダウンリストで ANDOR などのよく使われる複合演算子を提示します。

  • AND:前後の両方の条件を満たす
  • OR:前後のいずれかの条件を満たす
  • 複合演算子は大文字でなければなりません
  • 小文字の andor は通常のテキストとして検索されます

例:

service:api AND status:error
source:nginx OR source:apache
(service:api OR service:web) AND status:error

テキスト検索

エクスプローラーのテキスト検索は、search() クエリ構文を使用します。システムは入力内容をトークン分割し、すべてのトークンを同時に含むデータを検索します。

  • 中国語は文字単位でトークン分割されます
  • 英語はスペース、句読点などの単語の境界でトークン分割されます
  • 英語の検索では大文字と小文字は区別されません
  • 各トークンは連続して出現する必要はありません

トークン検索

テキストを入力すると、システムは自動的にトークン分割を実行します。データにすべてのトークンが含まれていれば、トークン間に他の内容が存在しても検索結果に含まれます。

中国語の例:

入力:我喜欢苹果

一致する可能性:
- 我喜欢苹果
- 我很喜欢吃苹果
- 苹果是我喜欢的水果

上記の結果はすべて、検索内容のすべての有効なトークンを含んでおり、これらのトークンは連続して出現する必要はありません。

英語の例:

入力:connection timeout

一致する可能性:
- connection timeout
- Connection retry timeout
- connection request failed due to timeout

上記の結果はすべて、"connection" と "timeout" の両方を含んでおり、トークンは連続して出現する必要はなく、大文字小文字も区別されません。

フレーズ検索

完全で連続したフレーズで検索する必要がある場合は、半角の二重引用符 " で検索内容を囲みます。

  • "我喜欢苹果":「我喜欢苹果,也喜欢香蕉」にマッチし、「我很喜欢吃苹果」にはマッチしません。
  • "connection timeout":「connection timeout occurred」にマッチし、「connection retry timeout」にはマッチしません。
ストップワード

頻繁に出現し、検索において意味の小さい一部の単語は全文インデックスに含まれません。検索結果が期待と異なる場合は、全文インデックスストップワード一覧を参照してください。

JSON 検索

前提
  • ワークスペースが 2022年6月23日 以降に作成されていること
  • ログエクスプローラーで使用すること

JSON 検索は、ログの message 内の埋め込みフィールドをクエリするために使用します。message は有効な JSON 形式である必要があります。クエリ形式は @フィールド名:フィールド値 です。ネストされたフィールドをクエリするには、. で各レベルのフィールド名を連結します。

たとえば、message の内容が次のとおりです。

{
  "__namespace": "tracing",
  "cluster_name_k8s": "k8s-demo",
  "meta": {
    "service": "ruoyi-mysql-k8s",
    "name": "mysql.query"
  }
}

次の条件でクエリできます。

@cluster_name_k8s:k8s-demo       # 完全一致
@cluster_name_k8s:k?s*           # ワイルドカード一致
@meta.service:ruoyi-mysql-k8s    # ネストフィールドのクエリ
@meta.service:ruoyi?mysql*       # ネストフィールドのワイルドカード一致

ここで、* は0個以上の任意の文字にマッチし、? は1文字にマッチします。このワイルドカードはフィールドフィルターにのみ使用され、通常のテキスト検索には適用されません。

フィールド名に . が含まれる場合

JSON 検索では、. はデフォルトでネストされたフィールドの階層を表します。フィールド名自体に . が含まれる場合は、バックスラッシュ \ でエスケープする必要があります。

シナリオ 正しい書き方 説明
ネストフィールド log.tag をクエリ @log.tag:error . はフィールド階層を表す
フィールド名 user.id をクエリ @user\.id:1001 \. をフィールド名の一部としてエスケープ

フィールド名を二重引用符で囲むことはサポートされていません(例:@"user.id":1001)。

MD5 関数クエリ

機密データスキャンルールで MD5 暗号化が使用されている場合、元の値は元に戻せない32桁の16進文字に置き換えられます。元の値を使用してマスキング後のデータを特定する必要がある場合は、エクスプローラーで MD5 関数クエリを使用できます。

クエリ形式:

フィールド名:md5|元の値

たとえば、color フィールドの元の値 red が MD5 暗号化されている場合、次のように入力します。

color:md5|red

システムは red の MD5 値を計算し、color フィールドに保存されているハッシュ値と照合します。MD5 は大文字小文字とスペースを区別するため、入力内容が暗号化前の元の値と完全に一致していることを確認してください。

MD5 暗号化は元に戻せないため、ハッシュ値から元の内容を復元することはできません。詳細は機密データスキャンを参照してください。

DQL クエリ

関数、式、集計、複雑なフィルター条件を使用する必要がある場合は、検索バー右側の DQL ボタンをクリックして、DQL クエリモードに入ります。

システムは現在のエクスプローラーに応じて、対応するデータタイプとデータソースを自動的に設定します。たとえば、次の DQL クエリは、直近1時間以内に messageconnection timeout を含むログを検索します。

L("default")::logs:(message) {search(message, "connection timeout")} [1h]
  • L はログデータを表します
  • "default" はログインデックスを表します
  • logs はデータソースを表します
  • [1h] は直近1時間のデータをクエリすることを意味します

DQL モードに入ると、完全な DQL 文を使用する必要があります。エクスプローラーごとに対応するデータタイプが異なるため、現在のエクスプローラーで他のデータタイプに切り替えることはできません。

ログエクスプローラー分析モード

ログエクスプローラーで高度なクエリとページ分析設定を組み合わせて使用する場合、クエリ文に BY グループ条件が含まれていると、ページは文内の BY を無視し、ページ設定の分析ディメンションを優先します。これにより、重複または競合するグループ条件の発生を防ぎます。

CIDR 関数クエリ

CIDR 関数は、指定された IP フィールド内で特定のネットワークセグメントに属するデータをクエリするために使用します。文字列一致ではなく、ネットワークセグメントの範囲一致を実行します。

CIDR はネットワークアドレスとプレフィックス長で構成されます(例:13.0.0.0/8)。プレフィックス長が大きいほど、一致するアドレス範囲は小さくなります。IPv4 では /32 は1つの IP アドレスのみに一致します。

クエリ形式:

CIDR(@フィールド名, IPネットワークセグメント)

たとえば、network.client.ip フィールド内で 13.0.0.0/8 ネットワークセグメントに属するデータをクエリします。

CIDR(@network.client.ip, 13.0.0.0/8)
一致する例:
- 13.0.0.1
- 13.100.20.5
- 13.255.255.255

一致しない例:
- 12.255.255.255
- 14.0.0.1

単一の IPv4 アドレスを正確に一致させる必要がある場合は、/32 を使用します。

CIDR(@network.client.ip, 13.10.20.30/32)

フィールドの値が空、形式が正しくない、または有効な IP アドレスでない場合は、一致しません。

DQL モードでは、小文字の cidr() 関数を使用し、ネットワークセグメントを二重引用符で囲むことができます。

L::nginx:(*) {cidr(client_ip, "13.0.0.0/8")} [1h]

検索履歴

ログエクスプローラーのインデックス選択履歴は、検索条件とフィルター条件の履歴とは独立しており、ログインデックス検索ボックス右側の履歴アイコンから開きます。

現在のユーザーは、ローカルブラウザで最近使用した検索条件とフィルター条件を表示できます。最大100件まで保持されます。履歴条件をクリックすると、現在のエクスプローラーで再利用できます。

検索履歴の統合について

エクスプローラーはプラットフォーム内の汎用ツールとして、複数の機能に適用されます。機能間の検索履歴の互換性には、いくつかの違いがあります。

  • RUM > Session/View/Resource/Action/Long Task/Error の6つのエクスプローラーの検索履歴は互換性があります
  • コンテナエクスプローラーと Kubernetes エクスプローラーの検索履歴は互換性があります
  • リソースカタログエクスプローラーの検索履歴は互換性があります
  • ログエクスプローラーとログエラー追跡エクスプローラーの検索履歴は互換性があります
  • トレースエクスプローラー、APM エラー追跡、プロファイリングエクスプローラーの検索履歴は互換性があります

上記を除き、その他のエクスプローラーはそれぞれ独自に検索履歴を保持します。

関連情報

フィードバック

このページは役に立ちましたか?