国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì)之 OpenTSDB 篇

SolomonXie / 3147人閱讀

摘要:本文所闡述的時(shí)間序列數(shù)據(jù)庫(kù),系筆者所負(fù)責(zé)產(chǎn)品對(duì)性能指標(biāo)進(jìn)行聚合分組過(guò)濾過(guò)程中的梳理和總結(jié)。而帶有標(biāo)志的,則是數(shù)據(jù)采集源,將數(shù)據(jù)發(fā)給服務(wù)。左面的則是的特點(diǎn)之一,其規(guī)則為以上屬性值均為對(duì)應(yīng)名稱(chēng)的。

【編者按】 劉斌,OneAPM后端研發(fā)工程師,擁有10多年編程經(jīng)驗(yàn),參與過(guò)大型金融、通信以及Android手機(jī)操作系的開(kāi)發(fā),熟悉Linux及后臺(tái)開(kāi)發(fā)技術(shù)。曾參與翻譯過(guò)《第一本Docker書(shū)》、《GitHub入門(mén)與實(shí)踐》、《Web應(yīng)用安全權(quán)威指南》、《WEB+DB PRESS》、《Software Design》等書(shū)籍,也是Docker入門(mén)與實(shí)踐課程主講人。本文所闡述的「時(shí)間序列數(shù)據(jù)庫(kù)」,系筆者所負(fù)責(zé)產(chǎn)品 Cloud Insight 對(duì)性能指標(biāo)進(jìn)行聚合、分組、過(guò)濾過(guò)程中的梳理和總結(jié)。

什么是 OpenTSDB

OpenTSDB ,可以認(rèn)為是一個(gè)時(shí)系列數(shù)據(jù)(庫(kù)),它基于HBase存儲(chǔ)數(shù)據(jù),充分發(fā)揮了HBase的分布式列存儲(chǔ)特性,支持?jǐn)?shù)百萬(wàn)每秒的讀寫(xiě),它的特點(diǎn)就是容易擴(kuò)展,靈活的tag機(jī)制。

架構(gòu)簡(jiǎn)介

這里我們簡(jiǎn)單看一下它的架構(gòu),如下圖所示:

其最主要的部件就是TSD了,這是接收數(shù)據(jù)并存儲(chǔ)到HBase處理的核心所在。而帶有C(collector)標(biāo)志的Server,則是數(shù)據(jù)采集源,將數(shù)據(jù)發(fā)給 TSD服務(wù)。

安裝 OpenTSDB

為了安裝 OpenTSDB ,都需要以下條件和軟件:

Linux操作系統(tǒng)

JRE 1.6 or later

HBase 0.92 or later

安裝GnuPlot

如果你還想使用自帶的界面,則需要安裝GnuPlot 4.2及以后版本,以及gd和gd-devel等。這里我們選擇了GnuPlot 5.0.1的版本。

根據(jù)情況執(zhí)行(沒(méi)有就裝),安裝所需軟件

$ sudo yum install -y gd gd-devel libpng libpng-devel

之后安裝GnuPlot:

$ tar zxvf gnuplot-5.0.1.tar.gz$ cd gnuplot-5.0.1$ ./configure$ make$ sudo make install
安裝HBase

首先,確保設(shè)置了JAVA_HOME:

$ echo $JAVA_HOME/usr

這個(gè)不多說(shuō)了,非常簡(jiǎn)單,只需要按照 https://hbase.apache.org/book.html#quickstart 這里所說(shuō),下載、解壓、修改配置文件、啟動(dòng)即可。

這時(shí)候,再設(shè)置HBASE_HOME:

$ echo $HBASE_HOME/opt/hbase-1.0.1.1

之后便可啟動(dòng)hbase:

$ /opt/hbase-1.0.1.1/bin/start-hbase.sh
starting master, logging to /opt/hbase-1.0.1.1/logs/hbase-vagrant-master-localhost.localdomain.out
安裝 OpenTSDB

這個(gè)也很簡(jiǎn)單,如果build失敗,那肯定是缺少M(fèi)ake或者Autotools等東西,用包管理器安裝即可。

$ git clone git://github.com/OpenTSDB/opentsdb.git$ cd opentsdb$ ./build.sh

創(chuàng)建表OpenTSDB所需要的表結(jié)構(gòu):

$ env COMPRESSION=NONE ./src/create_table.sh2016-01-08 06:17:58,045 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
HBase Shell; enter ‘help‘ for list of supported commands.
Type “exit” to leave the HBase Shell
Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015create ‘tsdb-uid’,
{NAME => ‘id’, COMPRESSION => ‘NONE’, BLOOMFILTER => ‘ROW’},
{NAME => ‘name’, COMPRESSION => ‘NONE’, BLOOMFILTER => ‘ROW’}0 row(s) in 1.3180 secondsHbase::Table – tsdb-uidcreate ‘tsdb’,
{NAME => ‘t’, VERSIONS => 1, COMPRESSION => ‘NONE’, BLOOMFILTER => ‘ROW’}0 row(s) in 0.2400 secondsHbase::Table – tsdbcreate ‘tsdb-tree’,
{NAME => ‘t’, VERSIONS => 1, COMPRESSION => ‘NONE’, BLOOMFILTER => ‘ROW’}0 row(s) in 0.2160 secondsHbase::Table – tsdb-treecreate ‘tsdb-meta’,
{NAME => ‘name’, COMPRESSION => ‘NONE’, BLOOMFILTER => ‘ROW’}0 row(s) in 0.4480 secondsHbase::Table – tsdb-meta

在habse shell里,可以看到表已經(jīng)創(chuàng)建成功。

> listTABLE
tsdb
tsdb-metatsdb-treetsdb-uid4 row(s) in 0.0160 seconds

表創(chuàng)建之后,即可啟動(dòng)tsd服務(wù),只需要運(yùn)行如下命令:

$ build/tsdb tsd

如果看到輸出:

2016-01-09 05:51:10,875 INFO [main] TSDMain: Ready to serve on /0.0.0.0:4242

即可認(rèn)為啟動(dòng)成功。

保存數(shù)據(jù)到OpenTSDB.

在安裝并啟動(dòng)所有服務(wù)之后,我們就來(lái)嘗試發(fā)送1條數(shù)據(jù)吧。

最簡(jiǎn)單的保存數(shù)據(jù)方式就是使用telnet。

$ telnet localhost 4242put sys.cpu.user 1436333416 23 host=web01 user=10001

這時(shí),從 OpenTSDB 自帶界面都可以看到這些數(shù)據(jù)。 由于sys.cpu.sys的數(shù)據(jù)只有一條,所以 OpenTSDB 只能看到一個(gè)點(diǎn)。

下圖為 OpenTSDB 自帶的查詢界面,訪問(wèn)http://localhost:4242即可。

OpenTSDB中的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)

我們來(lái)看看 OpenTSDB 的重要概念uid,先從HBase中存儲(chǔ)的數(shù)據(jù)開(kāi)始吧,我們來(lái)看一下它都有哪些表,以及這些表都是干什么的。

tsdb:存儲(chǔ)數(shù)據(jù)點(diǎn)

hbase(main):003:0> scan "tsdb"
ROW                           COLUMN+CELL  

 x00x00x01Ux9CxAEPx00x column=t:qx80,timestamp=1436350142588, value=x17   
 
 00x01x00x00x01x00x00x   
 
 02x00x00x02  
 
1 row(s) in 0.2800 seconds

可以看出,該表只有一條數(shù)據(jù),我們先不管rowid,只來(lái)看看列,只有一列,值為0x17,即十進(jìn)制23,即該metric的值。

左面的row key則是 OpenTSDB 的特點(diǎn)之一,其規(guī)則為:

metric + timestamp + tagk1 + tagv1… + tagkN + tagvN

以上屬性值均為對(duì)應(yīng)名稱(chēng)的uid。

我們上面添加的metric為:

sys.cpu.user 1436333416 23 host=web01 user=10001

一共涉及到5個(gè)uid,即名為sys.cpu.user的metric,以及host和user兩個(gè)tagk及其值web01和10001。

上面數(shù)據(jù)的row key為:

x00x00x01Ux9CxAEPx00x00x01x00x00x01x00x00x02x00x00x02

具體這個(gè)row key是怎么算出來(lái)的,我們來(lái)看看tsdb-uid表。

tsdb-uid:存儲(chǔ)name和uid的映射關(guān)系

下面tsdb-uid表的數(shù)據(jù),各行之間人為加了空行,為方便顯示。

tsdb-uid用來(lái)保存名字和UID(metric,tagk,tagv)之間互相映射的關(guān)系,都是成組出現(xiàn)的,即給定一個(gè)name和uid,會(huì)保存(name,uid)和(uid,name)兩條記錄。

我們一共看到了8行數(shù)據(jù)。

前面我們?cè)趖sdb表中已經(jīng)看到,metric數(shù)據(jù)的row key為x00x00x01Ux9CxAEPx00x00x01x00x00x01x00x00x02x00x00x02 ,我們將其分解下,用+號(hào)連起來(lái)(從name到uid的映射為最后5行):

 x00x00x01 + U + x9CxAE + P + x00x00x01 + x00x00x01 + x00x00x02  + x00x00x02
sys.cpu.user       1436333416           host    =      web01          user     =    10001

可以看出,這和我們前面說(shuō)到的row key的構(gòu)成方式是吻合的。

需要著重說(shuō)明的是時(shí)間戳的存儲(chǔ)方式。
雖然我們指定的時(shí)間是以秒為單位的,但是,row key中用到的卻是以一小時(shí)為單位的,即:1436333416 – 1436333416 % 3600 = 1436331600

1436331600轉(zhuǎn)換為16進(jìn)制,即0x55 0x9c 0xae 0x50,而0x55即大寫(xiě)字母U,0x50為大寫(xiě)字母P,這就是4個(gè)字節(jié)的時(shí)間戳存儲(chǔ)方式。相信下面這張圖能幫助各位更好理解這個(gè)意思,即一小時(shí)只有一個(gè)row key,每秒鐘的數(shù)據(jù)都會(huì)存為一列,大大提高查詢的速度。

反過(guò)來(lái),從uid到name也一樣,比如找uid為x00x00x02的tagk,我們從上面結(jié)果可以看到,該row key(x00x00x02)有4列,而column=name:tagk的value就是user,非常簡(jiǎn)單直觀。

重要:我們看到,上面的metric也好,tagk或者tagv也好,uid只有3個(gè)字節(jié),這是 OpenTSDB 的默認(rèn)配置,三個(gè)字節(jié),應(yīng)該能表示1600多萬(wàn)的不同數(shù)據(jù),這對(duì)metric名或者tagk來(lái)說(shuō)足夠長(zhǎng)了,對(duì)tagv來(lái)說(shuō)就不一定了,比如tagv是ip地址的話,或者電話號(hào)碼,那么這個(gè)字段就不夠長(zhǎng)了,這時(shí)可以通過(guò)修改源代碼來(lái)重新編譯 OpenTSDB 就可以了,同時(shí)要注意的是,重編以后,老數(shù)據(jù)就不能直接使用了,需要導(dǎo)出后重新導(dǎo)入。

tsdb-meta:元數(shù)據(jù)表

我們?cè)倏聪碌谌齻€(gè)表tsdb-meta,這是用來(lái)存儲(chǔ)時(shí)間序列索引和元數(shù)據(jù)的表。這也是一個(gè)可選特性,默認(rèn)是不開(kāi)啟的,可以通過(guò)配置文件來(lái)啟用該特性,這里不做特殊介紹了。

tsdb-tree:樹(shù)形表

第4個(gè)表是tsdb-tree,用來(lái)以樹(shù)狀層次關(guān)系來(lái)表示metric的結(jié)構(gòu),只有在配置文件開(kāi)啟該特性后,才會(huì)使用此表,這里我們不介紹了,可以自己嘗試。

通過(guò)HTTP接口保存數(shù)據(jù)

保存數(shù)據(jù)除了我們前面用到的telnet方式,也可以選擇HTTP API或者批量導(dǎo)入工具

import( http://opentsdb.net/docs/build/html/user_guide/cli/import.html )

這里我們?cè)賹?duì)HTTP API進(jìn)行簡(jiǎn)單示例說(shuō)明。

假設(shè)我們有如下數(shù)據(jù),保存為文件mysql.json:

[
    {
        "metric": "mysql.innodb.row_lock_time",
        "timestamp": 1435716527,
        "value": 1234,
        "tags": {
           "host": "web01",
           "dc": "beijing"        }    },
    {
        "metric": "mysql.innodb.row_lock_time",
        "timestamp": 1435716529,
        "value": 2345,
        "tags": {
           "host": "web01",
           "dc": "beijing"        }    },
    {
        "metric": "mysql.innodb.row_lock_time",
        "timestamp": 1435716627,
        "value": 3456,
        "tags": {
           "host": "web02",
           "dc": "beijing"        }    },
    {
        "metric": "mysql.innodb.row_lock_time",
        "timestamp": 1435716727,
        "value": 6789,
        "tags": {
           "host": "web01",
           "dc": "tianjin"        }    }
]

之后執(zhí)行如下命令:

$ curl -X POST -H “Content-Type: application/json” http://localhost:4242/api/put -d @mysql.json

即可將數(shù)據(jù)保存到 OpenTSDB 了。

查詢數(shù)據(jù)

看完了如何保存數(shù)據(jù),我們?cè)賮?lái)看看如何查詢數(shù)據(jù)。

查詢數(shù)據(jù)可以使用query接口,它既可以使用get的query string方式,也可以使用post方式以JSON格式指定查詢條件,這里我們以后者為例,對(duì)剛才保存的數(shù)據(jù)進(jìn)行說(shuō)明。

首先,保存如下內(nèi)容為search.json:

{
    "start": 1435716527,
    "queries": [
        {
            "metric": "mysql.innodb.row_lock_time",
            "aggregator": "avg",
            "tags": {
                "host": "*",
                "dc": "beijing"            }        }
    ]}

執(zhí)行如下命令進(jìn)行查詢:

$ curl -s -X POST -H "Content-Type: application/json" http://localhost:4242/api/query -d @search.json | jq .
[
  {    "metric": "mysql.innodb.row_lock_time",    "tags": {      "host": "web01",      "dc": "beijing"
    },    "aggregateTags": [],    "dps": {      "1435716527": 1234,      "1435716529": 2345
    }
  },
  {    "metric": "mysql.innodb.row_lock_time",    "tags": {      "host": "web02",      "dc": "beijing"
    },    "aggregateTags": [],    "dps": {      "1435716627": 3456
    }
  }
]

可以看出,我們保存了dc=tianjin的數(shù)據(jù),但是并沒(méi)有在此查詢中返回,這是因?yàn)椋覀冎付薲c=beijing這一條件。

值得注意的是,tags參數(shù)在新版本2.2中,將不被推薦,取而代之的是filters參數(shù)。

總結(jié)

可以看出來(lái), OpenTSDB 還是非常容易上手的,尤其是單機(jī)版,安裝也很簡(jiǎn)單。有HBase作為后盾,查詢起來(lái)也非常快,很多大公司,類(lèi)似雅虎等,也都在用此軟件。

但是,大規(guī)模用起來(lái),多個(gè)TDB以及多存儲(chǔ)節(jié)點(diǎn)等,應(yīng)該都需要專(zhuān)業(yè)、細(xì)心的運(yùn)維工作了。

相關(guān)閱讀

這是本系列文章的其他部分:

時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì)之什么是TSDB

時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì)之TSDB名錄 Part 1

時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì)之TSDB名錄 Part 2

時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì)之KairosDB篇

Cloud Insight 集監(jiān)控、管理、計(jì)算、協(xié)作、可視化于一身,幫助所有 IT 公司,減少在系統(tǒng)監(jiān)控上的人力和時(shí)間成本投入,讓運(yùn)維工作更加高效、簡(jiǎn)單。

本文轉(zhuǎn)自 OneAPM 官方博客

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/17517.html

相關(guān)文章

  • 時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì) KairosDB

    摘要:本文所闡述的時(shí)間序列數(shù)據(jù)庫(kù),系筆者所負(fù)責(zé)產(chǎn)品對(duì)性能指標(biāo)進(jìn)行聚合分組過(guò)濾過(guò)程中的梳理和總結(jié)。列出這個(gè)能列出系統(tǒng)中所有的。 【編者按】劉斌,OneAPM后端研發(fā)工程師,擁有10多年編程經(jīng)驗(yàn),參與過(guò)大型金融、通信以及Android手機(jī)操作系的開(kāi)發(fā),熟悉Linux及后臺(tái)開(kāi)發(fā)技術(shù)。曾參與翻譯過(guò)《第一本Docker書(shū)》、《GitHub入門(mén)與實(shí)踐》、《Web應(yīng)用安全權(quán)威指南》、《WEB+DB PRE...

    Anchorer 評(píng)論0 收藏0
  • 時(shí)序列數(shù)據(jù)庫(kù)武斗大會(huì) KairosDB

    摘要:本文所闡述的時(shí)間序列數(shù)據(jù)庫(kù),系筆者所負(fù)責(zé)產(chǎn)品對(duì)性能指標(biāo)進(jìn)行聚合分組過(guò)濾過(guò)程中的梳理和總結(jié)。列出這個(gè)能列出系統(tǒng)中所有的。 【編者按】劉斌,OneAPM后端研發(fā)工程師,擁有10多年編程經(jīng)驗(yàn),參與過(guò)大型金融、通信以及Android手機(jī)操作系的開(kāi)發(fā),熟悉Linux及后臺(tái)開(kāi)發(fā)技術(shù)。曾參與翻譯過(guò)《第一本Docker書(shū)》、《GitHub入門(mén)與實(shí)踐》、《Web應(yīng)用安全權(quán)威指南》、《WEB+DB PRE...

    MockingBird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<