我已经运行'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]我需要理解方括号中给出的这些值的含义。
答案 0 :(得分:1)
简短回答:
uid grep <metric name>
会返回指标列表。以上输出格式为:
<metric-name> [uid]
指标名称旁边的混乱数组只是指标的uid。
一些背景(为了更清楚) - OpenTSDB将UID分配给metric
,tagK
,tagV
。
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。