forked from didi/KnowStreaming
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
executable file
·291 lines (261 loc) · 18.5 KB
/
index.ts
File metadata and controls
executable file
·291 lines (261 loc) · 18.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
const ksPrefix = '/ks-km/api/v3';
const securityPrefix = '/logi-security/api/v1';
function getApi(path: string) {
return `${ksPrefix}${path}`;
}
// 指标类型对应的 type 值
export enum MetricType {
Topic = 100,
Cluster = 101,
Group = 102,
Broker = 103,
Partition = 104,
Replication = 105,
Zookeeper = 110,
Connect = 120,
Connectors = 121,
Controls = 901,
MM2 = 122,
}
const api = {
// 登录 & 登出
login: `${securityPrefix}/account/login`,
logout: `${securityPrefix}/account/logout`,
// 全局信息
getVersionInfo: () => getApi('/self/version'),
getUserInfo: (userId: number) => `${securityPrefix}/user/${userId}`,
getPermissionTree: `${securityPrefix}/permission/tree`,
getKafkaVersionItems: () => getApi('/kafka-versions-items'),
getSupportKafkaVersions: (clusterPhyId: string, type: MetricType) =>
getApi(`/clusters/${clusterPhyId}/types/${type}/support-kafka-versions`),
// 生产、消费客户端测试
postClientConsumer: getApi(`/clients/consumer`),
postClientProducer: getApi(`/clients/producer`),
// 集群均衡
getBalanceList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-overview`),
getBrokersMetaList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/brokers-metadata`),
getTopicMetaList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics-metadata`),
balanceStrategy: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-strategy`),
balancePreview: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-preview`),
getBalanceHistory: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-history`),
getBalanceForm: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-config`),
getBalancePlan: (clusterPhyId: number, jobId: number) => getApi(`/clusters/${clusterPhyId}/balance-plan/${jobId}`),
getPlatformConfig: (clusterPhyId: number, groupName: string) =>
getApi(`/platform-configs/clusters/${clusterPhyId}/groups/${groupName}/configs`),
putPlatformConfig: () => getApi(`/platform-configs`),
getCartInfo: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/balance-state`),
// 获取topic元信息
getTopicsMetaData: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/metadata`),
getTopicsMetrics: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topic-metrics`),
getConsumerGroup: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/groups-basic`),
getTopicMetaData: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics-metadata`),
getTopicBrokersList: (clusterPhyId: string, topicName: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/brokers`), // 获取 topic brokers 信息
getPartitionMetricInfo: (clusterPhyId: string, topicName: string, brokerId: number, partitionId: number) =>
getApi(`/clusters/${clusterPhyId}/brokers/${brokerId}/topics/${topicName}/partitions/${partitionId}/latest-metrics`), // 获取分区详情数据
// dashbord 接口
phyClustersDashbord: getApi(`/physical-clusters/dashboard`),
supportKafkaVersion: getApi(`/support-kafka-versions`),
phyClusterState: getApi(`/physical-clusters/state`),
phyClusterHealthState: getApi(`/physical-clusters/health-state`),
getOperatingStateList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/groups-overview`),
getGroupTopicList: (clusterPhyId: number, groupName: string) => getApi(`/clusters/${clusterPhyId}/groups/${groupName}/topics-overview`),
// 物理集群接口
phyCluster: getApi(`/physical-clusters`),
getPhyClusterBasic: (clusterPhyId: number) => getApi(`/physical-clusters/${clusterPhyId}/basic`),
getPhyClusterMetrics: (clusterPhyId: number) => getApi(`/physical-clusters/${clusterPhyId}/latest-metrics`),
getClusterBasicExit: (clusterPhyName: string) => getApi(`/physical-clusters/${clusterPhyName}/basic-combine-exist`),
getClustersVersion: getApi('/physical-clusters/exist-version'),
kafkaValidator: getApi(`/utils/kafka-validator`),
// @see https://api-kylin-xg02.intra.xiaojukeji.com/ks-km/swagger-ui.html#/KS-KafkaHealth-%E7%9B%B8%E5%85%B3%E6%8E%A5%E5%8F%A3(REST)/getHealthCheckConfigUsingGET
getClusterHealthyConfigs: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/health-configs`),
putPlatformConfigs: getApi(`/platform-configs`),
getClusterChangeLog: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/change-records`),
// group详情实时信息
getTopicGroupMetric: (params: { clusterId: number; topicName: string; groupName: string }) =>
getApi(`/clusters/${params.clusterId}/topics/${params.topicName}/groups/${params.groupName}/metric`),
// group详情历史信息
getConsumersMetadata: (clusterPhyId: number, groupName: string, topicName: string) =>
getApi(`/clusters/${clusterPhyId}/groups/${groupName}/topics/${topicName}/metadata-combine-exist`),
getTopicGroupMetricHistory: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/group-metrics`),
getTopicGroupPartitionsHistory: (clusterPhyId: number, groupName: string) =>
getApi(`/clusters/${clusterPhyId}/groups/${groupName}/partitions`),
resetGroupOffset: () => getApi('/group-offsets'),
getGroupOverview: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/groups-overview`),
// topics列表
getTopicsList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics-overview`),
getReassignmentList: () => getApi(`/reassignment/topics-overview`),
getTaskPlanData: () => getApi(`/reassignment/replicas-change-plan`),
// 创建topic
addTopic: () => getApi(`/topics`),
deleteTopic: () => getApi(`/topics`),
expandPartitions: () => getApi(`/topics/expand-partitions`),
getDefaultTopicConfig: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/config-topics/default`),
getTopicState: (clusterPhyId: number, topicName: string) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/state`),
getTopicMetadata: (clusterPhyId: number, topicName: string) =>
getApi(`/clusters/${clusterPhyId}/topics/${topicName}/metadata-combine-exist`),
// 最新的指标值
getMetricPointsLatest: (clusterPhyId: number) => getApi(`/physical-clusters/${clusterPhyId}/latest-metrics`),
getTopicMetricPointsLatest: (clusterPhyId: number, topicName: string) =>
getApi(`/clusters/${clusterPhyId}/topics/${topicName}/latest-metrics`),
// 健康检查指标
getMetricPoints: (clusterPhyId: number) => getApi(`/physical-clusters/${clusterPhyId}/metric-points`),
// 单个Topic的健康检查指标
getTopicMetricPoints: (clusterPhyId: number, topicName: string) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/metric-points`),
// Broker列表接口
getBrokersList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/brokers-overview`),
// Broker列表页健康检查指标
getBrokerMetricPoints: (clusterPhyId: number) => getApi(`/physical-clusters/${clusterPhyId}/latest-metrics`),
// Controller列表接口 /api/v3/clusters/{clusterPhyId}/controller-history「controller-change-log」
getChangeLogList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/controller-history`),
getBrokersState: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/brokers-state`), // Broker 基础信息
// Controller列表接口
// getChangeLogList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/controller-change-log`),
// GroupList 列表接口
getGroupACLBindingList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/group-acl-bindings`),
/* Topic 详情 ↓↓↓↓↓↓↓↓↓↓*/
getTopicPartitionsSummary: (clusterPhyId: string, topicName: string) =>
getApi(`/clusters/${clusterPhyId}/topics/${topicName}/brokers-partitions-summary`),
getTopicPartitionsDetail: (clusterPhyId: string, topicName: string) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/partitions`),
getTopicMessagesList: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/records`), // Messages列表
getTopicGroupList: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/groups-overview`), // Consumers列表
getTopicMessagesMetadata: (topicName: string, clusterPhyId: number) => getApi(`/clusters//${clusterPhyId}/topics/${topicName}/metadata`), // Messages列表
getTopicACLsList: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/acl-Bindings`), // ACLs列表
getTopicConfigs: (topicName: string, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/config-topics/${topicName}/configs`), // Configuration列表
getTopicEditConfig: () => getApi('/config-topics'),
/* Topic 详情 ↑↑↑↑↑↑↑↑↑↑↑*/
/* Broker 详情 ↓↓↓↓↓↓↓↓↓↓*/
getBrokerConfigs: (brokerId: number, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/config-brokers/${brokerId}/configs`), // Configuration列表
getBrokerDataLogs: (brokerId: number, clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/brokers/${brokerId}/log-dirs`), // ACLs列表
getBrokerMetadata: (brokerId: number | string, clusterPhyId: number | string) =>
getApi(`/clusters/${clusterPhyId}/brokers/${brokerId}/metadata-combine-exist`), // Broker元数据
getBrokerDetailMetricPoints: (brokerId: number | string, clusterPhyId: number | string) =>
getApi(`/clusters/${clusterPhyId}/brokers/${brokerId}/latest-metrics`),
getBrokerEditConfig: () => getApi('/config-brokers'),
/* Broker 详情 ↑↑↑↑↑↑↑↑↑↑↑*/
// 具体资源健康检查详情
getResourceHealthDetail: (clusterPhyId: number, dimensionCode: number, resName: string) =>
getApi(`/clusters/${clusterPhyId}/dimensions/${dimensionCode}/resources/${resName}/health-detail`),
// 列表健康检查详情
getResourceListHealthDetail: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/health-detail`),
// Cluster 单集群详情页
getClusterDefaultMetricData: () => getApi('/physical-clusters/metrics-multi-value'),
getClusterMetricDataList: () => getApi('/physical-clusters/metrics'),
// BrokerDashboard & TopicDashboard 相关
getDashboardMetadata: (clusterPhyId: string, type: MetricType) =>
getApi(`/clusters/${clusterPhyId}/${MetricType[type].toLowerCase()}s-metadata`), // 集群节点信息
getDashboardMetricList: (clusterPhyId: string, type: MetricType) => getApi(`/clusters/${clusterPhyId}/types/${type}/user-metric-config`), // 默认选中的指标项
getDashboardMetricChartData: (clusterPhyId: string, type: MetricType) =>
getApi(`/clusters/${clusterPhyId}/${MetricType[type].toLowerCase()}-metrics`), // 图表数据
// ! Jobs 集群任务相关接口
getJobsList: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/jobs-overview`),
getJobsState: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/jobs-state`),
getJobDetail: (clusterPhyId: string, jobId: any) => getApi(`/clusters/${clusterPhyId}/jobs/${jobId}/detail`),
getJobsPlanRebalance: (clusterPhyId: string, jobId: any) => getApi(`/clusters/${clusterPhyId}/balance-plan/${jobId}`),
getJobsScheduleRebalance: (clusterPhyId: string, jobId: any) => getApi(`/clusters/${clusterPhyId}/balance-schedule/${jobId}`),
getJobsDelete: (clusterPhyId: string, jobId: any) => getApi(`/clusters/${clusterPhyId}/jobs/${jobId}`),
getJobTraffic: (clusterPhyId: string, jobId: any, flowLimit: any) => {
return getApi(`/clusters/${clusterPhyId}/jobs/${jobId}/traffic/${flowLimit}`);
},
getJobNodeTraffic: (clusterPhyId: string, jobId: any) => {
return getApi(`/clusters/${clusterPhyId}/jobs/${jobId}/node/traffic`);
},
getJobPartitionDetail: (clusterPhyId: string, jobId: any, topicName: any) => {
return getApi(`/clusters/${clusterPhyId}/jobs/${jobId}/${topicName}/partition-detail`);
},
// Security - ACLs
getACLs: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/acl-bindings`),
addACL: getApi('/kafka-acls/batch'),
delACLs: getApi('/kafka-acls'),
// Security - Users
getKafkaUsers: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/kafka-users`),
kafkaUser: getApi('/kafka-users'),
getKafkaUserToken: (clusterPhyId: string, kafkaUser: string) => getApi(`/clusters/${clusterPhyId}/kafka-users/${kafkaUser}/token`),
updateKafkaUserToken: getApi('/kafka-users/token'),
//迁移任务、扩缩副本任务
createTask: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/jobs`),
//获取topic原数据信息
getOneTopicMetaData: (clusterPhyId: string, topicName: string) => getApi(`/clusters/${clusterPhyId}/topics/${topicName}/metadata`),
//获取迁移任务预览
getMovePlanTaskData: () => getApi(`/reassignment/replicas-move-plan`),
//获取任务详情
getJobsTaskData: (clusterPhyId: string, jobId: string | number) => getApi(`/clusters/${clusterPhyId}/jobs/${jobId}/modify-detail`),
//编辑任务
putJobsTaskData: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/jobs`),
// Zookeeper 接口
getZookeeperState: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/zookeepers-state`),
getZookeeperList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/zookeepers-overview`),
getZookeeperNodeChildren: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/znode-children`),
getZookeeperNodeData: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/znode-data`),
getZookeeperMetricsInfo: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/zookeeper-latest-metrics`),
getZookeeperMetrics: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/zookeeper-metrics`),
// Connector 接口
getConnectState: (clusterPhyId: string) => getApi(`/kafka-clusters/${clusterPhyId}/connect-state`),
getConnectorsList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/connectors-overview`),
// Connector 详情
getConnectDetailMetricPoints: (connectorName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connectors/${connectorName}/latest-metrics`),
getConnectDetailTasks: (connectorName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connectors/${connectorName}/tasks`),
getConnectDetailState: (connectorName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connectors/${connectorName}/state`),
optionTasks: () => getApi(`/kafka-connect/tasks`),
// Workers 接口
getWorkersList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/workers-overview`),
// Connector
getConnectClusters: (clusterPhyId: string) => getApi(`/kafka-clusters/${clusterPhyId}/connect-clusters-basic`),
getConnectClusterMetrics: (clusterPhyId: string) => getApi(`/kafka-clusters/${clusterPhyId}/connect-cluster-metrics`),
getConnectors: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/connectors-basic`),
getConnectorMetrics: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/connectors-metrics`),
getConnectorPlugins: (connectClusterId: number) => getApi(`/kafka-connect/clusters/${connectClusterId}/connector-plugins`),
getConnectorPluginConfig: (connectClusterId: number | string, pluginName: string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connector-plugins/${pluginName}/config`),
getCurPluginConfig: (connectClusterId: number | string, connectorName: string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connectors/${connectorName}/config`),
isConnectorExist: (connectClusterId: number, connectorName: string) =>
getApi(`/kafka-connect/clusters/${connectClusterId}/connectors/${connectorName}/basic-combine-exist`),
validateConnectorConfig: getApi('/kafka-connect/connectors-config/validate'),
// Connector 操作接口 新增、暂停、重启、删除
connectorsOperates: getApi('/kafka-connect/connectors'),
// 修改 Connector 配置
updateConnectorConfig: getApi('/kafka-connect/connectors-config'),
// Cluster首页修改Connect集群
batchConnectClusters: getApi(`/kafka-connect/batch-connect-clusters`),
// Cluster首页删除Connect集群
deleteConnectClusters: getApi(`/kafka-connect/connect-clusters`),
getConnectClusterBasicExit: (clusterPhyId: string, clusterPhyName: string) =>
getApi(`/kafka-clusters/${clusterPhyId}/connect-clusters/${clusterPhyName}/basic-combine-exist`),
// MM2 列表
getMirrorMakerList: (clusterPhyId: number) => getApi(`/clusters/${clusterPhyId}/mirror-makers-overview`),
// MM2 状态卡片
getMirrorMakerState: (clusterPhyId: string) => getApi(`/kafka-clusters/${clusterPhyId}/mirror-makers-state`),
// MM2 指标卡片
getMirrorMakerMetrics: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/mirror-makers-metrics`),
// MM2 筛选
getMirrorMakerMetadata: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/mirror-makers-basic`),
// MM2 详情列表
getMM2DetailTasks: (connectorName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-mm2/clusters/${connectClusterId}/connectors/${connectorName}/tasks`),
// MM2 详情状态卡片
getMM2DetailState: (connectorName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-mm2/clusters/${connectClusterId}/connectors/${connectorName}/state`),
// MM2 操作接口 新增、暂停、重启、删除
mirrorMakerOperates: getApi('/kafka-mm2/mirror-makers'),
// MM2 操作接口 新增、编辑校验
validateMM2Config: getApi('/kafka-mm2/mirror-makers-config/validate'),
// 修改 Connector 配置
updateMM2Config: getApi('/kafka-mm2/mirror-makers-config'),
// MM2 详情
getMirrorMakerMetricPoints: (mirrorMakerName: number | string, connectClusterId: number | string) =>
getApi(`/kafka-mm2/clusters/${connectClusterId}/connectors/${mirrorMakerName}/latest-metrics`),
getSourceKafkaClusterBasic: getApi(`/physical-clusters/basic`),
getGroupBasic: (clusterPhyId: string) => getApi(`/clusters/${clusterPhyId}/groups-basic`),
// Topic复制
getMirrorClusterList: () => getApi(`/ha-mirror/physical-clusters/basic`),
handleTopicMirror: () => getApi(`/ha-mirror/topics`),
getTopicMirrorList: (clusterPhyId: number, topicName: string) =>
getApi(`/ha-mirror/clusters/${clusterPhyId}/topics/${topicName}/mirror-info`),
getMirrorMakerConfig: (connectClusterId: number | string, connectorName: string) =>
getApi(`/kafka-mm2/clusters/${connectClusterId}/connectors/${connectorName}/config`),
};
export default api;