Opentsdb对uid grep输出的理解

时间:2016-05-06 13:22:46

标签: uid opentsdb

我已经运行'tsdb uid grep metrics'命令并获得低于输出。     

    win.service.wait_hint: [0, 19, -108]
    metrics win.system.context_switches: [0, 19, -119]
    metrics win.system.cpu_queue: [0, 19, -117]
    metrics win.system.exceptions: [0, 19, -118]
    metrics win.system.processes: [0, 19, -113]
    
     我需要理解方括号中给出的这些值的含义。

1 个答案:

答案 0 :(得分:1)

简短回答uid grep <metric name>会返回指标列表。以上输出格式为:

<metric-name> [uid]

指标名称旁边的混乱数组只是指标的uid。

一些背景(为了更清楚) - OpenTSDB将UID分配给metrictagKtagV

  

UID是一个正整数,对于UID的名称是唯一的   对象和它的类型。在存储系统内有一个计数器   对于每个指标,tagk和tagv递增。当你创建一个   新的tsdb-uid表,每个类型的此计数器都设置为0。所以,如果你   放置一个新的数据点,其度量标准为sys.cpu.0,标记对为   host = web01你将有3个新的UID对象,每个对象的UID为1。

UID(默认情况下)为3个字节(24位) - OpenTSDB显示(即对于HTTP api)此UID(24位)为3字节数组,这是3个值的混乱数组,即[0, 19, -108]

来自docs

  

UID可以通过几种方式显示。最常见的方法是通过   HTTP API,其中3个字节的UID数据被编码为十六进制   串。例如,UID为1将以二进制形式写为   000000000000000000000001。作为无符号字节值的数组,您可以将其想象为[0,0,1]。编码为十六进制字符串的值   将是000001,其中字符串填充为每个字节0。该   UID为255将导致十六进制值为0000FF(或作为字节数组,   [0,0,255]。要将十进制UID转换为十六进制,请使用任何类型   您喜欢的十六进制转换工具,并在结果前面放置0   值,直到你总共有6个字符。要转换为十六进制   UID为十进制,只需从前面删除任何0,然后使用工具   将十六进制字符串转换为十进制。

     

在某些CLI工具和日志文件中,UID可能会显示为数组   有符号的字节(感谢Java),例如[0,0,1]的上述例子   或[0,0,-28]。要从此带符号数组转换为数组   无符号字节,然后是十六进制。例如,-28将是二进制10011100   这导致十进制值为156,十六进制值为9C。