/v2/api/app/slow-sql-rca | POST | 获取慢SQL的根因分析结果 | - param query:必选,SQL查询语句,字符串长度需小于10240。
- param db_name:必选,数据库名称。
- param schema_name:可选,schema名称,默认为public。
- param start_time:可选,13位时间戳,建议传递,开始时间。
- param finish_time:可选,13位时间戳,建议传递,结束时间。
- param template_id:可选,建议传递,归一化SQL ID。
- param debug_query_id:可选,建议传递,唯一SQL ID。
- param n_soft_parse:可选,软解析次数,默认为0。
- param n_hard_parse:可选,硬解析次数,默认为0。
- param query_plan:可选,执行计划。
- param n_returned_rows:可选,结果中元组个数,默认为0。
- param n_tuples_fetched:可选,随机扫描行数,默认为0。
- param n_tuples_returned:可选,顺序扫描行数,默认为0。
- param n_tuples_inserted:可选,插入行数,默认为0。
- param n_tuples_updated:可选,更新行数,默认为0。
- param n_tuples_deleted:可选,删除行数,默认为0。
- param n_blocks_fetched:可选,buffer的块访问次数,默认为0。
- param n_blocks_hit:可选,buffer的块命中次数,默认为0。
- param db_time:可选,有效的DB时间花费,单位:微秒,默认为0。
- param cpu_time:可选,CPU时间,单位:微秒,默认为0。
- param parse_time:可选,解析时间,单位:微秒,默认为0。
- param plan_time:可选,执行时间,单位:微秒,默认为0。
- param data_io_time:可选,IO时间,单位:微秒,默认为0。
- param hash_spill_count:可选,hash过程中,若发生落盘,写文件的次数,默认为0。
- param sort_spill_count:可选,sort过程中,若发生落盘,写文件的次数,默认为0。
- param n_calls:必选,调用次数,默认为1。
- param lock_wait_time:可选,加锁等待耗时,默认为0。
- param lwlock_wait_time:可选,轻量级加锁时间,默认为0。
- param tz: 可选,若存在时区差异则建议传递,慢SQL时区信息,只支持UTC标准。
- 需要传入json结构体,用于连接数据库:
{ 'host': 必选,需要执行慢SQL诊断任务的数据库IP, 'port': 必选,需要执行慢SQL诊断任务的数据库端口, 'user': 必选,需要执行慢SQL诊断任务的数据库用户名, 'pwd': 必选,需要执行慢SQL诊断任务的数据库用户密码 } | 返回慢SQL的根因分析结果。 | {"data":["Seq Scan on t1 (cost=0.00..1868.00 rows=100 width=70)\n",[[["1. HEAVY_SCAN_OPERATOR: (1.00) Existing expensive seq scans. Detail:..."]]...]],"success":true} |
/v2/api/app/correlation | POST | 获取性能指标相关性分析结果 | - param metric_name:必选,metric名称。
- param instance:必选,实例地址。
- param start_time:必选,开始时间的时间戳,选取指标该时间戳后的值。
- param end_time:必选,结束时间的时间戳,选取指标该时间戳前的值。start_time和end_time是两个独立参数,并非为选取时间窗口,所以不强制要求start_time早于end_time。
- param metric_filter: 可选,metric的标签。 支持如下两种格式:
- “k1=v1,k2=v2”的kv pairs格式。
- “{'k1':'v1','k2':'v2'}”的json字符串格式。
| 返回异常关联指标及其时序数据。 | {"data":{"os_mem_usage from ip":[["gs_total_memory_detail_mbytes{\"nodename\": \"dn_6001_6002\", \"type\": \"dynamic_used_memory\"} from ip",1.0,0,[0.32950820234487...]]...]},"success":true} |
/v2/api/app/risk-analysis/{metric} | POST | 获取风险分析结果 | - param metric:必选,metric名称。
- param instance:必选,实例地址。
- param warning_hours:可选,风险分析时长,默认为1。
- param upper:可选,metric的上限。
- param lower:可选,metric的下限。
- param labels:可选,metric的标签。支持如下两种格式:
- “k1=v1,k2=v2”的kv pairs格式。
- “{'k1':'v1','k2':'v2'}”的json字符串格式。
- param tz:可选,时区参数,只支持UTC标准。
| 返回当前指标未来风险分析结果。 | {"data": {"os_disk_usage": [{"abnormal_detail": "No risk identified.","forecast_timestamps": null,"forecast_values": null,"labels": {"device": "/dev/sdd1","from_instance": "ip","from_job": "node_exporter","fstype": "xfs","instance": "ip","job": "reprocessing_exporter","mountpoint": "/data3"},"timestamps": [1733382426553553...],"values": [0.6772665517200114...]}]},"success": true} |
/v2/api/app/workload-collection | POST | 获取数据库工作负载数据 | - param data_source:必选,数据源,取值范围:('asp', 'dbe_perf.statement_history', 'pg_stat_activity')。
- param databases:可选,数据库列表。
- param schemas:可选,schema列表。
- param start_time:可选,开始时间。
- param end_time:可选,结束时间,仅适用于asp和dbe_perf.statement_history。
- param db_users:可选,数据库用户列表。
- param sql_types:可选,SQL语句类型,取值范围:('SELECT', 'UPDATE', 'DELETE', 'INSERT')。
- param template_id:可选,SQL模板id。
- param duration:可选,SQL语句的执行时间,单位ms,仅适用于dbe_perf.statement_history和pg_stat_activity,默认为60。
{ 'host': 必选,需要执行工作负载采集的数据库IP, 'port': 必选,需要执行工作负载采集的数据库端口, 'user': 必选,需要执行工作负载采集的数据库用户名, 'pwd': 必选,需要执行工作负载采集的数据库用户密码 } | 返回工作负载信息。 | {"data":{"header":["user_name","db_name","schema_name","application_name","unique_query_id","start_time","finish_time","duration","n_returned_rows","n_tuples_fetched","n_tuples_returned","n_tuples_inserted","n_tuples_updated","n_tuples_deleted","n_blocks_fetched","n_blocks_hit","n_soft_parse","n_hard_parse","db_time","cpu_time","parse_time","plan_time","data_io_time","lock_wait_time","lwlock_wait_time","query"],"rows":[["user1","db1","public"...]...]},"success":true} 说明:- data_source参数数据源解释:asp为采样数据,dbe_perf.statement_history为历史慢SQL数据,慢SQL阈值由用户指定,pg_stat_activity为实时SQL数据。
- 为避免接口超时,返回数据量上限1000条。
|
/v2/api/summary/alarms | GET | 获取历史告警列表 | - param pagesize:可选,每页展示个数,建议传递,默认为20。
- param current:可选,当前页,建议传递,默认为0。
- param instance:必选,告警所属实例,如果不传递则返回当前集群内的告警。
- param alarm_type:可选,告警类型,参数可选范围为['SYSTEM', 'SLOW_QUERY', 'ALARM_LOG', 'ALARM', 'SECURITY', 'PERFORMANCE']。
- param alarm_level:可选,告警级别,参数可选范围为['CRITICAL', 'FATAL', 'ERROR', 'WARNING', 'WARN', 'INFO', 'NOTICE', 'DEBUG', 'NOTSET']。
- param metric_name:可选,指标名称。
- param start_at:可选,查询开始时间戳,建议传递。
- param end_at:可选,查询结束时间戳,建议传递。
- param anomaly_type:可选,异常类型。
- param group:可选,是否根据告警类型和内容划分告警,默认为False。
| 返回历史告警列表。 | {"data":{"header":["history_alarm_id","instance","metric_name","metric_filter","alarm_type","alarm_level","start_at","end_at","alarm_content","extra_info","anomaly_type","alarm_cause"],"rows":[[65,"ip","os_mem_usage",null,"SYSTEM",30,1684762097001,1684762547001,"mem_usage_spike_detector:Find obvious spikes in memory usage.",null,"Spike"]]},"success":true} |
/v2/api/summary/alarms/count | GET | 获取历史告警数量 | - param instance:必选,告警所属实例,如果不传递则返回当前集群内的告警。
- param alarm_type:可选,告警类型,参数可选范围为['SYSTEM', 'SLOW_QUERY', 'ALARM_LOG', 'ALARM', 'SECURITY', 'PERFORMANCE']。
- param alarm_level:可选,告警级别,参数可选范围为['CRITICAL', 'FATAL', 'ERROR', 'WARNING', 'WARN', 'INFO', 'NOTICE', 'DEBUG', 'NOTSET']。
- param metric_name:可选,指标名称。
- param start_at:可选,查询开始时间戳,不得晚于end_at,建议传递。
- param end_at:可选,查询结束时间戳,不得早于start_at,建议传递。
- param anomaly_type:可选,异常类型。
- param group:可选,是否根据告警类型和内容划分告警。
| 返回历史告警数量。 | {"data":30,"success":true} |
/v2/api/summary/cluster-diagnosis | GET | 获取历史集群诊断列表 | - param pagesize:可选,每页展示个数,建议传递,默认为20。
- param current:可选,当前页,建议传递,默认为0。
- param instance:必选,实例IP,如果不传递则返回当前集群内的诊断结果。
- param start_at:可选,查询开始时间戳,仅返回timestamp大于等于该时间戳的结果,建议传递。
- param end_at:可选,查询结束时间戳,仅返回timestamp小于等于该时间戳的结果,建议传递。若start_at和end_at都不传递,则不对timestamp列进行任何值的筛选,返回全量时间戳的结果。
- param cluster_role:可选,节点类型,参数可选范围为['cn', 'dn']。
- param diagnosis_method:可选,诊断算法,参数可选范围为['tree', 'logical']。
- param alarm_type:可选,告警类型,参数可选范围为['SYSTEM', 'SLOW_QUERY', 'ALARM_LOG', 'ALARM', 'SECURITY', 'PERFORMANCE']。
- param alarm_level:可选,告警级别,参数可选范围为['CRITICAL', 'FATAL', 'ERROR', 'WARNING', 'WARN', 'INFO', 'NOTICE', 'DEBUG', 'NOTSET']。
- param is_normal:可选,是否包含诊断结果为Normal的数据,默认为True。
| 返回历史集群诊断列表。 | {"data":{"header":["diagnosis_id","instance","timestamp","cluster_role","diagnosis_method","cluster_feature","diagnosis_result","status_code","alarm_type","alarm_level"],"rows":[[1,ip,1695110107087,"cn","logical","{\"ping\": 0, \"cn_status\": 0, \"bind_ip_failed\": 0, \"panic\": 0, \"ffic_updated\": 0, \"cms_heartbeat_restart\": 0, \"cms_phonydead_restart\": 0, \"cn_dn_disconnected\": 0, \"cn_down_to_delete\": 0, \"cn_restart_time_exceed\": 0, \"cn_read_only\": 0, \"cn_restart\": 0, \"cn_start\": 0, \"cn_manual_stop\": 0, \"cn_disk_damage\": 0, \"cn_nic_down\": 0, \"cn_port_conflict\": 0}","Normal",-1,"ALARM",0]]},"success":true} 说明:- 返回结果中timestamp列所记录的时间戳以DBMind部署的服务器时间为准,如果元数据库所在服务器时间与DBMind部署服务器时间不一致,会导致元数据库中显示的时间戳结果与元数据库服务器实际时间不一致。
- 返回结果按照以下两个规则排序:
- 按照timestamp从小到大排列;
- 当timestamp一致时按照diagnosis_id从小到大排列。
|
/v2/api/summary/cluster-diagnosis/count | GET | 获取历史集群诊断数量 | - param instance:可选,实例IP,如果不传递则返回当前集群内的诊断结果。
- param start_at:可选,建议传递,查询开始时间戳,仅返回timestamp大于等于该时间戳的结果,建议传递。
- param end_at:可选,建议传递,查询结束时间戳,仅返回timestamp小于等于该时间戳的结果,建议传递。若start_at和end_at都不传递,则不对timestamp列进行任何值的筛选,返回全量时间戳的结果。
- param cluster_role:可选,节点类型,参数可选范围为['cn', 'dn']。
- param diagnosis_method:可选,诊断算法,参数可选范围为['tree', 'logical']。
- param alarm_type:可选,告警类型,参数可选范围为['SYSTEM', 'SLOW_QUERY', 'ALARM_LOG', 'ALARM', 'SECURITY', 'PERFORMANCE']。
- param alarm_level:可选,告警级别,参数可选范围为['CRITICAL', 'FATAL', 'ERROR', 'WARNING', 'WARN', 'INFO', 'NOTICE', 'DEBUG', 'NOTSET']。
- param is_normal:可选,是否包含诊断结果为Normal的数据,默认为True。
| 返回历史集群诊断数量。 | {"data":30,"success":true} |
/v2/api/app/index-recommendation | POST | 获取建议的索引列表 | - param database:必选,数据库名称。
- param max_index_num:可选,推荐索引个数的最大值。
- param max_index_storage:可选,推荐索引的内存使用的最大值。
- 需要传入json结构体,用于连接数据库与传入需要推荐索引的工作负载:
{ 'host': 必选,需要执行索引推荐的数据库IP, 'port': 必选,需要执行索引推荐的数据库端口, 'user': 必选,需要执行索引推荐的数据库用户名, 'pwd': 必选,需要执行索引推荐的数据库用户密码, 'sqls':必选,需要执行索引推荐的工作负载列表 } | 返回建议的索引列表。 | {"data":[{"advise_indexes":[],"redundant_indexes":[],"total":0,"useless_indexes":[{"columns":"c1","schemaName":"public","statement":"DROP INDEX t1_c1_idx;","tbName":"t1","type":3},{"columns":"c2","schemaName":"public","statement":"DROP INDEX t2_c2_idx;","tbName":"t2","type":3}]},{}],"success":true} |
/v2/api/summary/database-list | GET | 获取数据库列表 | - param instance:必选,需要获取数据库列表的实例。
| 返回数据库列表。 | {"data":["db1","db2","db3","db4","db5"...],"success":true} |
/v2/api/app/metric-diagnosis | POST | 执行指标异常诊断 | - param metric_name:必选,指标名称。取值范围:os_cpu_user_usage, pg_thread_pool_rate,os_mem_usage,os_disk_usage,mount_usage,os_disk_await,xlog_margin,pg_long_transaction_count。
- param metric_filter:必选,筛选指标。支持如下两种格式:
- “k1=v1,k2=v2”的kv pairs格式;
- “{'k1':'v1','k2':'v2'}”的json字符串格式。
- param alarm_cause:必选,选择分析方法。取值范围:high_cpu_usage, high_thread_pool_rate, high_dynamic_mem_usage, high_shared_mem_usage, high_disk_usage, high_io_delay,mem_leak,high_xlog_count,long_transaction。
- param start:必选,分析指标开始时间戳,单位毫秒。
- param end:必选,分析指标结束时间戳,单位毫秒。
| 返回指标异常根因。 | {"data":{[{'reason1': 0.0, 'reason2': 1.0}, 'conclusion', 'advice']},"success":true} |
/v2/api/summary/sql-trace | GET | SQL全链路查询 | - param instance_id:必选,实例id。
- param labels:必选,过滤使用的指标标签。
- param is_online:必选,数据来源是否是在线的。
- param from_timestamp:可选,查询开始时间。
- param to_timestamp:可选,查询结束时间。
- param tz:可选,时区参数,仅支持UTC标准。
| 返回SQL全链路信息。 | { "data": [ { "all_time": 3477357, "application_name": "xxx", "client_addr": "", "client_port": 0, "component_id": "xxx", "db_name": "xxx", "execution_time_details": { "kernel_time": { "all_time": 3477357, "kernel_time_details": { "execution_time": 3466386, "other_time": 4958, "parse_time": 453, "plan_time": 5244, "rewrite_time": 316 } }, "resource_time": { "all_time": 3477357, "resource_time_details": { "cpu_time": 98756, "data_io_time": 0, "other_time": 3378601 } }, "wait_event_time": { "code_wait_event_time": { "all_time": 3477357, "code_wait_event_time_details": { "events": [ { "event_name": "xxx", "event_time": 16810 }, { "event_name": "xxx", "event_time": 5330 }, { "event_name": "xxx", "event_time": 5195 }, { "event_name": "xxx", "event_time": 197 } ], "left_time": 0, "other_time": 3449825 } }, "resource_wait_event_time": { "all_time": 3477357, "other_time": 3477357, "resource_wait_event_time_details": { "data_io_time": { "all_time": 0, "data_io_time_details": { "events": [ { "event_name": "xxx", "event_time": 742 } ], "left_time": 0, "other_time": -27532 } }, "lock_time": { "all_time": 0, "lock_time_details": { "events": [], "left_time": 0, "other_time": 0 } }, "lwlock_time": { "all_time": 0, "lwlock_time_details": { "events": [], "left_time": 0, "other_time": 0 } } } } } }, "finish_time": "2023-08-01 17:50:04.923701+08", "node_id": "0", "schema_name": "user,public", "session_id": 1658590, "sql_exec_id": 72339069024193250, "sql_id": 1951225884, "start_time": "2023-08-01 17:50:01.446446+08", "trace_id": "0", "transaction_id": "0", "user_name": "user" } ], "success": true } |
/v2/api/summary/metric-unit/{metric} | GET | 指标单位单位查询 | param metric:必选,指标名。 | 返回指标单位。 | {"data":"{'en': 'rate', 'cn': '比率'}","success":true} |
/v2/api/app/metric-diagnosis-insight | POST | 获取指标异常诊断的额外信息 | - param metric_name:必选,指标名称。取值范围:os_cpu_user_usage, pg_thread_pool_rate,os_mem_usage,os_disk_usage,mount_usage,os_disk_await,xlog_margin,pg_long_transaction_count。
- param metric_filter:必选,筛选指标。支持如下两种格式:
- “k1=v1,k2=v2”的kv pairs格式;
- “{'k1':'v1','k2':'v2'}”的json字符串格式。
- param alarm_cause:必选,选择分析方法。取值范围:high_cpu_usage, high_thread_pool_rate, high_dynamic_mem_usage, high_shared_mem_usage, high_disk_usage, high_io_delay,mem_leak,high_xlog_count,long_transaction。
- param start:必选,分析指标开始时间戳,单位毫秒。
- param end:必选,分析指标结束时间戳,单位毫秒。
{ 'host': 必选,需要执行指标异常诊断的数据库IP, 'port': 必选,需要执行指标异常诊断的数据库端口, 'user': 必选,需要执行指标异常诊断的数据库用户名, 'pwd': 必选,需要执行指标异常诊断的数据库用户密码 } | 返回指标异常根因的额外信息。 | {"data":{"insight_1":[{"k1":v1,"k2":v2,...},{"k1":v1,"k2":v2,...},...],"insight_2":[{"k1":v1,"k2":v2,...},{"k1":v1,"k2":v2,...},...]},..."success":true} |
/v2/api/app/timed-tasks | POST | 触发一次指定的定时任务 | - param task_name:必选,需要触发的定时任务名,参数可选范围为['discard_expired_results','anomaly_detection','cluster_diagnose','update_statistics']。
- 需要传入json结构体,用于设定定时任务的执行参数:
{ 'cn': 定时任务为cluster_diagnose时,与'dn'字段至少其中一个必选,需要执行集群诊断任务的cn ip列表,默认为空, 'dn': 定时任务为cluster_diagnose时,与'cn'字段至少其中一个必选,需要执行集群诊断任务的dn ip列表,默认为空, "detector_name": 定时任务为anomaly_detection时必选,异常检测器的名字,默认为空, "duration": 定时任务为anomaly_detection时必选,异常检测截取指标的时间窗口,单位为秒,默认为600, "alarm_info": 定时任务为anomaly_detection时必选,告警详细信息,共有四个字段 { "alarm_content":告警内容, "alarm_type": 告警类型,参数可选范围为['SYSTEM', 'SLOW_QUERY', 'ALARM_LOG', 'ALARM', 'SECURITY', 'PERFORMANCE'] "alarm_level": 告警级别,参数可选范围为['CRITICAL', 'FATAL', 'ERROR', 'WARNING', 'WARN', 'INFO', 'NOTICE', 'DEBUG', 'NOTSET'] "alarm_cause": 告警原因, }, "detector_info": 定时任务为anomaly_detection时必选,检测逻辑信息,一个检测器可以叠加多个检测逻辑,为一个列表值,其中每一项代表一个检测逻辑,每一项共有四个字段 [{"metric_name": 检测的指标名, "detector_name": 检测算法,参数可选范围为['GradientDetector', 'IncreaseDetector', 'InterQuartileRangeDetector', 'LevelShiftDetector', 'SeasonalDetector', 'SpikeDetector', 'ThresholdDetector', 'VolatilityShiftDetector', 'QuantileDetector', 'EsdTestDetector', 'ForecastingAnomalyDetector'] "metric_filter": 指标标签筛选条件, "detector_kwargs": 检测算法超参数 }], } | 返回定时任务执行情况。 | {"data":{"msg": "The task {task_name} has been successfully executed."}, 'success':true} |