如何排查多指標(biāo)規(guī)則異常問題
如果您創(chuàng)建的報(bào)警規(guī)則是組合指標(biāo),并且設(shè)置了多個(gè)報(bào)警規(guī)則表達(dá)式,在出現(xiàn)異常問題時(shí),可以參見下列常見問題。
問題排查
檢查報(bào)警規(guī)則多指標(biāo)中,是否有某個(gè)指標(biāo)無數(shù)據(jù)。
如果報(bào)警規(guī)則多指標(biāo)中有一個(gè)指標(biāo)無數(shù)據(jù),將導(dǎo)致報(bào)警規(guī)則整體無數(shù)據(jù),建議您把無數(shù)據(jù)的指標(biāo)和有數(shù)據(jù)的指標(biāo)進(jìn)行分開配置報(bào)警規(guī)則。
檢查在監(jiān)控指標(biāo)的Dimensions中,是否有某個(gè)字段含義不同。
說明監(jiān)控指標(biāo)Dimensions參數(shù),請參見附錄1 云產(chǎn)品監(jiān)控指標(biāo)。
如果在報(bào)警規(guī)則多指標(biāo)中,多個(gè)指標(biāo)有相同的Dimension字段,經(jīng)過查詢每個(gè)指標(biāo)之后,會判斷每一條數(shù)據(jù)的每一個(gè)指標(biāo)是否齊全,但是如果Dimension中的某個(gè)字段,在不同指標(biāo)中含義不一致,同一個(gè)字段的數(shù)據(jù)值不一致,將會導(dǎo)致指標(biāo)齊全判斷無法通過,則會顯示報(bào)警規(guī)則無數(shù)據(jù)。
舉例:ECS產(chǎn)品的磁盤指標(biāo)disk_readiops的dimensions是[userId, instanceId, device],Network指標(biāo)networkout_rate的dimensions也是[userId,instanceId,device],但是顯然磁盤指標(biāo)的device指的是磁盤名稱,Network指標(biāo)的device指的是網(wǎng)絡(luò)設(shè)備名稱,含義不同,值不同,這兩個(gè)指標(biāo)對應(yīng)的device都缺另一個(gè)指標(biāo)對應(yīng)的數(shù)據(jù),最終導(dǎo)致報(bào)警規(guī)則無數(shù)據(jù),在此情況下,建議您把磁盤指標(biāo)和網(wǎng)卡指標(biāo)進(jìn)行分開配置規(guī)則。
檢查多指標(biāo)數(shù)據(jù)聚合后,導(dǎo)致報(bào)警數(shù)量增多造成的問題。
如果在報(bào)警規(guī)則多指標(biāo)中,多個(gè)指標(biāo)有不同的Dimension字段,經(jīng)過查詢每個(gè)指標(biāo)之后,會對數(shù)據(jù)根據(jù)dimension使用笛卡爾積的計(jì)算方式對多個(gè)指標(biāo)數(shù)據(jù)進(jìn)行join合并,這樣會導(dǎo)致監(jiān)控?cái)?shù)據(jù)增多,報(bào)警量增多。
說明笛卡爾積(Cartesian product),在數(shù)學(xué)中,特別是集合論領(lǐng)域,是一個(gè)基本概念,用于描述兩個(gè)集合之間所有可能的有序?qū)Φ募稀H绻螦和集合B是兩個(gè)非空集合,那么它們的笛卡爾積A×B定義為所有形式為(a, b)的有序?qū)Φ募希渲衋是集合A中的任意元素,b是集合B中的任意元素。簡而言之,就是集合A中的每個(gè)元素都與集合B中的每個(gè)元素配對一次,形成一個(gè)新的元素對,并將所有這樣的元素對組成一個(gè)新的集合。
例如,如果集合A = {1, 2},集合B = {'a', 'b'},那么它們的笛卡爾積A×B為: A×B = {(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')}
注意,這里的有序?qū)?1, 'a')與('a', 1)不同,因?yàn)轫樞?matters,(a, b)不等于(b, a),除非a等于b。在數(shù)據(jù)庫查詢中,不恰當(dāng)?shù)氖褂玫芽柗e(比如沒有合適的連接條件的表連接)會導(dǎo)致結(jié)果集大小爆炸性增長,這是因?yàn)槊總€(gè)來自一個(gè)表的行都會與另一個(gè)表中的每一行進(jìn)行配對,這通常不是期望的結(jié)果,且會極大地降低查詢效率。
舉例:一個(gè)規(guī)則監(jiān)控ECS實(shí)例的cpu使用率和磁盤iops,其中ECS實(shí)例指標(biāo)cpu_total的dimensions是[userId, instanceId],磁盤指標(biāo)disk_readiops的dimensions是[userId, instanceId, device],所以如果磁盤指標(biāo)正常,cpu使用率異常,用戶一個(gè)實(shí)例下掛了多個(gè)盤,每一個(gè)磁盤都會報(bào)一條信息。這種情況下,建議用戶分開設(shè)置報(bào)警。