高度なイベントクエリで SQL 文を使用して、トレイルを使用して Simple Log Service に配信されるイベントをクエリまたは分析できます。
分析文で文字列を使用する場合は、文字列を一重引用符 ('') で囲む必要があります。囲まれていない文字列、または二重引用符 ("") で囲まれた文字列は、フィールド名または列名を示します。たとえば、'status' は status 文字列を示し、status または "status" は status ログフィールドを示します。
例
全文クエリ
フィールド名やフィールド値などのキーワードを指定します。
例: キーワード
DescribeInstancesを含むイベントをクエリします。DescribeInstancesプロパティベースの完全一致
[イベントプロパティ名]:[イベントプロパティ値]形式でイベントプロパティを指定します。正確な名前と値を指定する必要があります。イベントプロパティの詳細については、このトピックのイベントプロパティをご参照ください。例:
event.eventSourceの値がactiontrail.cn-hangzhou.aliyuncs.comであるイベントをクエリします。event.eventSource: actiontrail.cn-hangzhou.aliyuncs.com属性ベースのあいまい一致
[イベントプロパティ名]:[イベントプロパティ値]形式でイベントプロパティを指定します。正確な名前を指定する必要があります。値については、アスタリスク (*) を追加して複数の文字に一致させるか、疑問符 (?) を追加して単一の文字に一致させることができます。例 1: すべての AccessKey ペアベースのアクセスイベントをクエリします。
event.userIdentity.accessKeyId: *例 2:
event.eventSourceの値がactiontrailで始まるイベントをクエリします。event.eventSource: actiontrail*
複数条件クエリ
括弧
()と論理演算子ANDまたはORを使用して、複数条件クエリを実行します。例 1: AccessKey ペアベースのアクセスの失敗に関するすべてのイベントをクエリします。
event.errorCode: * AND event.userIdentity.accessKeyId: *例 2:
event.eventNameの値がCreate、CreateInstance、またはRunInstancesであるイベントをクエリします。event.eventName: Create OR event.eventName: CreateInstance OR event.eventName: RunInstances例 3:
event.serviceNameの値がkafkaで、eventName の値がCreate、CreateInstance、またはRunInstancesであるイベントをクエリします。(event.serviceName: AliKafka AND ( event.eventName: Create OR event.eventName: CreateInstance OR event.eventName: RunInstances )
集計クエリ
Simple Log Service の集計クエリ構文を使用して、イベントの集計統計を生成できます。たとえば、
GROUP BY句を使用して、特定のフィールドの集計統計を生成できます。例 1: クラウドサービス別に集計されたイベントの数をクエリします。
* | SELECT "event.serviceName" AS service, COUNT(*) AS count FROM log GROUP BY "event.serviceName"例 2: ユーザーとクラウドサービス別に集計されたイベントの数をクエリします。
* | SELECT "event.userIdentity.principalId" AS principalId, "event.serviceName" AS service, COUNT(*) AS count FROM log GROUP BY principalId,service
イベントプロパティ
次の表は、ActionTrail でサポートされているイベント属性を示しています。
カテゴリ | イベントプロパティ名 | 説明 |
オペレーター |
| Alibaba Cloud アカウント ID。 |
| キー ID。 | |
| リクエスター ID。 | |
| アカウントタイプ。 | |
| ユーザー名。 | |
操作 |
| サービス名。 |
| 読み取り/書き込みタイプ。 | |
| イベント名。 | |
| バージョン情報。 | |
| エラーメッセージ。 | |
| エラーコード。 | |
関連リソース |
| リソースタイプ。 |
| リソース名。 | |
場所 |
| リージョン。 |
| イベントソース。 | |
| ソース IP アドレス。 | |
その他 |
| リクエスト ID。 |
| イベント ID。 |
集計関数
次の表は、ActionTrail でサポートされている集計関数を示しています。
関数 | 構文 | 説明 | SQL でサポート | SPL でサポート |
arbitrary(x) | x フィールドのランダムな NULL 以外の値を返します。 | √ | × | |
avg(x) | x フィールドの値の平均を計算します。 | √ | × | |
bitwise_and_agg(x) | x フィールドの値に対するビット単位の AND 演算の結果を返します。 | √ | × | |
bitwise_or_agg(x) | x フィールドの値に対するビット単位の OR 演算の結果を返します。 | √ | × | |
bool_and(ブール式) | すべてのログが指定された条件を満たしているかどうかを確認します。はいの場合、関数は true を返します。 この関数は every 関数と同等です。 | √ | × | |
bool_or(ブール式) | 指定された条件を満たすログが存在するかどうかを確認します。はいの場合、関数は true を返します。 | √ | × | |
checksum(x) | x フィールドの値のチェックサムを計算します。 | √ | × | |
count(*) | ログの数をカウントします。 | √ | × | |
count(1) | ログの数をカウントします。この関数は count(*) 関数と同等です。 | √ | × | |
count(x) | x フィールドの値が NULL でないログの数をカウントします。 | √ | × | |
count_if(ブール式) | 指定された条件を満たすログの数をカウントします。 | √ | × | |
every(ブール式) | すべてのログが指定された条件を満たしているかどうかを確認します。はいの場合、関数は true を返します。 この関数は bool_and 関数と同等です。 | √ | × | |
geometric_mean(x) | x フィールドの値の相乗平均を計算します。 | √ | × | |
kurtosis(x) | x フィールドの値の尖度を計算します。 | √ | × | |
map_union(x) | 指定されたマップに対する和集合演算の結果を返します。複数の入力マップにキーが存在する場合、関数はキーの値の 1 つをランダムに返します。 | √ | × | |
max(x) | x フィールドの最大値をクエリします。 | √ | × | |
max(x, n) | x フィールドの n 個の最大値をクエリします。関数は配列を返します。 | √ | × | |
max_by(x, y) | y フィールドの最大値に関連付けられている x の値をクエリします。 | √ | × | |
max_by(x, y, n) | y フィールドの n 個の最大値に関連付けられている x の値をクエリします。関数は配列を返します。 | √ | × | |
min(x) | x フィールドの最小値をクエリします。 | √ | × | |
min(x, n) | x フィールドの n 個の最小値をクエリします。関数は配列を返します。 | √ | × | |
min_by(x, y) | y フィールドの最小値に関連付けられている x の値をクエリします。 | √ | × | |
min_by(x, y, n) | y フィールドの n 個の最小値に関連付けられている x の値をクエリします。関数は配列を返します。 | √ | × | |
skewness(x) | x フィールドの値の歪度を計算します。 | √ | × | |
sum(x) | x フィールドの値の合計を計算します。 | √ | × |
予約語
次のコードブロックは、SQL 文のすべての予約語を示しています。
AND
AS
BETWEEN
BY
CASE
CAST
CROSS
CUBE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
DISTINCT
ELSE
END
ESCAPE
EXCEPT
EXISTS
FROM
GROUP
GROUPING
HAVING
IN
INNER
INSERT
INTERSECT
INTO
IS
JOIN
LEFT
LIKE
LIMIT
LOCALTIME
LOCALTIMESTAMP
NATURAL
NOT
NULL
ON
OR
ORDER
OUTER
RIGHT
ROLLUP
SELECT
THEN
TRUE
UNION
UNNEST
VALUES
WHEN
WHERE
WITH