1. 程式人生 > >openTSDB詳解之api/uid/tsmeta

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
  }
]