openTSDB詳解之api/uid/tsmeta
openTSDB詳解之api/uid/tsmeta
【待完善】
api/uid/tsmeta
這個端點可以讓你查詢,編輯或者刪除時間序列元資料資訊,這個元資料資訊是和具體的時間序列的metric,tag name,tag value
相關聯的。一些欄位被TSD設定,但是一些卻是可以有使用者設定的。【譯者注:這些特性和uidmeta很相像】。當使用POST
方法時,僅僅請求中的欄位將會被儲存。存在的欄位不會被包含在內,將會被單獨留下。使用PUT
方法將會覆寫使用者所有的可變欄位,使用給定值,或者預設值,如果一個給出的欄位沒有被提供。
請注意:刪除一個meta data 項不會刪除時間序列的資料點。這個操作既不會移除UID 分配,同時也不會移除相關UID meta物件。
1. Verbs
- GET 檢視一或多個
TS meta data
- POST 僅僅更新提供的欄位
- PUT 覆寫所有使用者可配置的meta data欄位
- DELETE 刪除TS meta data
2. GET Requests
一個GET請求能夠查詢TS meta物件,為一個或者多個時間序列,如果它們存在與儲存系統中。兩種型別的查詢是被支援的:
- tsuid 單個十六進位制的TSUID可能被應用,並且一個meta data 物件將會被返回。結果將會包涵單個物件。
- metric 與資料點查詢相似,你能應用一個metric並且已到多個tag pair。任何TS meta data匹配於查詢的都將被返回。結果將會是一或多個物件的陣列。僅僅metric 查詢被應用於一次呼叫,並且萬用字元或者分組符是不被支援的。
2.1 Example TSUI GET Request
http://localhost:4242/api/uid/tsmeta?tsuid=00002A000001000001
2.2 Example Metric GET Request
http://localhost:4242/api/uid/tsmeta?m=sys.cpu.nice&dc=lga
3. POST/PUT Requests
預設情況下,你能僅僅寫資料到一個TS meta 物件,如果該物件已經存在的話。TS meta data被建立通過meta sync CLI命令或者實時的當資料點被寫入的時候。如果你嘗試寫資料到tsmeta endpoint,為一個不存在的TSUID時,一個錯誤將會被返回,並且不會儲存任何的資料。
一個請求中可以包含的欄位有:
3.1 Note
自定義的欄位不能通過查詢字串傳遞。你必須使用POST
或者PUT
方法
3.2 warning
如果你使用PUT方式請求,你沒有應用的任何欄位將會被覆寫成他們本來的預設值。例如:description
欄位將會被設定成一個空字串,同時custom
欄位將會被重置成null
。
在opentSDB 2.1中,你可能應用一個metric 樣式的查詢,如果UID存在,對於給定的metric
以及tags
,一個新的TS meta物件將會被儲存。資料可能被應用通過POST針對上述欄位,作為一個正常的請求,然後tsuid
欄位必須是留空。另外,兩個查詢字串必須被應用:
- m - 與GET請求或者資料點查詢相同,
m
代表A metric 以及tags - create - 一個值為true的標籤
例如:
http://localhost:4242/api/uid/tsmeta?display_name=Testing&m=sys.cpu.nice{host=web01,dc=lga}&create=true&method_override=post
如果一個TS meta物件已經存在,對於給出的metric和tags,欄位將會被更新或者覆寫。
4.1 Example POST or PUT Request
查詢字串
http://localhost:4242/api/uid/tsmeta?tsuid=00002A000001000001&method_override=post&display_name=System%20CPU%20Time
Json 內容
{
"tsuid":"00002A000001000001",
"displayName":"System CPU Time for Webserver 01",
"custom": {
"owner": "Jane Doe",
"department": "Operations",
"assetTag": "12345"
}
}
4.2 Example DELETE Request
查詢字串
http://localhost:4242/api/uid/tsmeta?tsuid=00002A000001000001&method_override=delete
{
"tsuid":"00002A000001000001"
}
5. Response
一個成功的GET,POST,PUT請求的響應將會返回完整的TS meta 資料物件帶有任何給定的變化。成功的DELETE呼叫將會返回一個204 狀態碼,並且沒有任何內容。當修改資料時,如果任何的狀態是存在的。例如:呼叫沒有提供任何儲存的資料,響應將會是304,不帶有任何的內容。如果請求的TSUID不存在與系統中,一個404將會被返回,同時伴有一個錯誤訊息。如果無效的資料被應用,一個錯誤將會被返回。
除了其他欄位之外,所有請求欄位都將顯示在響應中:
5.1 Example Response
{
"tsuid": "00002A000001000001",
"metric": {
"uid": "00002A",
"type": "METRIC",
"name": "sys.cpu.0",
"description": "System CPU Time",
"notes": "",
"created": 1350425579,
"custom": null,
"displayName": ""
},
"tags": [
{
"uid": "000001",
"type": "TAGK",
"name": "host",
"description": "Server Hostname",
"notes": "",
"created": 1350425579,
"custom": null,
"displayName": "Hostname"
},
{
"uid": "000001",
"type": "TAGV",
"name": "web01.mysite.com",
"description": "Website hosting server",
"notes": "",
"created": 1350425579,
"custom": null,
"displayName": "Web Server 01"
}
],
"description": "Measures CPU activity",
"notes": "",
"created": 1350425579,
"units": "",
"retention": 0,
"max": "NaN",
"min": "NaN",
"custom": {
"owner": "Jane Doe",
"department": "Operations",
"assetTag": "12345"
},
"displayName": "",
"dataType": "absolute",
"lastReceived": 1350425590,
"totalDatapoints", 12532
}
6.實戰案例
筆者在自己的openTSDB測試叢集測試http://192.168.211.4:4399/api/uid/tsmeta?m=test_meta
地址,得到資料如下:
[
{
"tsuid": "000005000003000005",
"metric": {
"uid": "000005",
"type": "METRIC",
"name": "test_meta",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
},
"tags": [
{
"uid": "000003",
"type": "TAGK",
"name": "accessNumber",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
},
{
"uid": "000005",
"type": "TAGV",
"name": "cs",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
}
],
"description": "",
"notes": "",
"created": 1541500656,
"units": "",
"retention": 0,
"max": "NaN",
"min": "NaN",
"displayName": "",
"dataType": "",
"lastReceived": 1541502954,
"totalDatapoints": 224
},
{
"tsuid": "000005000003000008",
"metric": {
"uid": "000005",
"type": "METRIC",
"name": "test_meta",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
},
"tags": [
{
"uid": "000003",
"type": "TAGK",
"name": "accessNumber",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
},
{
"uid": "000008",
"type": "TAGV",
"name": "firminal",
"description": "",
"notes": "",
"created": 0,
"custom": null,
"displayName": ""
}
],
"description": "",
"notes": "",
"created": 1541500656,
"units": "",
"retention": 0,
"max": "NaN",
"min": "NaN",
"displayName": "",
"dataType": "",
"lastReceived": 1541502955,
"totalDatapoints": 224
}
]