OpenTsdb官方文檔----查詢過濾器

??任何數(shù)據(jù)庫系統(tǒng)的關(guān)鍵功能是使用某種形式的過濾來獲取完整數(shù)據(jù)集的子集。OpenTsdb從版本1.x開始提供了過濾功能,并從2.2開始具有了擴(kuò)展功能。過濾器目前在標(biāo)簽值上運(yùn)行,這意味著在拉取數(shù)據(jù)時(shí),任意指標(biāo)和標(biāo)簽Key都必須按照與數(shù)據(jù)庫中完全相同的出現(xiàn)方式來進(jìn)行指定。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比鹿泉網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鹿泉網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋鹿泉地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

示例數(shù)據(jù)

??由于每個(gè)過濾器都會(huì)在下面進(jìn)行說明,都會(huì)用到下述數(shù)據(jù)集。它由單一指標(biāo)組成,定義在各個(gè)標(biāo)簽上的多個(gè)時(shí)間序列。作為例子,在T1處僅給出一個(gè)數(shù)據(jù)點(diǎn)。

TS#MetricTagsValue@T1
1 sys.cpu.system dc=dal host=web01 3
2 sys.cpu.system dc=dal host=web02 2
3 sys.cpu.system dc=dal host=web03 10
4 sys.cpu.system host=web01 1
5 sys.cpu.system host=web01 owner=jdoe 4
6 sys.cpu.system dc=lax host=web01 8
7 sys.cpu.system dc=lax host=web02 4

分組

??分組,即group by,是使用所需的聚合函數(shù)和過濾器將多個(gè)時(shí)間序列組合成一個(gè)的過程。默認(rèn)情況下,OpenTSDB按指標(biāo)對(duì)所有內(nèi)容進(jìn)行分組,以便如果查詢返回10個(gè)時(shí)間序列且使用sum聚合器,則所有10個(gè)序列將隨著時(shí)間的推移添加到一個(gè)值中。有關(guān)時(shí)間序列如何聚合合并的詳細(xì)信息,請(qǐng)參閱聚合。

??為了避免在沒有任何聚合的情況下對(duì)每個(gè)底層時(shí)間序列進(jìn)行分組和獲取,請(qǐng)使用版本2.2中包含的聚合器。或者,可以禁用OpenTSDB2.2以及更高版本基于每個(gè)過濾器的分組。請(qǐng)參閱API文檔了解如何操作。

OpenTSDB 1.x – 2.1

??在最初的OpenTSDB版本中,最多只有兩種類型的過濾器可用,并且它們被隱式配置用于分組。允許的兩個(gè)運(yùn)算符如下:

  • *:星號(hào)(或通配符,wildcard)將為檢測(cè)到的每個(gè)唯一標(biāo)簽值返回單獨(dú)的結(jié)果。例如,如果標(biāo)簽鍵host有web01與web02這組值,將會(huì)有兩個(gè)組發(fā)出。一組為web01,另一組為web02。
  • |:管道(或者literal_or)僅為指定的準(zhǔn)確的標(biāo)簽值返回單獨(dú)的結(jié)果。也就是說,它只會(huì)匹配具有給定標(biāo)簽值的時(shí)間序列和聚合每個(gè)匹配成組。

??多個(gè)過濾器可以提供給一個(gè)查詢,過濾器之間使用AND連接,返回同時(shí)滿足條件的結(jié)果。這些過濾器在2.x以及更高版本中可用。

示例

??下面示例使用v1版本的HTTP URI棧,聚合器組成的參數(shù)m,冒號(hào),緊接著指標(biāo)以及花括弧里面通過等號(hào)分隔開的標(biāo)簽過濾器。
?例1: http://host:4242/q?start=1h-ago&m=sum:sys.cpu.system{host=web01}

包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
1,4,5,6 host=web01 16

??在這種情況下,聚合標(biāo)簽集將為空,因?yàn)闀r(shí)間序列4和5具有與整個(gè)集合不相同的標(biāo)簽。
?新版API實(shí)際運(yùn)行情況:(與文檔描述不一致)
?查詢條件:

{
    "start":"23h-ago",
    "end":"10h-ago",
    "queries":[
        {
            "metric":"sys.cpu.system",
            "rate":"false",
            "aggregator":"sum",
            "tags":{
                "host":"web01"
            }
        }
    ]
}

??查詢結(jié)果:

[
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521689251":8,
            "1521689113":3,
            "1521689167":1,
            "1521689211":4
        },
        "aggregateTags":[
            "dc"
        ],
        "tags":{
            "owner":"jdoe",
            "host":"web01"
        }
    }
]

??例2: http://host:4242/q?start=1h-ago&m=sum:sys.cpu.system{host=web01,dc=dal}

包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
1 dc=dal host=web01 3

??新版API實(shí)際運(yùn)行情況:(與文檔描述一致)
?查詢條件:

{
    "start":"1h-ago",
    "queries":[
        {
            "metric":"sys.cpu.system",
            "aggregator":"sum",
            "tags":{
                "host":"web01",
                "dc":"dal"
            }
        }
    ]
}

??查詢結(jié)果:

[
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773430":3
        },
        "aggregateTags":[],
        "tags":{
            "host":"web01",
            "dc":"dal"
        }
    }
]

例3: http://host:4242/q?start=1h-ago&m=sum:sys.cpu.system{host=*,dc=dal}

包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
1 dc=dal host=web01 3
2 dc=dal host=web02 2
3 dc=dal host=web03 10

??這次我們?yōu)閔ost標(biāo)簽提供了*通配符以及顯示匹配dc標(biāo)簽。這將對(duì)host標(biāo)簽進(jìn)行分組,并為每個(gè)唯一的host標(biāo)簽值返回一個(gè)時(shí)間序列,在本例中為3個(gè)序列。

??新版API實(shí)際運(yùn)行情況:(與文檔描述一致)
?查詢條件:

{
    "start":"1h-ago",
    "queries":[
        {
            "metric":"sys.cpu.system",
            "aggregator":"sum",
            "tags":{
                "host":"*",
                "dc":"dal"
            }
        }
    ]
}

??查詢結(jié)果:

[
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773430":3
        },
        "aggregateTags":[],
        "tags":{
            "host":"web01",
            "dc":"dal"
        }
    },
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773431":2
        },
        "aggregateTags":[],
        "tags":{
            "host":"web02",
            "dc":"dal"
        }
    },
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773432":10
        },
        "aggregateTags":[],
        "tags":{
            "host":"web03",
            "dc":"dal"
        }
    }
]

??例4: http://host:4242/q?start=1h-ago&m=sum:sys.cpu.system{dc=dal|lax}

包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
1,2,3 dc=dal host 15
6,7 dc=lax host 12

??在這里,| 運(yùn)算符僅用于匹配dc查詢中提供的標(biāo)簽值。因此,TSD將會(huì)把擁有這些值的任意時(shí)間序列分組聚合在一起。host標(biāo)簽被移動(dòng)到聚合標(biāo)簽列表中,設(shè)定的每個(gè)序列擁有一個(gè)host標(biāo)簽,并且標(biāo)簽擁有多個(gè)值。
?新版API實(shí)際運(yùn)行情況:(與文檔描述一致)
?查詢條件:

{
    "start":"1h-ago",
    "queries":[
        {
            "metric":"sys.cpu.system",
            "aggregator":"sum",
            "tags":{
                "host":"*",
                "dc":"dal"
            }
        }
    ]
}

??查詢結(jié)果:

[
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773430":3
        },
        "aggregateTags":[],
        "tags":{
            "host":"web01",
            "dc":"dal"
        }
    },
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773431":2
        },
        "aggregateTags":[],
        "tags":{
            "host":"web02",
            "dc":"dal"
        }
    },
    {
        "metric":"sys.cpu.system",
        "dps":{
            "1521773432":10
        },
        "aggregateTags":[],
        "tags":{
            "host":"web03",
            "dc":"dal"
        }
    }
]

警告
?由于這些過濾器有限制,如果用戶像#1, #4和#5一樣編寫時(shí)間序列,則可能會(huì)由于聚合時(shí)間序列而返回異常結(jié)果,這些時(shí)間序列可能有一個(gè)通用的標(biāo)簽但附加標(biāo)簽不同。這個(gè)問題在2.3和顯式標(biāo)簽中有所解決。

OpenTSDB 2.2

??在OpenTSDB 2.2版本中增加了一個(gè)更靈活的過濾框架,允許禁用分組以及增加了過濾器類型,如正則表達(dá)式和通配符。過濾框架是可插拔的,以允許嘗試進(jìn)入外部系統(tǒng)如資產(chǎn)管理或供應(yīng)系統(tǒng)。

??在處理過程中,在同一個(gè)標(biāo)簽Key上可以有多個(gè)過濾器,比如它們之間用AND連接。如果有兩個(gè)過濾器host=literal_or(web01)和host=literal_or(web02),查詢將會(huì)返回空。如果同一個(gè)標(biāo)簽Key包含兩個(gè)或者更多過濾器,并且其中一個(gè)過濾器啟用了組,另一個(gè)未啟用,則對(duì)于該標(biāo)簽Key上的所有過濾器,group by將實(shí)際為真。

警告
?某些類型的過濾器可能會(huì)導(dǎo)致查詢比其他的慢,特別是regexp,wildcard和大小寫不敏感的過濾器。在從存儲(chǔ)拉取數(shù)據(jù)之前,將對(duì)這些過濾器進(jìn)行處理以基于UID創(chuàng)建數(shù)據(jù)庫過濾器,因此使用區(qū)分大小寫的literal_or過濾器總是比regexp快,因?yàn)榭梢詫⒆址馕鰹閁ID,并將它們發(fā)送到存儲(chǔ)系統(tǒng)進(jìn)行過濾。相反,如果要求使用pre, post或infix過濾的正則表達(dá)式或通配符,則TSD必須使用標(biāo)簽鍵UID從存儲(chǔ)中檢索所有行,然后對(duì)每個(gè)唯一行,將UID解析為字符串,然后再在結(jié)果上運(yùn)行過濾器。此外,有大量文字(literals)列表的過濾器將在存儲(chǔ)后處理,以避免為后臺(tái)存儲(chǔ)創(chuàng)建大量過濾器。此限制的默認(rèn)為4096,并且可以通過tsd.query.filter.expansion_limit參數(shù)進(jìn)行配置。

顯示標(biāo)簽

??從2.3及更高版本開始,如果給定指標(biāo)所有的標(biāo)簽值可以通過使用explicitTags功能大大降低查詢延遲。有兩個(gè)好處:

  1. 對(duì)高基數(shù)的指標(biāo),后端可以切換到更高效的查詢以從存儲(chǔ)中獲取更小的數(shù)據(jù)子集。
  2. 對(duì)于具有不同標(biāo)簽的指標(biāo),這可以用于避免聚合不應(yīng)包含在最終結(jié)果中的時(shí)間序列。
    ?顯示標(biāo)簽將創(chuàng)建一個(gè)底層存儲(chǔ)查詢,該查詢僅獲取具有給定標(biāo)簽Key的那些行。這可以讓數(shù)據(jù)庫跳過不相關(guān)的行,并在更短的時(shí)間內(nèi)響應(yīng)。
    ?例子:
    ?下面示例使用v1版本的HTTP URI棧,聚合器組成的參數(shù)m,冒號(hào),緊接著指標(biāo)以及花括弧里面通過等號(hào)分隔開的標(biāo)簽過濾器。
    ?例1: http://host:4242/q?start=1h-ago&m=sum:explicit_tags:sys.cpu.system{host=web01}
包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
4 host=web01 1

??這解決了不一致的標(biāo)簽key的問題,使我們只能篩選出時(shí)間序列#4。

??例2: http://host:4242/q?start=1h-ago&m=sum:explicit_tags:sys.cpu.system{host=*}{dc=*}

包含的時(shí)間序列#Tags聚合標(biāo)簽Value@T1
1,6 host=web01 dc 11
2,7 host=web02 dc 6
3 host=web03,dc=dal 10

??此查詢使用v2版本URI語法,以避免將dc標(biāo)簽key置于第二組花括號(hào)中進(jìn)行分組。此時(shí)只篩選同時(shí)擁有host和dc標(biāo)簽key的時(shí)間序列,然而僅僅根據(jù)host的值進(jìn)行分組。它跳過了時(shí)間序列#4和#5。

注意:
?使用HBase(0.98或更高版本)或者Bigtable時(shí),確保tsd.query.enable_fuzzy_filter已經(jīng)在配置中啟用(默認(rèn)啟用)。它為后端提供了一個(gè)特殊的過濾器,可以跳過我們需要查詢的行,而不是遍歷每一個(gè)rowkey進(jìn)行正則表達(dá)式匹配比較。
注意:
?使用2.4版本,TSDB將會(huì)向后端發(fā)送多個(gè)get請(qǐng)求而不是一個(gè)scan請(qǐng)求。此時(shí)可以通過多種因素減少查詢時(shí)間,特別是對(duì)于高基數(shù)的時(shí)間序列。但是,過濾器只能由literal_or組成。

v2.2內(nèi)置過濾器

??下述列表即OpenTSDB內(nèi)置的過濾器。附加的過濾器可以插件的方式加載。每一個(gè)heading都是URI或JSON查詢中使用的type。在編寫URI查詢時(shí),通過將過濾器名稱放在標(biāo)簽key的等號(hào)右側(cè)并將過濾器值放在 括號(hào)中來使用過濾器。例如{host=regexp(web[0-9]+.lax.mysite.com)}。對(duì)于JSON查詢,只需使用過濾器名稱作為type參數(shù),并使用過濾器值作為filter參數(shù)。例如:

??以下示例使用URI語法:

literal_or

??采用一個(gè)literal_or或|管道符連接值列表,則會(huì)返回區(qū)分大小寫敏的結(jié)果匹配時(shí)間序列。這是一個(gè)十分高效的過濾器,因?yàn)樗梢詫⒆址馕鰹閁ID并將其發(fā)送到存儲(chǔ)層進(jìn)行預(yù)過濾。它與SQL的IN謂詞類似。
例子:

  • host=literal_or(web01|web02|web03),類似于SQL:where host in(‘web01’,’web02’,’web03’)
  • host=literal_or(web01),類似于SQL: where host=’webb01’

iliteral_or

??(注意官方文中為ilteral_or,錯(cuò)誤)
OpenTsdb官方文檔----查詢過濾器
與literal_or類似但它不區(qū)分大小寫。請(qǐng)注意:它不像literal_or一樣高效,或者說它必須后處理存儲(chǔ)中的所有行。(即TSDB會(huì)取出存儲(chǔ)中的所有行進(jìn)行過濾)

not_literal_or

與literal_or一樣區(qū)分大小寫,將返回與給定值列表不匹配的時(shí)間序列。因?yàn)樗梢酝ㄟ^存儲(chǔ)進(jìn)行預(yù)處理。

not_iliteral_or

??與not_literal_or過濾效果相同,但不區(qū)分大小寫

wildcard

??提供區(qū)分大小寫的后綴、前綴、中綴(infix)和多個(gè)中綴(multi-infix)過濾器。通配符是星號(hào)”*”。如果只給出星號(hào),則過濾器有效地返回包含標(biāo)簽key的任意時(shí)間序列(并且是可以預(yù)處理的高效過濾器)。在SQL的字段域中,它與LIKE謂詞相似,但具有更多的靈活性。
?例子:

  • host=wildcard(*mysite.com), SQL: where host=’%mysite.com’
  • host=wildcard(web*)
  • host=wildcard(web*mysite.com)
  • host=wildcard(webmysite)
  • host=wildcard(*),與v1版本基礎(chǔ)的group by運(yùn)算符等效,效率很高。

iwildcard

??與wildcard相同,但不區(qū)分大小寫。

regexp

??從存儲(chǔ)中獲取后使用符合POSIX標(biāo)準(zhǔn)正則表達(dá)式的過濾器過濾。該過濾器使用Java內(nèi)置的正則表達(dá)式操作。根據(jù)查詢的使用方法,請(qǐng)注意轉(zhuǎn)義特殊字符。
?例子:

  • regexp(web.), SQL: where host regexp ‘web.
  • regexp(web[0-9].mysite.com)

加載過濾器

??在OpenTSDB2.2及更高版本中顯示加載的過濾器,請(qǐng)調(diào)用HTTP接口/api/config/filters。它將列出加載的插件以及說明和示例用法。
OpenTsdb官方文檔----查詢過濾器

插件

??隨著開發(fā)人員添加插件,將會(huì)在此處列出。
?如果要開發(fā)一個(gè)插件,只需擴(kuò)展net.opentsdb.query.filter.TagVFilter類,然后根據(jù)插件文檔創(chuàng)建JAR包并將其放入插件目錄。在TSD啟動(dòng)時(shí),將會(huì)搜索插件并加載它。如果執(zhí)行過程中出現(xiàn)錯(cuò)誤,TSD將不會(huì)啟動(dòng)并且記錄異常。

本文標(biāo)題:OpenTsdb官方文檔----查詢過濾器
文章分享:http://muchs.cn/article34/ieghpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、做網(wǎng)站品牌網(wǎng)站制作、微信公眾號(hào)ChatGPT、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)