Simple Log Service (SLS) では、インデックスを設定しなくても、ターゲットフィールドをスキャンしてログのクエリと分析を実行できます。スキャンクエリ (SPL) とスキャン分析 (SQL) に対応しています。
前提条件
手順
Log Serviceコンソールにログインします。
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
タブで、管理するログストアをクリックします。
-
検索ボックスに、スキャンステートメントを入力します。
対応形式:
クエリステートメント | SPL ステートメントまたはクエリステートメント | set session mode=scan; 分析ステートメント (標準 SQL)。 -
右上隅で、時間範囲を設定します。
相対時間、期間、またはカスタム時間範囲を設定できます。最小粒度は 1 分です。
自動スキャン
自動スキャンとページの切り替えは、スキャンクエリでのみ利用できます。
スキャン検索の後、[このスキャンでは結果が見つかりませんでした] と表示された場合は、[スキャン] アイコンをクリックします。システムは、一致するログが見つかるか、試行回数が 20 回に達するまで自動的にスキャンします。
[自動スキャン] ダイアログボックスは、スキャンの進行状況を表示します。
各スキャン記録には、スキャンシーケンス番号、現在の結果数、スキャン進捗率、処理タイムスタンプ、およびスキャンステータス (例: [スキャン完了、結果なし]) が表示されます。
ページネーション
ページを切り替えると、SLS は再度スキャンを実行して、結果が継続的に得られるようにします。
各スキャンでは、最大 100,000 件のログが処理されます。ページに表示される結果が [ページあたりのアイテム数] の値より少なくても、次のページに移動できます。これは、現在の 100,000 件のログバッチ内で見つかった一致するログの数が [ページあたりのアイテム数] の値より少ないことを意味します。
たとえば、合計 200,000 件のログがあり、[Items per Page] が 20 に設定されている場合、あるスキャンでは 15 件のログしか返されないのに、[Next Page] ボタンはアクティブなままということがあります。これは、最初の 100,000 件のログのうち 15 件しか一致しなかったことを意味します。[Next] をクリックすると、残りの 100,000 件のログがスキャンされます。
例
-
成功したリクエストのログをクエリします。
-
スキャンステートメント
* | where Status='Success' -
スキャン結果: クエリ結果はスキャンモードで返され、スキャンされたデータは 56.74 KiB、スキャン進捗は 4.19% です。ヒストグラムには時間の経過に伴うログの分布が表示され、元のログレコードには [アラートステータス] (値: 非アクティブ) や [条件] (値:
Count:__count__ > 0; Condition:inflow > 27) などのフィールドが含まれています。
-
-
特定のファイルのログをクエリします。
-
スキャンステートメント
* | where file = '/var/log/nginx/test.log' -
スキャン結果:スキャンモードでは 375.46 KiB のデータがスキャンされ、
fileフィールドの値が/var/log/nginx/test.logである 2 件のログが返されます。ログのタイムスタンプは 2024-04-24 10:38:13 と 2024-04-24 10:38:00 です。
-
-
ステータスごとにリクエストをカウントします。
-
スキャンステートメント
説明スキャン分析では、SQL ステートメントの前に
set session mode=scan;を指定する必要があります。* | set session mode=scan; SELECT Status, count(*) AS PV GROUP BY Status -
スキャン結果: スキャンされた行は 470 行、データは 1.29 MiB です。クエリ結果テーブルには、[ステータス]が成功、[PV]が 470 と表示されます。
-
API 呼び出し
プログラムでスキャンを使用するには、GetLogs API を呼び出します。詳細については、「Logstore 内のログのクエリ」をご参照ください。
query パラメーターの分析ステートメントに set session mode=scan; を追加します。例: * | set session mode=scan; select count(*) as pv。