功能介绍
Pegasus为MetaServer,ReplicaServer和Collector都提供了HTTP接口,用于查看集群相关信息,查询服务状态等。
注意
- 由于最新数据由主MetaServer维护,当访问备用MetaServer的元数据查询接口时,会自动重定向至主MetaServer对应的接口。
举个例子,假设
127.0.0.1:34601
和127.0.0.1:34602
分别是主备MetaServer,访问127.0.0.1:34602/meta/cluster
会自动跳转到127.0.0.1:34601/meta/cluster
。
接口介绍
所有接口均返回JSON格式。使用浏览器查看JSON时,建议使用Chrome插件json-formatter以优化阅读体验。
/
功能: 主页面,获取所有接口的使用帮助
示例:127.0.0.1:34801
返回:
{
"/": "ip:port/",
"/meta/app": "ip:port/meta/app?app_name=temp",
"/meta/app/duplication": "ip:port/meta/app/duplication?name=<app_name>",
"/meta/app_envs": "ip:port/meta/app_envs?name=temp",
"/meta/apps": "ip:port/meta/apps",
"/meta/backup_policy": "ip:port/meta/backup_policy",
"/meta/cluster": "ip:port/meta/cluster",
"/meta/nodes": "ip:port/meta/nodes",
"/perfCounter": "ip:port/perfCounter?name={perf_counter_name}",
"/pprof/cmdline": "ip:port/pprof/cmdline",
"/pprof/growth": "ip:port/pprof/growth",
"/pprof/heap": "ip:port/pprof/heap",
"/pprof/profile": "ip:port/pprof/profile",
"/pprof/symbol": "ip:port/pprof/symbol",
"/recentStartTime": "ip:port/recentStartTime",
"/version": "ip:port/version"
}
/version
功能: 获取应用的版本
示例:127.0.0.1:34801/version
返回:
{
"GitCommit": "cf428dc0ef995b961809df860e783417de7757fc",
"Version": "1.12.SNAPSHOT"
}
/recentStartTime
功能: 获取进程启动时间
示例:127.0.0.1:34801/recentStartTime
返回:
{
"RecentStartTime": "2019-08-14 00:22:00"
}
/pprof/profile
功能: 获取server的cpu采样
示例1:127.0.0.1:34801/pprof/profile?seconds=10
返回: profile文件
示例2: 推荐使用google/pprof Web UI
pprof --http=:8080 http://127.0.0.1:34801/pprof/heap
/pprof/symbol
功能: 获取symbol信息
示例1:127.0.0.1:34801/pprof/symbol
返回: 非post请求,返回symbol个数
num_symbols: 46225
示例2:curl 127.0.0.1:34801/pprof/symbol -X POST -d "123455"
返回: post请求,返回输入地址对应的symbol
0x00123455 boost::asio::detail::keyword_tss_ptr
/pprof/heap
功能: 获取server的内存采样
示例1:127.0.0.1:34801/pprof/heap
返回: heap profile文本
示例2: 推荐使用google/pprof Web UI
pprof --http=:8080 http://127.0.0.1:34801/pprof/heap
注意: 需在被采样server所在机器设置环境变量TCMALLOC_SAMPLE_PARAMETER
/pprof/cmdline
功能: 获取/proc/self/cmdline内容
示例:127.0.0.1:34801/pprof/cmdline
返回:
/somepath/pegasus/onebox/replica1/pegasus_server
config.ini
-app_list
replica
/pprof/growth
功能: 获取growth profile
示例:127.0.0.1:34801/pprof/growth
返回: growth profile文本
/meta/app?name=<app_name>
功能: 获取某个表的基本信息。
参数:
- name: 待查的表名
- detail:是否打印详细信息
示例:127.0.0.1:34601/meta/app?name=stat&detail
返回:
{
"general": {
"app_id": "1",
"app_name": "stat",
"max_replica_count": "3",
"partition_count": "4"
},
"healthy": {
"fully_healthy_partition_count": "0",
"read_unhealthy_partition_count": "0",
"unhealthy_partition_count": "4",
"write_unhealthy_partition_count": "0"
},
"nodes": {
"127.0.0.1:34801": {
"node": "127.0.0.1:34801",
"primary": "2",
"secondary": "2",
"total": "4"
},
"127.0.0.1:34802": {
"node": "127.0.0.1:34802",
"primary": "2",
"secondary": "2",
"total": "4"
},
"total": {
"node": "total",
"primary": "4",
"secondary": "4",
"total": "8"
}
},
"replicas": {
"0": {
"ballot": "2",
"pidx": "0",
"primary": "127.0.0.1:34801",
"replica_count": "2/3",
"secondaries": "[127.0.0.1:34802]"
},
"1": {
"ballot": "2",
"pidx": "1",
"primary": "127.0.0.1:34802",
"replica_count": "2/3",
"secondaries": "[127.0.0.1:34801]"
},
"2": {
"ballot": "2",
"pidx": "2",
"primary": "127.0.0.1:34801",
"replica_count": "2/3",
"secondaries": "[127.0.0.1:34802]"
},
"3": {
"ballot": "2",
"pidx": "3",
"primary": "127.0.0.1:34802",
"replica_count": "2/3",
"secondaries": "[127.0.0.1:34801]"
}
}
}
/meta/apps
功能: 获取所有表的列表。
参数:
- detail:是否打印详细信息
示例:127.0.0.1:34601/meta/apps?detail
返回:
{
"general_info": {
"1": {
"app_id": "1",
"app_name": "stat",
"app_type": "pegasus",
"create_time": "2019-08-15 12:34:15.000",
"drop_expire": "-",
"drop_time": "-",
"envs_count": "0",
"is_stateful": "true",
"partition_count": "4",
"replica_count": "3",
"status": "AVAILABLE"
},
"2": {
"app_id": "2",
"app_name": "temp",
"app_type": "pegasus",
"create_time": "2019-08-15 12:34:15.000",
"drop_expire": "-",
"drop_time": "-",
"envs_count": "0",
"is_stateful": "true",
"partition_count": "8",
"replica_count": "3",
"status": "AVAILABLE"
}
},
"healthy_info": {
"1": {
"app_id": "1",
"app_name": "stat",
"fully_healthy": "0",
"partition_count": "4",
"read_unhealthy": "0",
"unhealthy": "4",
"write_unhealthy": "4"
},
"2": {
"app_id": "2",
"app_name": "temp",
"fully_healthy": "0",
"partition_count": "8",
"read_unhealthy": "0",
"unhealthy": "8",
"write_unhealthy": "8"
}
},
"summary": {
"fully_healthy_app_count": "0",
"read_unhealthy_app_count": "0",
"total_app_count": "2",
"unhealthy_app_count": "2",
"write_unhealthy_app_count": "2"
}
}
/meta/cluster
功能: 获取集群基本信息。
示例:127.0.0.1:34601/meta/cluster
返回:
{
"balance_operation_count": "move_pri=0,copy_pri=0,copy_sec=0,total=0",
"meta_function_level": "steady",
"meta_servers": "127.0.0.1:34601,127.0.0.1:34602,127.0.0.1:34603",
"primary_meta_server": "127.0.0.1:34601",
"primary_replica_count_stddev": "0.00",
"total_replica_count_stddev": "0.00",
"zookeeper_hosts": "127.0.0.1:22181",
"zookeeper_root": "/pegasus/onebox/127.0.0.1"
}
/meta/nodes
功能: 获取replica节点列表,以IP地址表示各个节点,并输出基本信息。
参数:
- detail:是否打印详细信息
示例:127.0.0.1:34601/meta/nodes?detail
返回:
{
"details": {
"127.0.0.1:34801": {
"address": "127.0.0.1:34801",
"primary_count": "6",
"replica_count": "12",
"secondary_count": "6",
"status": "ALIVE"
},
"127.0.0.1:34802": {
"address": "127.0.0.1:34802",
"primary_count": "6",
"replica_count": "12",
"secondary_count": "6",
"status": "ALIVE"
}
},
"summary": {
"alive_node_count": "2",
"total_node_count": "2",
"unalive_node_count": "0"
}
}
/meta/app_envs?name=<app_name>
功能: 获取某个表的所有环境变量。
参数:
- name: 待查的表名
示例:127.0.0.1:34601/meta/app_envs?name=temp
返回:
{
"replica.enable_slow_query_log": "true",
"replica.slow_query_threshold": "20"
}
/meta/app/duplication?name=<app_name>
功能: 查询某个表的热备份情况
添加自:版本 2.0.0
参数:
- name: 待查的表名
示例:http://0.0.0.0:34602/meta/app/duplication?name=temp
返回:
create_ts
:热备份的创建时间dupid
:热备份的IDnot_confirmed_mutations_num
:各个分片当前有多少数据写尚未复制到目的集群,并且进度被同步至MetaServerremote
:热备份远端集群的名字status
:当前热备份的状态
{
"1": {
"create_ts": "2020-03-09 18:13:50",
"dupid": 1583748830,
"not_confirmed_mutations_num": {
"0": 4964,
"1": 5144,
"2": 5123,
"3": 5148,
"4": 5208,
"5": 5289,
"6": 5253,
"7": 5148
},
"remote": "onebox2",
"status": "DS_PAUSE"
},
"appid": 2
}
/perfCounter?name=<perf_counter_name>
功能: 获取某个perf counter的详细信息。如果perf counter名字中含有特殊字符时,需要先对其进行uri编码。
参数:
- name: 待查的perf counter名字
示例:127.0.0.1:34101/perfCounter?name=collector*app.pegasus*app.stat.read_qps%23_all_
返回:
{
"name": "collector*app.pegasus*app.stat.read_qps#_all_",
"value": "0.00",
"type": "NUMBER",
"description": "statistic the read_qps of app _all_"
}
NOTE: http中的字符#
代表锚,是一种特殊字符,所以对于perf counter名字中包含’#’字符的需要转换成%23
/replica/duplication?appid=<appid>
功能: 查询ReplicaServer上某个表各个分片的热备份情况。
添加自:版本 2.0.0
参数:
- appid: 待查的表的ID
示例:http://127.0.0.1:34801/replica/duplication?appid=2
返回:
duplicating
:表示该分片是否正在运行热备份not_confirmed_mutations_num
:当前有多少数据写尚未复制到目的集群,并且进度被同步至MetaServernot_duplicated_mutations_num
:当前有多少数据写尚未复制到目的集群
NOTE:not_duplicated_mutations_num <= not_confirmed_mutations_num
{
"1583820008": {
"2.1": {
"duplicating": true,
"not_confirmed_mutations_num": 3,
"not_duplicated_mutations_num": 3
},
"2.3": {
"duplicating": true,
"not_confirmed_mutations_num": 2,
"not_duplicated_mutations_num": 1
},
"2.4": {
"duplicating": true,
"not_confirmed_mutations_num": 2,
"not_duplicated_mutations_num": 2
},
"2.7": {
"duplicating": true,
"not_confirmed_mutations_num": 3,
"not_duplicated_mutations_num": 2
}
}
}