一.命名方案
OpenTSDB命名格式有點類似於RRD樣式,只不過引入了標記(tags),使得指標(metric)更具有代表性和通用性,可以共用許多獨特的時間序列。通過標記的索引值對組合來確定指標的唯一性,可以非常靈活的進資料列彙總函式的查詢。
RRD如果要記錄web1伺服器的第一個CPU的使用者空間使用量,命名的格式為web1.sys.cpu.0.user,如果有上千台伺服器,每台多核CPU,那麼需要命名很多來區別,如webN.sys.cpu.M.user。 對於OpenTSDB,可以這麼命名sys.cpu.user host=web1,cpu=0。如果要匯總所有核心的值,只需sum:sys.cpu.user{host=web1}。如果要匯總上千台伺服器的CPU值,只需sum:sys.cpu.user。比RRD命名格式更加的靈活通用。
因此,對於要監控的對象命名,要定義一個相同的共性,便於匯總,同時,要能很好的表達監控的項目。 二.指標命名規範
指標名稱區分大小寫,統一以小寫字母命名。
指標名稱不能含有空格。
指標名稱只能含有下列字元:a-z,A-Z,0-9,-,_,.,/或Unicode字母。
指標名稱盡量精短。 三.指標值規範
指標值可以是整數也可以是浮點數。 四.時間戳記
UNIX時間戳記,可以是秒或毫秒,必需是整數,且不能超過13位元。毫秒級的時間戳記格式必需是1234567890123,最後三位代表毫秒數。對於應用程式產生的時間戳記超過13位的,必需四捨五入至最高13位,否則報錯。
由於OpenTSDB底層儲存系統HBase目前只支援秒層級的儲存,因此對於毫秒層級的資料會轉換成秒。 五. 標記命名規範
標記是用來補充說明指標的,是指標的屬性,來對指標進行差異性的定義。
標記是一對索引值對。
每個指標至少有一個標記。通常是host=ip或host=hostname。
OpenTSDB最多支援8個標記。
標記區分大小寫,統一以小寫字母命名。
標記不能含有空格。
標記只能含有下列字元:a-z,A-Z,0-9,-,_,.,/或Unicode字母。 六. HTTP API介面
為了節省頻寬,該介面允許在一個單一的請求中提交多個資料點資料。每個資料點單獨處理,如果其中某個資料點有問題不會影響其他資料點的儲存。 地址: /api/put /api/put?summary 調試,返回匯總資訊 /api/put?details 調試,返回詳細資料 方法:POST 格式:
{
metric: ”lvs.connection.active”, //必需,字串,指標名稱
timestamp: 1234567890, //必需,整型,時間戳記
value: 11.11, //必需,整型、浮點型、字串,指標值
tags: {“host”:”web1”} //必需,對象,標記對
} 返回結果:
預設情況下,如果所有資料存放區成功,響應一個204的狀態代碼。如果有一個或多個資料點出錯,返回400狀態代碼和錯誤訊息內容。 請求地址是/api/put?summary時,返回:
{
“failed”: 1, //整型,儲存失敗的資料點數量
“success”: 0 //整型,儲存成功的資料點數量
} 請求地址是/api/put?details時,返回:
{
"errors": [ …], //數組,失敗的資料點列表以及失敗原因
"failed": 1,
"success": 0
} 七. HTTP API介面執行個體
1. /api/put
# curl -i -X POST -d '{"metric":"proc.loadavg.15m", "timestamp":1413015492, "value":8, "tags":{"host":"10.0.101.145"}}' http://10.0.101.145:4242/api/put HTTP/1.1204NoContent Content-Type:application/json;charset=UTF-8 Content-Length:0
2./api/put?summary