查询数据时,OpenTSDB支持许多日期和时间格式。在通过GUI,CliQuery工具或HTTP API提交的查询中支持以下格式。每个查询都需要一个开始时间和一个可选结束时间。如果未指定结束时间,则将使用运行TSD的系统上的当前时间。
相对的
如果您不知道要请求的确切时间戳,可以提交相对于TSD运行系统上的时间过去的时间。相对时间遵循以下格式<amount><time unit>-ago,其中<amount>为数值,<time unit>是指时间单位,如小时,天,等。例如,如果我们提供了一个起始时间1h-ago,并且leave结束时间,我们的查询将返回在1小时前到当前时间的数据。可能的时间单位包括:
- ms – Milliseconds
- s – Seconds
- m – Minutes
- h – Hours
- d – Days (24 hours)
- w – Weeks (7 days)
- n – Months (30 days)
- y – Years (365 days)
注意:
相对时间不包括闰秒,闰年或时区。他们只是计算当前时间过去的秒数。
绝对Unix时间
在存储内部,所有数据都与Unix(或POSIX)风格的时间戳相关联。Unix时间定义为自1970年1月1日00:00:00 UTC时间起过去的秒数。时间戳被表示为一个正整数,例如1364410924,表示ISO 8601:2013-03-27T19:02:04Z。由于在OpenTSDB中存储数据的调用需要Unix时间戳,因此在查询中支持此格式是有意义的。因此,可以在查询中为开始或结束时间的提供整数。
使用Unix时间戳的查询可以通过简单追加三位数字来支持毫秒精度。例如,提供开始时间1364410924000和结束时间1364410924250将返回250毫秒窗口内数据。毫秒时间戳也可以提供一段时间,从毫秒中分隔秒数1364410924.250。任何具有13(或14)个字符的整数都将被视为毫秒时间戳。任何10个字符或更少的字符代表秒。毫秒只能以3位精度提供。如果您的工具输出超过3位数字,则必须截断或舍入该值。
绝对格式化时间
由于在您的头脑中计算Unix时间非常困难,OpenTSDB还支持人类可读的绝对日期和时间。支持的格式包括:
- YYYY/ MM/ DD-HH:MM:SS
- yyyy/MM/dd HH:mm:ss
- YYYY/MM/ DD-HH:MM
- yyyy/MM/dd HH:mm
- YYYY/MM/DD
yyyy代表年份为四位数值,例如2013。MM代表从01月份到12 月份。dd代表从月份开始的月份的一天01。HH代表在一天的24小时制出发的时间00到23。mm表示起始于分钟00到59并ss表示秒开始00到59。所有月份,日,小时,分钟和秒钟都是单个数字,必须以0为前缀,例如每月的第5天必须为05。当没有时间提供数据时,系统将假定给定日期的午夜。
例子包括2013/01/23-12:50:42或2013/01/23。格式化的时间从运行TSD的主机的默认时区转换为UTC。HTTP API查询可以接受用户提供的时区以覆盖本地时区 。
注意:
使用CliQuery工具时,必须使用用短划线将时间与日期分开的格式。这是因为命令行以空格为分割,所以如果在时间戳中放置空格,它将无法正确解析执行
时区
在转换人类可读的时间戳时,OpenTSDB将根据TSD正在运行的系统上配置的时区转换为UTC。尽管许多服务器都配置为UTC,但我们建议所有运行OpenTSDB的系统都使用UTC,但有时会使用本地时区。
通过查询字符串查询HTTP API可以指定tz带有时区标识字符串的参数,格式适用于运行TSD的系统的本地化设置。例如,我们可以指定tz=America/Los_Angeles将我们的时间戳从洛杉矶当地时间转换为UTC。
或者,如果无法更改系统时区,则可以通过配置文件tsd.core.timezone属性提供覆盖。
下一篇
OpenTsdb官方文档—-查询过滤器
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/195298.html