Log Service提供了強大的警示和分析能力,可以協助使用者快速分析和定位到發生異常的具體的子維度。在時序指標發生異常時,根因分析函數可以快速分析出是哪些相關維度屬性發生異常而導致監控指標發生異常。
rca_kpi_search
函數格式
select rca_kpi_search(varchar_array, name_array, real, forecast, level)
參數說明如下:
參數 | 說明 | 取值 |
varchar_array | 屬性維度欄位。 | 數組形式,例如:array[col1, col2, col3]。 |
name_array | 屬性名稱字欄位。 | 數組形式,例如:array['col1', 'col2', 'col3']。 |
real | varchar_array對應的實際值。 | double 類型,取值範圍:全體實數。 |
forecast | varchar_array對應的預測值。 | double 類型,取值範圍:全體實數。 |
level | 輸出的根因集合對應的維度屬性的數量,其中level=0表示輸出找到的全部根因集合。 | long類型,取值範圍:0<=level<=分析維度數(對應varchar_array的長度)。 |
樣本:
查詢分析:
先利用子查詢去組織每個細資料粒度屬性對應的實際值和預測值,然後直接調用rca_kpi_search函數去分析異常時刻的根因。
* not Status:200 | select rca_kpi_search( array[ ProjectName, LogStore, UserAgent, Method ], array[ 'ProjectName', 'LogStore', 'UserAgent', 'Method' ], real, forecast, 1) from ( select ProjectName, LogStore, UserAgent, Method, sum(case when time < 1552436040 then real else 0 end) * 1.0 / sum(case when time < 1552436040 then 1 else 0 end) as forecast, sum(case when time >=1552436040 then real else 0 end) *1.0 / sum(case when time >= 1552436040 then 1 else 0 end) as real from ( select '("__time__" - ("__time__" % 60))' as time, ProjectName, LogStore, UserAgent, Method, COUNT(*) as real from log GROUP by time, ProjectName, LogStore, UserAgent, Method ) GROUP BY ProjectName, LogStore, UserAgent, Method limit 100000000)
輸出結果:
返回結果結構說明:
顯示項目如下:
顯示項目 | 說明 |
rcSets | 根因集合,value對應一個數組。 |
rcItems | 具體對應一個根因集合。 |
kpi | 根因集合中的一項,資料按照數組形式儲存,數組中的每一項是一個JSON類型的資料,attr表示維度名稱,val表示當前維度下對應的屬性名稱。 |
nleaf | 根因集合中某一項(KPI)在未經處理資料中覆蓋的葉子節點數。 說明 葉子節點:表示最細資料粒度屬性組合的日誌。 |
change | 根因集合中某一項(KPI)對應的葉子節點集合的異常變化量占同一時刻總體異常變化量的比例。 |
score | 當前kpi對應的異常程度(0 <= score <= 1)。 |
輸出結果是一個JSON,具體格式如下:
{
"rcSets": [
{
"rcItems": [
{
"kpi": [
{
"attr": "country",
"val": "*"
},
{
"attr": "province",
"val": "*"
},
{
"attr": "provider",
"val": "*"
},
{
"attr": "domain",
"val": "example.com"
},
{
"attr": "method",
"val": "*"
}
],
"nleaf": 119,
"change": 0.3180687806279939,
"score": 0.14436007709620113
}
]
}
]
}