Class: net.opentsdb.tsd.RpcManager
该类维护了HTTP/RPC Protocol下指令,以及具体执行对象的信息。
Commands
Write
put
telnet: put
http-api: api/put
code: class PutDataPointRpc
qualifier 格式
Long比特位格式:
bit[0:2] 保存value length
bit[3] Float Flag
毫秒时间戳
bit[0:5] 保存flag
bit[6:27] 保存真实时间戳
bit[28:31] 全为1,java为大端,该信息保存在bytes[0]位置
秒时间戳
bit[0:3] 保存flag
bit[4:] 保存真实时间戳
秒与毫秒时间戳的区分
1 | /** Mask to verify a timestamp on 4 bytes in seconds */ |
timestamp不超过~SECOND_MASK
,则认为时间戳单位为秒。否则为毫秒。
参考代码:link
append模式与普通模式
append模式下,统一小时内的数据都追加到同一列中,qualifer为0x050000
,共三字节。1
2
3
4
5
6
7
8
9
10
11// File: AppendDataPoints.java
// Line: 41
public class AppendDataPoints {
private static final Logger LOG = LoggerFactory.getLogger(AppendDataPoints.class);
/** The prefix ID of append columns */
public static final byte APPEND_COLUMN_PREFIX = 0x05;
/** The full column qualifier for append columns */
public static final byte[] APPEND_COLUMN_QUALIFIER = new byte[] {
APPEND_COLUMN_PREFIX, 0x00, 0x00};
References:
compaction
class:
- net.opentsdb.core.CompactionQueue
- net.opentsdb.core.CompactionQueue.Compaction
- net.opentsdb.core.CompactionQueue.ColumnDatapointIterator
非append模式下,每次有新数据写入,就会将rowkey插入到一个CompactionQueue,然后定期处理,该对象是一个Sorted Set,插入时有去重。
CompactionQueue初始化时会启动一个thread处理任务。当前时间 - baseTime(rowkey) > 3600秒,则会进行处理。
Read
Stats
telnet: stats
http-api: api/stats
http-ui: stats
code: class StatsRpc
class: net.opentsdb.stats.StatsCollector
StatsCollector是一个抽象基类,接口实现中初始化一个StatsCollector类型对象,然后在各组件中通过调用collectStats()接口收集状态信息。
StatsCollector默认内部记录统计信息的格式为:1
stats-name timestamp value tagk=tagv tagk=tav...
返回给用户的,没记录一条信息就会调用StatsCollector::emit(record-str)函数,子类实现emit函数,完成格式的状态。
Drop Caches
telnet: dropcaches
http-api: api/dropcaches
http-ui: dropcaches
code: class DropCachesRpc
metrics/tagk/tagv各对应一个UniqueId Instance,该类内部有 name <-> id 映射关系的缓存,该接口清空这三个对象内部缓存。code link
Version
telnet: version
http-api: api/version
http-ui: version
code: class RpcManager.Version
获取实例的版本信息。1
2
3
4
5
6
7
8
9
10
11{
"short_revision": "",
"repo": "/root/opentsdb-2.3.0/build",
"host": "***********",
"version": "2.3.0",
"full_revision": "",
"repo_status": "MODIFIED",
"user": "root",
"branch": "",
"timestamp": "1521782831"
}
通过脚本build-aux/gen_build_data.sh
生成BuildData.java文件,运行时读取该类的信息。
Exit
telnet: exit
code: class RpcManager.Exit
关闭连接。
Help
telnet: help
code: class RpcManager.Help
返回telnet_commands列表。
HomePage
http-ui: ""
code: class RpcManager.HomePage
UI主页。
List Aggregators
http-api: api/aggregators
http-ui: aggregators
code: class ListAggregators
显示支持的聚合方式列表。
Static File
http-ui: favicon.ico|s
code: class StaticFileRpc
返回 /s/[path/to/static/file] s之后的uri部分对应的静态文件。
Logs
http-ui: logs
code: class LogsRpc
该接口有两类功能:
- 获取日志信息,默认plain text格式,可加参数json。
- 设置logger日志等级,参数 level, logger。
level参数取值
Graph
http-ui: q
code: class GraphHandler
Suggest
http-api: api/suggest
http-ui: suggest
code: SuggestRpc
It's used for auto-complete entries and does not support wildcards.
输入参数:
- type: metrics, tagk, tagv. required.
- q: optional, default "".
- max: optional, default 25.
Annotation
http-api: api/annotation|api/annotations
code: class AnnotationRpc
Show Config
http-api: api/config
code: class RpcManager.ShowConfig
两种请求
- api/config
返回运行实例的配置项。 - api/config/filters
返回所有的tag value filters信息。
Query
http-api: api/query
code: class QueryRpc
Reference:
Search
http-api: api/search
code: class SearchRpc
Reference:
Serializers
http-api: api/serializers
code: class Serializers
显示支持的序列化方式列表。
Tree
http-api: api/tree
code: class TreeRpc
Reference:
- /api/tree
- /api/tree/branch
- /api/tree/rule
- /api/tree/rules
- /api/tree/test
- /api/tree/collisions
- /api/tree/notmatched
UniqueId
http-api: api/uid
code: class UniqueIdRpc
该接口有如下子功能:
assign
给name分配uid。1
/api/uid/assign?metric=nameA,nameB&tagk=nameC,nameD&tagv=nameE,nameF
uidmeta
2.1. GET
获取uid meta信息1
/api/uid/uidmeta?type=tagk&uid=000013
2.2. POST
设置meta信息。
2.3. DELETE
删除meta信息。- tsmeta
Handles CRUD calls to individual TSMeta data entries - rename
更改uid对应的名字,一次只能更新一个。1
/api/uid/rename?tagk=OldName&name=NewName
DieDieDie
telnet: diediedie
http: diediedie
code: class DieDieDie
关闭服务端。