このトピックでは、Simple Log Service (SLS) で Data Management (DMS) の操作ログをクエリおよび分析する方法について説明します。
背景情報
操作ログは、ユーザーが DMS で実行するすべての操作のシーケンシャルレコードです。これらのログには、ユーザーの詳細、使用された機能モジュールの名前、操作の時間、操作の種類、実行された SQL 文などの情報が含まれます。詳細については、「特徴」をご参照ください。
前提条件
Simple Log Service が有効化されていること。詳細については、「Simple Log Service の有効化」をご参照ください。
Simple Log Service でプロジェクトと Logstore が作成されていること。詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
Simple Log Service (SLS) の宛先 Logstore は空であり、フルテキストインデックスが有効になっている必要があります。フルテキストインデックスを有効にする方法の詳細については、「手動でのインデックス作成」をご参照ください。
課金
リソース
カスタム Simple Log Service プロジェクトと Logstore
重要DMS 操作ログに関連する Simple Log Service プロジェクトと Logstore を削除しないでください。削除すると、ログを Simple Log Service に収集できなくなります。
カスタム Logstore を作成すると、課金方法に基づいて異なる課金項目が生成されます。
排他的ダッシュボード
利用可能な排他的ダッシュボードはありません。
手順
ステップ 1: DMS にプロジェクトを登録する
管理者として DMS コンソール V5.0 にログインします。
コンソールのホームページの [データベースインスタンス] エリアで、
アイコンをクリックします。説明DMS コンソールをシンプルモードで使用する場合は、左側のナビゲーションウィンドウで [データベースインスタンス] をクリックします。[データベースインスタンス] セクションで、
をクリックします。[インスタンスの追加] ページで、SLS 情報を入力します。
カテゴリ
パラメーター
説明
データソース
-
[Alibaba Cloud] を選択します。
基本情報
データベースタイプ
SLS を選択します。
インスタンスリージョン
SLS プロジェクトが配置されているリージョンを選択します。
入力方法
デフォルト値は [接続文字列] です。
接続文字列
[インスタンスリージョン] を選択すると、接続文字列が自動的に生成されます。
プロジェクト名
SLS で作成したプロジェクトの名前を入力します。
AccessKey ID
Alibaba Cloud アカウントの AccessKey ID を入力します。AccessKey ID は、DMS にプロジェクトを登録する際の ID 検証に使用されます。
説明AccessKey ID の取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。
AccessKey Secret
AccessKey ID に対応する AccessKey Secret を入力します。
説明AccessKey Secret の取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。
付加価値機能パッケージ
このデータソースは機能パッケージをサポートしていません。デフォルトでは、柔軟な管理 モードをサポートしています。
詳細情報
環境タイプ
環境タイプを選択します。有効な値は Dev、Test、Production、Pre-release、SIT、UAT、Stress Testing、および STAG です。詳細については、「インスタンス環境タイプ」をご参照ください。
インスタンス名
DMS に表示する SLS プロジェクトのカスタム名を指定します。
説明インスタンスを編集してインスタンス名を変更できます。詳細については、「インスタンス情報を編集する」をご参照ください。
インスタンス DBA
インスタンスのデータベース管理者 (DBA) を選択します。DBA は、権限申請などの後続のプロセスで使用できます。
クエリタイムアウト (秒)
クエリ文の実行時間を制御してデータベースを保護するセキュリティポリシー。
エクスポートタイムアウト (秒)
データベースを保護するために、export 文の実行時間を制御するセキュリティポリシーです。
説明基本情報を設定した後、ページの下部にある [接続テスト] をクリックし、テストに合格するまで待ちます。
エラーメッセージ "The execution result of the 'getProject' command is null" が表示された場合、DMS にログインするために使用する Alibaba Cloud アカウントによってプロジェクトが作成されていることを確認してください。
[送信] をクリックします。
ステップ 2: DMS でタスクを作成して操作ログをエクスポートする
- DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを移動し、 を選択します。説明DMS コンソールを通常モードで使用する場合は、上部のナビゲーションバーで を選択します。
[ログのエクスポート] タブをクリックします。次に、右上隅の [新しいタスク] をクリックします。
[新しいエクスポートタスク] ダイアログボックスで、次のパラメーターを設定します。
パラメーター
必須
説明
タスク名
はい
エクスポートタスクの名前。識別しやすいように、わかりやすい名前を指定します。
宛先 SLS
はい
リソース管理ユニットである Simple Log Service プロジェクト。
SLS Logstore
はい
エクスポートされた DMS 操作ログを格納する Logstore。このパラメーターの入力ボックスをクリックし、宛先 Logstore を選択します。
説明宛先 Logstore がドロップダウンリストにない場合は、[辞書の同期] をクリックしてから [OK] をクリックします。DMS は Logstore のメタデータを自動的に収集します。
機能モジュール
はい
エクスポートするログの DMS 機能モジュールを選択します。これらのモジュールは、[操作ログ] タブのモジュールに対応します。モジュールには、インスタンス管理、ユーザー管理、権限、SQL ウィンドウでのデータクエリなどの機能が含まれます。デフォルトでは、すべての機能のログがエクスポートされます。
スケジュールメソッド
はい
タスクのスケジュールメソッドを選択します。
ワンタイム: エクスポートタスクが作成された後、1 回だけ実行されます。
定期的: [毎日]、[毎週]、または [毎月] を選択して、ログを Logstore にループで複数回エクスポートできます。定期的なタスクが初めて実行されるとき、ログの開始時刻から最初のスケジュールされた開始時刻までに生成されたすべての DMS 操作ログがエクスポートされます。その後の実行では、増分ログのみがエクスポートされます。詳細については、「定期的なスケジュール」をご参照ください。
ログ時間範囲
いいえ
説明このパラメーターは、[スケジュールメソッド] を [ワンタイム] に設定した場合にのみ使用できます。
特定の時間範囲内のログをエクスポートします。このパラメーターを設定しない場合、デフォルトで過去 3 年間のログがエクスポートされます。
ログ開始時刻
いいえ
説明このパラメーターは、[スケジュールメソッド] を [定期的] に設定した場合にのみ使用できます。
定期的なタスクには終了時刻がありません。
DMS ログレコードの開始時刻。このパラメーターを設定しない場合、デフォルト値はタスク作成時刻の 3 年前になります。
[OK] をクリックします。ログエクスポートタスクが作成されます。システムは、後続のデータクエリと分析のために、Logstore に dbId、dbName、dbUser などのインデックスフィールドも作成します。
ワンタイムタスクはログを 1 回だけエクスポートします。タスクのステータスが [成功] の場合、ログがエクスポートされます。
説明Logstore インデックスは遅れて有効になるため、ワンタイムタスクは作成後約 90 秒で開始されます。
定期的なタスクはログを複数回エクスポートします。タスクのステータスは、エクスポートの前後両方で [スケジューリング待ち] です。タスクログを表示して、タスクの実行が成功したかどうかを判断できます。
タスクの [アクション] 列で次の操作を実行することもできます。
クエリ: [クエリ] をクリックします。SQL コンソールページにリダイレクトされます。[クエリ] をクリックします。ページ下部の実行結果セクションで、Logstore にエクスポートされたログを表示できます。
タスクログ: [タスクログ] をクリックして、タスクの開始時刻と終了時刻、配信されたログの数、タスクのステータスなどの情報を表示します。
一時停止: [一時停止] をクリックします。表示されるダイアログボックスで、[OK] をクリックします。定期的なタスクは一時停止されます。
再起動: [再起動] をクリックします。表示されるダイアログボックスで、[OK] をクリックして、一時停止した定期的なタスクを再起動します。
説明再起動操作はワンタイムタスクではサポートされていません。ただし、他の操作はサポートされています。
クエリや一時停止などのすべての操作は、定期的なタスクでサポートされています。
詳細については、「DMS 操作ログを Simple Log Service にエクスポートする」をご参照ください。
ステップ 3: SLS コンソールでエクスポートされた DMS 操作ログのクエリと分析
Simple Log Service コンソールにログインします。
[プロジェクト] セクションで、対象のプロジェクトをクリックします。

タブで、対象の Logstore をクリックします。

検索ボックスに、クエリと分析の文を入力します。
クエリと分析の文は検索文と分析文で構成され、フォーマットは
検索文|分析文です。 構文の詳細については、「検索構文と関数」および「SQL 分析関数」をご参照ください。SLS では、次の情報をクエリおよび分析できます。
説明dmstest Logstore を例として使用します。
データベースへのログインに最も頻繁に失敗したユーザー。
__topic__ : DMS_LOG_DELIVERY AND subModule : LOGIN | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE state = '0' GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;異常なソース IP アドレスを持つユーザー。 IP アドレス 127.0.0.1 を例として使用します。
説明インスタンスのソース IP アドレスは、DMS にインスタンスを登録するときのローカル IP アドレスです。 このアドレスは、インスタンスアクセスのソースを識別します。
__topic__ : DMS_LOG_DELIVERY | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE state = '0' and requestIp in ('127.0.0.1') GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;DMS に最も頻繁にアクセスしたユーザー。
__topic__ : DMS_LOG_DELIVERY| SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;同じ日に複数のデータベースにアクセスして操作したユーザー。
__topic__: DMS_LOG_DELIVERY | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, date_trunc('day', gmtCreate) time, dbId, COUNT(*) qpd from dmstest GROUP BY time, operUserId, operUserName, dbId ORDER BY time, qpd DESC;DMS でのデータベース操作の実行に失敗したユーザー。
__topic__ : DMS_LOG_DELIVERY AND moudleName : SQL_CONSOLE | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, actionDesc as sqlStatement, subModule as sqlType, remark as failReason FROM dmstest WHERE state = '-1' order by id;機密データを最も頻繁にダウンロードしたユーザー。
__topic__ : DMS_LOG_DELIVERY AND moudleName : DATA_EXPORT | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest WHERE hasSensitiveData = 'true' GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;機密データの削除や更新などのバッチ操作で実行される SQL 文。
__topic__ : DMS_LOG_DELIVERY | SELECT subModule, COUNT(*) cnt, COUNT(affectRows) affectRow FROM dmstest WHERE subModule != '' GROUP BY subModule ORDER BY cnt DESC;データのエクスポート中にデータウォーターマーク機能が有効になっているかどうか。
__topic__ : DMS_LOG_DELIVERY AND moudleName : DATA_EXPORT | SELECT targetId as orderId, concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest where actionDesc like '%Enable data watermark: false' GROUP BY targetId, operUserId, operUserName ORDER BY cnt DESC LIMIT 10;説明データウォーターマーク機能を有効にしたユーザーをクエリするには、
'%Enable data watermark: true'という文を使用します。データウォーターマーク機能を無効にしたユーザーをクエリするには、
'%Enable data watermark: false'という文を使用します。
SQL コンソールページの実行結果セクションから SQL 結果セットをダウンロードしたユーザー。
__topic__ : DMS_LOG_DELIVERY AND moudleName : SQL_CONSOLE_EXPORT | SELECT concat(cast(operUserId as varchar), '(', operUserName, ')') user, COUNT(*) cnt FROM dmstest GROUP BY operUserId, operUserName ORDER BY cnt DESC LIMIT 10;
クエリと分析の詳細については、「ステップ 1: インデックスを設定する」をご参照ください。
(オプション) ステップ 4: 定期的なタスクを一時停止する
ステップ 2 で定期的なタスク ([スケジューリング方法] を [定期的] に設定) を作成し、DMS 操作ログの分析が完了した場合、タスクを一時停止できます。
- DMS コンソール V5.0 にログインします。
左上隅の
アイコンにポインターを移動し、 を選択します。説明DMS コンソールを通常モードで使用する場合は、上部のナビゲーションバーで を選択します。
[ログのエクスポート] タブをクリックします。
定期的なタスクの [アクション] 列で、[一時停止] をクリックします。
表示されるダイアログボックスで、[OK] をクリックします。
次のステップ
ログエクスポートタスクが正常に実行された後、または一時停止された後、プロジェクトは自動的に削除されません。DMS 操作ログの分析が完了したら、Simple Log Service コンソールに移動し、不要な課金を避けるためにログのエクスポート用に選択したプロジェクトを削除してください。
SLS の生ログフィールドの説明
次の表に、SLS にインポートされる DMS 操作ログのいくつかの重要なフィールドを示します。
フィールド | 説明 |
id | ログの一意の ID。 |
gmt_create | ログが作成された時間。 |
gmt_modified | ログが変更された時間。 |
oper_user_id | オペレーターのユーザー ID。 |
oper_user_name | オペレーターの名前。 |
module_name | エクスポートされた機能モジュール:
|
sub_module | サブ機能モジュール。 たとえば、SQL_CONSOLE の場合、サブモジュールはユーザーが実行する SQL 文のタイプを指します。 |
db_id | 操作が実行されるデータベースの ID。これは DMS の ID です。 |
db_name | 操作が実行されるデータベースの名前。 |
is_logic_db | データベースが論理データベースであるかどうかを示します。 |
instance_id | 操作が実行されるインスタンスの ID。これは DMS の ID です。 |
instance_name | 操作が実行されるインスタンスの名前。 |
action_desc | 操作の説明。 |
remark | 備考。 |
has_sensitive_data | ログに機密情報が含まれているかどうかを示します。 |