全部產品
Search
文件中心

ActionTrail:進階查詢的SQL文法

更新時間:Jul 01, 2024

您可以在進階查詢中使用SQL文法,查詢或分析您通過跟蹤投遞到Log ServiceSLS的日誌事件。

重要

在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

查詢樣本

  • 全文檢索查詢

    通過指定關鍵字(欄位名稱或欄位值)查詢。

    樣本:在日誌中查詢包含關鍵字DescribeInstances的事件。

    DescribeInstances 
  • 屬性精確查詢

    按照[事件屬性名稱]:[事件屬性值]的格式,指定事件屬性的名稱和值進行精確查詢。關於事件屬性名稱,請參見事件屬性

    樣本:在日誌中查詢事件來源event.eventSourceactiontrail.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.eventNameCreateCreateInstanceRunInstances的事件。

       event.eventName: Create  OR event.eventName: CreateInstance  OR event.eventName: RunInstances 
    • 樣本3:查詢雲產品event.serviceNamekafka,且事件名稱為CreateCreateInstanceRunInstances的事件。

      (event.serviceName: AliKafka AND ( event.eventName: Create  OR event.eventName: CreateInstance  OR event.eventName: RunInstances  )

  • 彙總分析查詢

    通過Log ServiceSLS的彙總分析文法,對事件進行彙總統計,例如:通過 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

事件屬性

Action Trail支援的事件屬性如下表所示。

分類

事件屬性名稱

描述

操作者

event.userIdentity.accountId

阿里雲帳號ID(主帳號ID)。

event.userIdentity.accessKeyId

密鑰ID。

event.userIdentity.principalId

要求者ID。

event.userIdentity.type

帳號類型。

event.userIdentity.userName

使用者名稱。

操作

event.serviceName

服務名稱。

event.eventRW

讀寫類型。

event.eventName

事件名稱。

event.apiVersion

版本資訊。

event.errorMessage

錯誤資訊。

event.errorCode

錯誤碼。

關聯資源

event.resourceType

資源類型。

event.resourceName

資源名稱。

地點

event.acsRegion

阿里雲地區。

event.eventSource

事件來源。

event.sourceIpAddress

源IP地址。

其他

event.requestId

請求ID。

event.eventId

事件ID。

彙總函式

Action Trail支援的彙總函式如下表所示。

函數名稱

文法

說明

支援SQL

支援SPL

arbitrary函數

arbitrary(x)

返回x中任意一個非空的值。

×

avg函數

avg(x)

計算x的算術平均值。

×

bitwise_and_agg函數

bitwise_and_agg(x)

返回x中所有值按位與運算(AND)的結果。

×

bitwise_or_agg函數

bitwise_or_agg(x)

返回x中所有值按位或運算(OR)的結果。

×

bool_and函數

bool_and(boolean expression)

判斷是否所有日誌都滿足條件。如果是,則返回true。

bool_and函數等同於every函數。

×

bool_or函數

bool_or(boolean expression)

判斷是否存在日誌滿足條件。如果存在,則返回true。

×

checksum函數

checksum(x)

計算x的校正和。

×

count函數

count(*)

統計所有的日誌條數。

×

count(1)

統計所有的日誌條數,等同於count(*)。

×

count(x)

統計x中值不為NULL的日誌條數。

×

count_if函數

count_if(boolean expression)

統計滿足指定條件的日誌條數。

×

every函數

every(boolean expression)

判斷是否所有日誌都滿足條件。如果是,則返回true。

every函數等同於bool_and函數。

×

geometric_mean函數

geometric_mean(x)

計算x的幾何平均數。

×

kurtosis函數

kurtosis(x)

計算x的峰度。

×

map_union函數

map_union(x)

返回一列Map資料的並集。 如果Map中存在相同的鍵,則返回的索引值為其中任意一個鍵的值。

×

max函數

max(x)

查詢x中的最大值。

×

max(x, n)

查詢x中最大的n個值。返回結果為數組。

×

max_by函數

max_by(x, y)

查詢y為最大值時對應的x值。

×

max_by(x, y, n)

查詢最大的ny值對應的x值,返回結果為數組。

×

min函數

min(x)

查詢x中最小值。

×

min(x, n)

查詢x中最小的n個值。返回結果為數組。

×

min_by函數

min_by(x, y)

查詢y為最小值時對應的x值。

×

min_by(x, y, n)

查詢最小的ny值對應的x值。返回結果為數組。

×

skewness函數

skewness(x)

計算x的偏度。

×

sum函數

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