スケジュール化 SQL 機能は、スケジュールされた時刻にデータを分析します。また、データを集計、射影、フィルタリングしてストレージに保存します。このトピックでは、Simple Log Service (SLS) でスケジュール化 SQL ジョブを作成する方法について説明します。このジョブは、ソース Logstore のデータを処理し、結果を宛先 Logstore に保存します。
スケジュール化 SQL 機能はパブリックプレビュー中であり、無料でご利用いただけます。パブリックプレビュー終了後は、専用 SQL で消費されるコンピューティングリソースに対して課金されます。課金の詳細については、「フィーチャーごとの課金モデルの課金項目」をご参照ください。
前提条件
ソース Logstore の準備
SLS プロジェクトと標準 Logstore を作成します。その後、ログを収集し、インデックスを作成します。詳細については、「プロジェクトの管理」、「標準 Logstore の作成」、「データ収集の概要」、および「インデックスの作成」をご参照ください。
宛先 Logstore の準備
ジョブの結果を保存する Alibaba Cloud アカウントで、SLS プロジェクトと標準 Logstore を作成します。その後、インデックス作成を有効にします。
操作手順
スケジュール化 SQL ジョブを作成する権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーを使用して、Simple Log Service コンソールにログインします。
[プロジェクト] セクションで、ソース Logstore を含むプロジェクトをクリックします。
左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。[Logstores] リストで、分析したい Logstore の名前をクリックします。この Logstore が、スケジュール化 SQL ジョブのソース Logstore になります。
クエリ文を入力します。次に、[過去 15 分間] をクリックしてクエリの期間を設定します。
説明このステップでは、スケジュール化 SQL ジョブのデータをプレビューできます。クエリ文が正しく、結果にデータが含まれていることを確認してください。
[グラフ] タブで、[スケジュール化 SQL ジョブとして保存] をクリックします。
スケジュール化 SQL ジョブを作成します。
[コンピューティング設定] ウィザードで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
ジョブ名
スケジュール化 SQL ジョブの一意の名前です。デフォルト名のままにします。
書き込みモード
[Logstore から Logstore へのデータインポート] を選択します。これは、ジョブがソース Logstore のデータを処理し、結果を宛先 Logstore に保存することを意味します。
SQL コード
ステップ 4 で入力したクエリ文が表示されます。
ここで別のクエリ文を定義することもできます。文を入力した後、期間を選択し、[プレビュー] をクリックして結果を確認します。
スケジュール化 SQL ジョブが実行されると、Simple Log Service はこのクエリ文を実行してデータを分析します。
ターゲット
ソースと宛先の Logstore が同じアカウントにある場合
パラメーター
説明
宛先リージョン
宛先プロジェクトが配置されているリージョンを選択します。
宛先プロジェクト
ドロップダウンリストから宛先プロジェクトを選択します。
ターゲットストア
ドロップダウンリストから宛先 Logstore を選択します。
書き込み権限
スケジュール化 SQL ジョブは、[デフォルトロール] または [カスタムロール] を偽装して、宛先 Logstore にデータを書き込むことができます。いずれかのロールを選択します。
デフォルトロール:このロールには、ソース Logstore または MetricStore で SQL 分析を実行し、結果を宛先 Logstore または MetricStore に書き込む権限があります。詳細については、「デフォルトロールを使用してスケジュール化 SQL ジョブを作成する」をご参照ください。
カスタムロール:詳細な権限管理のために、カスタムロールとカスタムポリシーを作成します。詳細については、「RAM ロールに宛先 Logstore へのデータ書き込み権限を付与する」をご参照ください。
ソースと宛先の Logstore が異なるアカウントにある場合
パラメーター
説明
宛先リージョン
[その他のリージョン] を選択し、[越境データ転送に関するコンプライアンス保証] に同意します。
宛先プロジェクト
宛先プロジェクトの名前 (例:
test-project) を入力します。ターゲットストア
宛先 Logstore の名前 (例:
test-logstore) を入力します。書き込み権限
[カスタムロール] を選択します。詳細については、「RAM ロールに宛先 Logstore へのデータ書き込み権限を付与する」をご参照ください。
SQL 実行権限
スケジュール化 SQL ジョブは、[デフォルトロール] または [カスタムロール] を偽装して、ソース Logstore のデータをクエリおよび分析できます。いずれかのロールを選択します。
デフォルトロール:このロールには、ソース Logstore または MetricStore で SQL 分析を実行し、結果を宛先 Logstore または MetricStore に書き込む権限があります。詳細については、「デフォルトロールを使用してスケジュール化 SQL ジョブを作成する」をご参照ください。
カスタムロール:詳細な権限管理のために、カスタムロールとカスタムポリシーを作成します。詳細については、「カスタム RAM ロールにソース Logstore のログ分析権限を付与する」をご参照ください。
[スケジューリング設定] ウィザードで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
スケジューリング間隔
ジョブがスケジュールされる頻度です。実行ごとにインスタンスが作成され、この間隔によって各インスタンスのスケジュール時刻が決定されます。
固定間隔:ジョブを固定間隔でスケジュールします。
Cron:cron 式で指定された間隔でジョブをスケジュールします。
cron 式は分単位で正確であり、24 時間制を使用します。たとえば、
0 0/1 * * *は、00:00 から毎時ジョブを実行します。タイムゾーンを設定するには、[Cron] モードを選択する必要があります。一般的なタイムゾーンのリストについては、「タイムゾーンのフォーマット」をご参照ください。
スケジューリング期間
ジョブがスケジュールされる期間です。
特定の時刻から:最初のジョブインスタンスの開始時刻を指定します。
特定の期間:開始時刻と終了時刻を指定します。ジョブはこの期間内でのみ実行されます。
説明ジョブインスタンスはこの期間内でのみスケジュールされます。この範囲外では新しいインスタンスは作成されません。
スケジューリング期間は
__time__を参照します。詳細については、「予約済みフィールド」をご参照ください。
SQL タイムウィンドウ
ジョブ実行時に分析対象となるログのタイムウィンドウです。このタイムウィンドウは、スケジューリング間隔と連動して機能します。タイムウィンドウは [スケジューリング間隔] の 5 倍を超えることはできず、1 日を超えることもできません。詳細については、「時間式の構文」をご参照ください。
たとえば、[スケジューリング間隔] が [固定間隔 10 分]、[開始時刻] が
2021-04-01 00:00:00、[タスクの遅延] が 30 秒、[SQL タイムウィンドウ] が[@m-10m,@m)の場合、最初のインスタンスは 00:00:30 に作成されます。これは[23:50:00~00:00:00)の期間のログを分析します。詳細については、「スケジューリングと実行のシナリオ」をご参照ください。説明SQL タイムウィンドウは
__time__を参照します。詳細については、「予約済みフィールド」をご参照ください。SQL コードで
__time__を定義しない場合、宛先 Logstore に書き込まれるログの__time__値は、デフォルトでスケジューリングウィンドウの開始時刻になります。
SQL タイムアウト
SQL 分析操作が失敗した場合の自動リトライのしきい値です。リトライ期間が最大時間を超えるか、リトライ回数が最大回数を超えると、インスタンスは停止し、そのステータスは [失敗] に変わります。失敗したインスタンスは手動でリトライしてください。詳細については、「スケジュール化 SQL ジョブインスタンスのリトライ」をご参照ください。
タスクの遅延
スケジュールされた時刻から実行を遅延させる時間です。有効値は 0~120 秒です。
Logstore へのデータ書き込みに遅延がある場合、このパラメーターを使用してデータ整合性を確保します。
スケジュール化 SQL ジョブを作成した後、 を選択して表示します。詳細については、「スケジュール化 SQL ジョブの管理」をご参照ください。