@cloudcare/guance-front-tools 1.0.9 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -12
- package/guance-dashboard.json +1 -375
- package/lib/example/test2.json +14493 -0
- package/lib/scripts/grafana-covert-to-guance.js +15 -12
- package/lib/scripts/grafana-covert-to-guance.ts +15 -12
- package/package.json +2 -2
package/guance-dashboard.json
CHANGED
|
@@ -1,375 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Kafka Overview",
|
|
3
|
-
"dashboardExtend": {
|
|
4
|
-
"groupUnfoldStatus": {}
|
|
5
|
-
},
|
|
6
|
-
"main": {
|
|
7
|
-
"vars": [
|
|
8
|
-
{
|
|
9
|
-
"type": "PROMQL_QUERY",
|
|
10
|
-
"datasource": "dataflux",
|
|
11
|
-
"name": "Topic",
|
|
12
|
-
"seq": 0,
|
|
13
|
-
"hide": 1,
|
|
14
|
-
"multiple": false,
|
|
15
|
-
"includeStar": true,
|
|
16
|
-
"valueSort": "desc",
|
|
17
|
-
"code": "topic_name",
|
|
18
|
-
"definition": {
|
|
19
|
-
"value": "label_values(kafka_consumergroup_lag, topic)",
|
|
20
|
-
"defaultVal": {
|
|
21
|
-
"label": "all values",
|
|
22
|
-
"value": "__all__"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"type": "PROMQL_QUERY",
|
|
28
|
-
"datasource": "dataflux",
|
|
29
|
-
"name": "Consumer Group",
|
|
30
|
-
"seq": 1,
|
|
31
|
-
"hide": 1,
|
|
32
|
-
"multiple": false,
|
|
33
|
-
"includeStar": true,
|
|
34
|
-
"valueSort": "desc",
|
|
35
|
-
"code": "group_id",
|
|
36
|
-
"definition": {
|
|
37
|
-
"value": "label_values(kafka_consumergroup_lag{topic=\"#{topic_name}\"}, consumergroup)",
|
|
38
|
-
"defaultVal": {
|
|
39
|
-
"label": "*",
|
|
40
|
-
"value": "*"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"type": "PROMQL_QUERY",
|
|
46
|
-
"datasource": "dataflux",
|
|
47
|
-
"name": "namespace",
|
|
48
|
-
"seq": 2,
|
|
49
|
-
"hide": 0,
|
|
50
|
-
"multiple": false,
|
|
51
|
-
"includeStar": false,
|
|
52
|
-
"valueSort": "desc",
|
|
53
|
-
"code": "namespace",
|
|
54
|
-
"definition": {
|
|
55
|
-
"value": "label_values(kube_pod_info, namespace)",
|
|
56
|
-
"defaultVal": {
|
|
57
|
-
"label": "ekb-mics",
|
|
58
|
-
"value": "ekb-mics"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
],
|
|
63
|
-
"charts": [
|
|
64
|
-
{
|
|
65
|
-
"extend": {
|
|
66
|
-
"settings": {}
|
|
67
|
-
},
|
|
68
|
-
"group": {},
|
|
69
|
-
"pos": {
|
|
70
|
-
"x": 0,
|
|
71
|
-
"y": 2,
|
|
72
|
-
"h": 11.5,
|
|
73
|
-
"w": 13
|
|
74
|
-
},
|
|
75
|
-
"name": "Kafka log size by topic",
|
|
76
|
-
"queries": [
|
|
77
|
-
{
|
|
78
|
-
"datasource": "dataflux",
|
|
79
|
-
"qtype": "promql",
|
|
80
|
-
"type": "sequence",
|
|
81
|
-
"query": {
|
|
82
|
-
"q": "sum by(topic) (kafka_log_log_size{namespace=~\"#{namespace}\"})",
|
|
83
|
-
"type": "promql",
|
|
84
|
-
"code": "A",
|
|
85
|
-
"promqlCode": 1
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
],
|
|
89
|
-
"type": "sequence"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"extend": {
|
|
93
|
-
"settings": {}
|
|
94
|
-
},
|
|
95
|
-
"group": {},
|
|
96
|
-
"pos": {
|
|
97
|
-
"x": 13,
|
|
98
|
-
"y": 2,
|
|
99
|
-
"h": 11.5,
|
|
100
|
-
"w": 11
|
|
101
|
-
},
|
|
102
|
-
"name": "Kafka log size by broker (disk space utilization)",
|
|
103
|
-
"queries": [
|
|
104
|
-
{
|
|
105
|
-
"datasource": "dataflux",
|
|
106
|
-
"qtype": "promql",
|
|
107
|
-
"type": "sequence",
|
|
108
|
-
"query": {
|
|
109
|
-
"q": "sum by(pod) (kafka_log_log_size{namespace=~\"#{namespace}\"})",
|
|
110
|
-
"type": "promql",
|
|
111
|
-
"code": "A",
|
|
112
|
-
"promqlCode": 1
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
],
|
|
116
|
-
"type": "sequence"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"extend": {
|
|
120
|
-
"settings": {}
|
|
121
|
-
},
|
|
122
|
-
"group": {},
|
|
123
|
-
"pos": {
|
|
124
|
-
"x": 0,
|
|
125
|
-
"y": 13.4,
|
|
126
|
-
"h": 11.5,
|
|
127
|
-
"w": 8
|
|
128
|
-
},
|
|
129
|
-
"name": "CPU Usage",
|
|
130
|
-
"queries": [
|
|
131
|
-
{
|
|
132
|
-
"datasource": "dataflux",
|
|
133
|
-
"qtype": "promql",
|
|
134
|
-
"type": "sequence",
|
|
135
|
-
"query": {
|
|
136
|
-
"q": "rate(process_cpu_seconds_total{app=\"kafka\",namespace=~\"#{namespace}\"}[1m])",
|
|
137
|
-
"type": "promql",
|
|
138
|
-
"code": "A",
|
|
139
|
-
"promqlCode": 1
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
|
-
"type": "sequence"
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
"extend": {
|
|
147
|
-
"settings": {}
|
|
148
|
-
},
|
|
149
|
-
"group": {},
|
|
150
|
-
"pos": {
|
|
151
|
-
"x": 8,
|
|
152
|
-
"y": 13.4,
|
|
153
|
-
"h": 11.5,
|
|
154
|
-
"w": 8
|
|
155
|
-
},
|
|
156
|
-
"name": "JVM Memory Used",
|
|
157
|
-
"queries": [
|
|
158
|
-
{
|
|
159
|
-
"datasource": "dataflux",
|
|
160
|
-
"qtype": "promql",
|
|
161
|
-
"type": "sequence",
|
|
162
|
-
"query": {
|
|
163
|
-
"q": "sum without(area)(jvm_memory_bytes_used{app=\"kafka\",namespace=~\"#{namespace}\"})",
|
|
164
|
-
"type": "promql",
|
|
165
|
-
"code": "A",
|
|
166
|
-
"promqlCode": 1
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"datasource": "dataflux",
|
|
171
|
-
"qtype": "promql",
|
|
172
|
-
"type": "sequence",
|
|
173
|
-
"query": {
|
|
174
|
-
"q": "sum by (pod_name)(container_memory_usage_bytes{container_name=\"kafka\",namespace=~\"#{namespace}\"}) ",
|
|
175
|
-
"type": "promql",
|
|
176
|
-
"code": "B",
|
|
177
|
-
"promqlCode": 2
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
],
|
|
181
|
-
"type": "sequence"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
"extend": {
|
|
185
|
-
"settings": {}
|
|
186
|
-
},
|
|
187
|
-
"group": {},
|
|
188
|
-
"pos": {
|
|
189
|
-
"x": 16,
|
|
190
|
-
"y": 13.4,
|
|
191
|
-
"h": 11.5,
|
|
192
|
-
"w": 8
|
|
193
|
-
},
|
|
194
|
-
"name": "Time spent in GC",
|
|
195
|
-
"queries": [
|
|
196
|
-
{
|
|
197
|
-
"datasource": "dataflux",
|
|
198
|
-
"qtype": "promql",
|
|
199
|
-
"type": "sequence",
|
|
200
|
-
"query": {
|
|
201
|
-
"q": "sum without(gc)(rate(jvm_gc_collection_seconds_sum{app=\"kafka\",namespace=~\"#{namespace}\"}[5m]))",
|
|
202
|
-
"type": "promql",
|
|
203
|
-
"code": "A",
|
|
204
|
-
"promqlCode": 1
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
],
|
|
208
|
-
"type": "sequence"
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"extend": {
|
|
212
|
-
"settings": {}
|
|
213
|
-
},
|
|
214
|
-
"group": {},
|
|
215
|
-
"pos": {
|
|
216
|
-
"x": 0,
|
|
217
|
-
"y": 24.8,
|
|
218
|
-
"h": 11.5,
|
|
219
|
-
"w": 8
|
|
220
|
-
},
|
|
221
|
-
"name": "Messages In Per Topic",
|
|
222
|
-
"queries": [
|
|
223
|
-
{
|
|
224
|
-
"datasource": "dataflux",
|
|
225
|
-
"qtype": "promql",
|
|
226
|
-
"type": "sequence",
|
|
227
|
-
"query": {
|
|
228
|
-
"q": "sum without(instance, pod)(rate(kafka_server_brokertopicmetrics_messagesin_total{app=\"kafka\",topic!=\"\",namespace=~\"#{namespace}\"}[5m]))",
|
|
229
|
-
"type": "promql",
|
|
230
|
-
"code": "A",
|
|
231
|
-
"promqlCode": 1
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
],
|
|
235
|
-
"type": "sequence"
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
"extend": {
|
|
239
|
-
"settings": {}
|
|
240
|
-
},
|
|
241
|
-
"group": {},
|
|
242
|
-
"pos": {
|
|
243
|
-
"x": 8,
|
|
244
|
-
"y": 24.8,
|
|
245
|
-
"h": 11.5,
|
|
246
|
-
"w": 8
|
|
247
|
-
},
|
|
248
|
-
"name": "Bytes In Per Topic",
|
|
249
|
-
"queries": [
|
|
250
|
-
{
|
|
251
|
-
"datasource": "dataflux",
|
|
252
|
-
"qtype": "promql",
|
|
253
|
-
"type": "sequence",
|
|
254
|
-
"query": {
|
|
255
|
-
"q": "sum without(instance, pod)(rate(kafka_server_brokertopicmetrics_bytesin_total{app=\"kafka\",topic!=\"\",namespace=~\"#{namespace}\"}[5m]))",
|
|
256
|
-
"type": "promql",
|
|
257
|
-
"code": "A",
|
|
258
|
-
"promqlCode": 1
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
],
|
|
262
|
-
"type": "sequence"
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
"extend": {
|
|
266
|
-
"settings": {}
|
|
267
|
-
},
|
|
268
|
-
"group": {},
|
|
269
|
-
"pos": {
|
|
270
|
-
"x": 16,
|
|
271
|
-
"y": 24.8,
|
|
272
|
-
"h": 11.5,
|
|
273
|
-
"w": 8
|
|
274
|
-
},
|
|
275
|
-
"name": "Bytes Out Per Topic",
|
|
276
|
-
"queries": [
|
|
277
|
-
{
|
|
278
|
-
"datasource": "dataflux",
|
|
279
|
-
"qtype": "promql",
|
|
280
|
-
"type": "sequence",
|
|
281
|
-
"query": {
|
|
282
|
-
"q": "sum without(instance, pod)(rate(kafka_server_brokertopicmetrics_bytesout_total{app=\"kafka\",topic!=\"\",namespace=~\"#{namespace}\"}[5m]))",
|
|
283
|
-
"type": "promql",
|
|
284
|
-
"code": "A",
|
|
285
|
-
"promqlCode": 1
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
],
|
|
289
|
-
"type": "sequence"
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
"extend": {
|
|
293
|
-
"settings": {}
|
|
294
|
-
},
|
|
295
|
-
"group": {},
|
|
296
|
-
"pos": {
|
|
297
|
-
"x": 0,
|
|
298
|
-
"y": 36.2,
|
|
299
|
-
"h": 11.5,
|
|
300
|
-
"w": 8
|
|
301
|
-
},
|
|
302
|
-
"name": "Offline partitions",
|
|
303
|
-
"queries": [
|
|
304
|
-
{
|
|
305
|
-
"datasource": "dataflux",
|
|
306
|
-
"qtype": "promql",
|
|
307
|
-
"type": "sequence",
|
|
308
|
-
"query": {
|
|
309
|
-
"q": "kafka_controller_kafkacontroller_offlinepartitionscount{namespace=~\"#{namespace}\"}",
|
|
310
|
-
"type": "promql",
|
|
311
|
-
"code": "A",
|
|
312
|
-
"promqlCode": 1
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
],
|
|
316
|
-
"type": "sequence"
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
"extend": {
|
|
320
|
-
"settings": {}
|
|
321
|
-
},
|
|
322
|
-
"group": {},
|
|
323
|
-
"pos": {
|
|
324
|
-
"x": 8,
|
|
325
|
-
"y": 36.2,
|
|
326
|
-
"h": 11.5,
|
|
327
|
-
"w": 8
|
|
328
|
-
},
|
|
329
|
-
"name": "Underreplicated partitions by topic",
|
|
330
|
-
"queries": [
|
|
331
|
-
{
|
|
332
|
-
"datasource": "dataflux",
|
|
333
|
-
"qtype": "promql",
|
|
334
|
-
"type": "sequence",
|
|
335
|
-
"query": {
|
|
336
|
-
"q": "sum by (topic)(kafka_cluster_partition_underreplicated{namespace=~\"#{namespace}\"})",
|
|
337
|
-
"type": "promql",
|
|
338
|
-
"code": "A",
|
|
339
|
-
"promqlCode": 1
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
],
|
|
343
|
-
"type": "sequence"
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
"extend": {
|
|
347
|
-
"settings": {}
|
|
348
|
-
},
|
|
349
|
-
"group": {},
|
|
350
|
-
"pos": {
|
|
351
|
-
"x": 16,
|
|
352
|
-
"y": 36.2,
|
|
353
|
-
"h": 11.5,
|
|
354
|
-
"w": 8
|
|
355
|
-
},
|
|
356
|
-
"name": "ISR expands by instance",
|
|
357
|
-
"queries": [
|
|
358
|
-
{
|
|
359
|
-
"datasource": "dataflux",
|
|
360
|
-
"qtype": "promql",
|
|
361
|
-
"type": "sequence",
|
|
362
|
-
"query": {
|
|
363
|
-
"q": "sum by (kubernetes_pod)(rate(kafka_server_replicamanager_isrexpands_total{namespace=~\"#{namespace}\"}[1m]))",
|
|
364
|
-
"type": "promql",
|
|
365
|
-
"code": "A",
|
|
366
|
-
"promqlCode": 1
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
],
|
|
370
|
-
"type": "sequence"
|
|
371
|
-
}
|
|
372
|
-
],
|
|
373
|
-
"groups": []
|
|
374
|
-
}
|
|
375
|
-
}
|
|
1
|
+
{"title":"【通用】应用问题定位大盘","dashboardExtend":{"groupUnfoldStatus":{"变更记录":true,"应用视角":true,"影响面评估 --- 跳转业务大盘":false,"上下游拓扑图 - 跳转trace":false,"主/被调视角":false,"快速处置":false,"Pod/EC2":false,"通信线程池":false,"MySQL":false,"Redis":false,"ElasticSearch":false,"Kafka":false,"DynamoDB":false,"JVM指标":true,"Golang指标":false}},"main":{"vars":[{"type":"PROMQL_QUERY","datasource":"dataflux","name":"应用","seq":0,"hide":0,"multiple":false,"includeStar":false,"valueSort":"desc","code":"bzi_server","definition":{"value":"select f_app_name from `t_app` ","defaultVal":{"label":"act-internal-tool","value":"act-internal-tool"}}},{"type":"CUSTOM_LIST","datasource":"custom","name":"interval","seq":2,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"interval","definition":{"value":"1ms : 1ms,10ms : 10ms,100ms : 100ms,1s : 1s,10s : 10s,1min : 1min,5min : 5min,30min : 30min,1h : 1h,1d : 1d","defaultVal":{"label":"5min","value":"5min"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"接口等级","seq":3,"hide":1,"multiple":false,"includeStar":true,"valueSort":"desc","code":"level","definition":{"value":"select f_level from t_interface_list group by f_level","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"CUSTOM_LIST","datasource":"custom","name":"接口协议类型","seq":6,"hide":1,"multiple":false,"includeStar":true,"valueSort":"desc","code":"interface_type","definition":{"value":"HTTP,RPC","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"CUSTOM_LIST","datasource":"custom","name":"block_type","seq":7,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"block_type","definition":{"value":"flow,degrade,hot,system,isolation","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"节点(关联应用)","seq":8,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"bzi_host","definition":{"value":"select f_server_name from t_app_detail WHERE f_app_name in ('#{bzi_server}') and f_server_env = '#{env}'","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"db_host","seq":12,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"db_host","definition":{"value":"label_values(infra_mysql_total{app_name='#{bzi_server}' , env='#{env}'}, host)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"db_db","seq":13,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"db_db","definition":{"value":"label_values(infra_mysql_total{app_name='#{bzi_server}' , env='#{env}'}, db)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"db_table","seq":14,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"db_table","definition":{"value":"label_values(infra_mysql_total{app_name='#{bzi_server}' , env='#{env}'} , table)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"db_operation","seq":15,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"db_operation","definition":{"value":"label_values(infra_mysql_total{app_name='#{bzi_server}' , env='#{env}'}, operation)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"redis_cmd","seq":16,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"redis_cmd","definition":{"value":"label_values(infra_redis_total{app_name='#{bzi_server}', env='#{env}'}, cmd)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"redis_db","seq":17,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"redis_db","definition":{"value":"label_values(infra_redis_total{app_name='#{bzi_server}', env='#{env}'}, db)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"redis_key","seq":18,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"redis_key","definition":{"value":"label_values(infra_redis_total{app_name='#{bzi_server}', env='#{env}'}, keyspace)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"redis_host","seq":19,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"redis_host","definition":{"value":"label_values(infra_redis_total{app_name='#{bzi_server}', env='#{env}'}, host)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"dynamodb_table","seq":20,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"dynamodb_table","definition":{"value":"label_values(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}'}, table)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"kafka_host","seq":21,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"kafka_host","definition":{"value":"label_values(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}'}, server_ip)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"dynamodb_region","seq":22,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"dynamodb_region","definition":{"value":"label_values(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}'}, region)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"dynamodb_operation","seq":23,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"dynamodb_operation","definition":{"value":"label_values(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}'}, operation)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"es_host","seq":24,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"es_host","definition":{"value":"label_values(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}'}, server_ip)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"es_index","seq":25,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"es_index","definition":{"value":"label_values(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}'}, index)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"bzi_ip","seq":26,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"bzi_ip","definition":{"value":"select f_server_ip from t_app_detail WHERE f_app_name in ('#{bzi_server}') and f_server_env = '#{env}'","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"主调接口","seq":27,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"active_api","definition":{"value":"label_values(infra_service_invoke_total{app_name=~'#{bzi_server}', env=\"#{env}\"},api)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"es_operation","seq":28,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"es_operation","definition":{"value":"label_values(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}'}, operation)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"被调接口","seq":29,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"passive_api","definition":{"value":"label_values(infra_service_invoke_total{target_service=~'#{bzi_server}', env=\"#{env}\"},api)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"kafka_topic","seq":30,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"kafka_topic","definition":{"value":"label_values(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}'}, topic)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"kafka_partition","seq":31,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"kafka_partition","definition":{"value":"label_values(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}'}, partition)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"主调返回码","seq":32,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"active_code","definition":{"value":"label_values(infra_service_invoke_total{app_name=~'#{bzi_server}', env=\"#{env}\", code!='0'},code)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"被调返回码","seq":33,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"passive_code","definition":{"value":"label_values(infra_service_invoke_total{target_service=~'#{bzi_server}', env=\"#{env}\", code!=\"0\"},code)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"被调服务","seq":34,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"passive_invoke_server","definition":{"value":"label_values(infra_service_invoke_total{app_name=~'#{bzi_server}', env=\"#{env}\"},target_service)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"主调服务","seq":35,"hide":0,"multiple":true,"includeStar":true,"valueSort":"desc","code":"active_invoke_server","definition":{"value":"label_values(infra_service_invoke_total{target_service=~'#{bzi_server}', env=\"#{env}\"},app_name)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"instance","seq":37,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"instance","definition":{"value":"label_values(http_server_requests_seconds_count{app_name=\"#{bzi_server}\", env=\"#{env}\"}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"startTime","seq":38,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"startTime","definition":{"value":"select #{__from}:date:seconds}","defaultVal":{"label":"1768378957","value":"1768378957"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"endTime","seq":39,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"endTime","definition":{"value":"select #{__to}:date:seconds}","defaultVal":{"label":"1768382557","value":"1768382557"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"hc_person_last","seq":40,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"hc_person_last","definition":{"value":"WITH app_update_list AS (\n SELECT f_last_person,\n f_app_name,\n f_pipeline_name,\n f_branch,\n f_commit_info,\n f_commit_id,\n f_deploy_status,\n f_create_time,\n f_modify_time\n FROM t_deploy_record\n WHERE f_env = 'bon'\n AND f_app_name='#{bzi_server}'\n) \nSELECT GROUP_CONCAT(DISTINCT f_last_person ORDER BY f_last_person SEPARATOR ',') AS f_last_person FROM \n(SELECT \n f_last_person,\n f_app_name,\n f_pipeline_name,\n f_branch,\n f_commit_info,\n f_commit_id,\n f_deploy_status,\n DATE_SUB(f_create_time, INTERVAL 8 HOUR) as f_create_time,\n DATE_SUB(f_modify_time, INTERVAL 8 HOUR) as f_modify_time,\n LAG(f_commit_id) OVER (\n PARTITION BY f_app_name -- 按用户分组(可选,如需区分不同用户的记录)\n ORDER BY f_modify_time -- 按创建时间排序,定义“上一条”\n ) AS last_id,\n -- 获取上一条有效记录的金额\n LAG(f_commit_info) OVER (\n PARTITION BY f_app_name \n ORDER BY f_modify_time\n ) AS last_commit,\n LAG(f_branch) OVER (\n PARTITION BY f_app_name \n ORDER BY f_branch\n ) AS last_branch,\n -- 获取上一条有效记录的时间\n LAG(DATE_SUB(f_modify_time, INTERVAL 8 HOUR)) OVER (\n PARTITION BY f_app_name \n ORDER BY f_modify_time\n ) AS last_time,\n LAG(f_last_person) OVER (\n PARTITION BY f_app_name \n ORDER BY f_last_person\n ) AS last_person\nFROM app_update_list\n) A ,\n(select \n -- \"self\" as role,\nf_app_name as f_app_name_B,\nf_group_name,\nf_ops_person\nFROM t_app \nWHERE \nf_app_name='#{bzi_server}'\n) B,\n(\n SELECT \n f_id,\n f_name\n FROM t_pipeline\n WHERE f_env='prod'\n) C\nWHERE A.f_create_time >= DATE_SUB(NOW(), INTERVAL 120 HOUR)\nAND A.f_app_name=B.f_app_name_B\nAND A.f_pipeline_name=C.f_name\nORDER BY f_app_name, f_modify_time\n","defaultVal":{"label":"","value":""}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"hc_person_owner","seq":41,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"hc_person_owner","definition":{"value":"select \nf_ops_person\nFROM t_app \nWHERE \nf_app_name='#{bzi_server}'","defaultVal":{"label":"[\"saul.li\", \"fcloud\", \"kim.qiu\", \"ambition.xia\"]","value":"[\"saul.li\", \"fcloud\", \"kim.qiu\", \"ambition.xia\"]"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"db_instance","seq":42,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"db_instance","definition":{"value":"label_values(infra_mysql_total{app_name='#{bzi_server}' , env='#{env}'}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"redis_instance","seq":43,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"redis_instance","definition":{"value":"label_values(infra_redis_total{app_name='#{bzi_server}', env='#{env}'}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"es_instance","seq":45,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"es_instance","definition":{"value":"label_values(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}'}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"dynamodb_instance","seq":46,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"dynamodb_instance","definition":{"value":"label_values(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}'}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"kafka_instance","seq":47,"hide":1,"multiple":true,"includeStar":true,"valueSort":"desc","code":"kafka_instance","definition":{"value":"label_values(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}'}, instance)","defaultVal":{"label":"all values","value":"__all__"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"project","seq":48,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"project","definition":{"value":"label_values(performance_interface_qps{app_name=~\"#{bzi_server}\", env=\"#{env}\"}, project)","defaultVal":{"label":"None","value":""}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"logstore","seq":49,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"logstore","definition":{"value":"label_values(performance_interface_qps{app_name=~\"#{bzi_server}\", env=\"#{env}\"}, logstore)","defaultVal":{"label":"None","value":""}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"sls_pre","seq":50,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"sls_pre","definition":{"value":"select \ncase \nwhen f_app_type='golang' then '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=* and ServerID:#{bzi_server}'\nelse '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=*'\nend \nfrom t_app where f_app_name='#{bzi_server}'","defaultVal":{"label":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=*","value":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=*"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"sls_pre_status","seq":51,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"sls_pre_status","definition":{"value":"select \ncase \nwhen f_app_type='golang' then '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=* and ServerID:#{bzi_server} and Status:'\nelse '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=* and bizStatus:'\nend \nfrom t_app where f_app_name='#{bzi_server}'","defaultVal":{"label":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=* and bizStatus:","value":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=* and bizStatus:"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"sls_pre_error_rate","seq":52,"hide":1,"multiple":false,"includeStar":false,"valueSort":"desc","code":"sls_pre_error_rate","definition":{"value":"select \ncase \nwhen f_app_type='golang' then '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=* and ServerID:#{bzi_server} and not Status:0 and not Status:10.2*'\nelse '#{aliyun_host}/lognext/project/#{project}/logsearch/#{logstore}?startTime=#{startTime}&endTime=#{endTime}&queryTimeType=99&queryString=* and not bizStatus:0 and not bizStatus:10.2*'\nend \nfrom t_app where f_app_name='#{bzi_server}'","defaultVal":{"label":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=* and not bizStatus:0 and not bizStatus:10.2*","value":"https://sls.console.aliyun.com/lognext/project//logsearch/?startTime=1768378957&endTime=1768382557&queryTimeType=99&queryString=* and not bizStatus:0 and not bizStatus:10.2*"}}}],"charts":[{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":0.5,"h":7.7,"w":6},"name":"hotcall","queries":[{"query":{"content":"<div class=\"dynamic-post-links\">\n <a href=\"#\" class=\"action-btn hotcall-btn\">\n <h1> 🔥 一键HotCall 🔥 </h1>\n </a>\n</div>\n\n<script>\ndocument.querySelector('.hotcall-btn').addEventListener('click', function(e) {\n e.preventDefault();\n \n let hc_person;\n const owner_person = '$hc_person_owner'.replace(/"/g, '').replace('[','').replace(']','') + ',rody.l';\n if ('${hc_person_last}'.length > 0 ) {\n hc_person = '$hc_person_last' + ', ' + owner_person;\n } else {\n hc_person = owner_person;\n }\n const hotcall = [...new Set(hc_person.split(',').map(item => item.trim()))].join(',');\n \n // 确认弹窗\n const isConfirmed = confirm(`确定要为应用: ${bzi_server} 执行一键HotCall操作吗? \\n hotcall列表: ${hotcall} \\n\\n 请确保已经在本浏览器成功登陆ops.houtai.co`);\n const grafana_url = `https://grafana.houtai.co/d/cXWzPsRDk/tong-yong-ying-yong-wen-ti-ding-wei-da-pan?orgId=1&var-bzi_server=${bzi_server}&from=${__from}&to=${__to}`\n \n if (isConfirmed) {\n const params = new URLSearchParams({\n u: `${hotcall}`,\n //u: 'Rody.L,alex.g',\n t: `来自应用【${bzi_server}】问题定位大盘的一键hotcall`,\n group_name: `[紧急处理]${bzi_server}的hotcall`,\n link_url: `${grafana_url}`\n });\n\n const url = `https://dolphin.ops.houtai.co/api/v2/openapi/general/hotcall?${params}`;\n window.open(url, '_blank');\n }\n});\n</script>"}}],"type":"text"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":6,"y":0.5,"h":7.7,"w":18},"name":"使用说明","queries":[{"query":{"content":"\n- Java应用使用本大盘,需要将<B>bon-framework升级至1.6.3及以上版本</B>\n- 应用视角:数据源 sls(sls -> 统计 -> 观测云);作用于关联应用参数;\n- 主被调视角:数据源 框架上报(Prometheus);作用于非关联应用参数;\n\n**如有任何疑问,请联系rody.l**"}}],"type":"text"},{"extend":{"settings":{}},"group":{"name":"变更记录"},"pos":{"x":0,"y":2,"h":13.4,"w":24},"name":"📚流水线发布(最近五天) -- 按服务筛选","queries":[],"type":"table"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":2,"h":3.9,"w":24},"name":"服务","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"1","type":"promql","code":"a","promqlCode":1}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":5.8,"h":17.2,"w":12},"name":"服务QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_qps{app_name=\"#{bzi_server}\", env=\"#{env}\"}) \nby (app_name)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_qps{app_name=\"#{bzi_server}\", env=\"#{env}\"}) \nby (app_name) offset 1d","type":"promql","code":"b","promqlCode":2}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_qps{app_name=\"#{bzi_server}\", env=\"#{env}\"}) \nby (app_name) offset 7d","type":"promql","code":"c","promqlCode":3}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":12,"y":5.8,"h":17.2,"w":12},"name":"系统错误率 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"performance_host_error_rate{app_name=\"#{bzi_server}\", env=\"#{env}\"} or on() vector(0)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_interface_error_count{app_name=#{bzi_server}, env=#{env}, result!=\"0\"}) by (app_name) \n/\nsum(performance_host_interface_error_count{app_name=#{bzi_server}, env=#{env}) by (app_name) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":22.9,"h":3.9,"w":24},"name":"接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"1","type":"promql","code":"a","promqlCode":1}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":26.7,"h":17.2,"w":8},"name":"接口 QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"performance_interface_qps{app_name=~\"#{bzi_server}\", env='#{env}', api!='/health'}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_interface_qps{app_name=~\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}[1m])\n by (api) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":8,"y":26.7,"h":17.2,"w":8},"name":"QPS 节点间分布","queries":[{"datasource":"dataflux","qtype":"promql","type":"pie","query":{"q":"topk(100, sum(performance_interface_qps{app_name=~\"#{bzi_server}\", env='#{env}', api=~\"#{interfact}\"}) by (api))","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"pie","query":{"q":"sum(performance_host_interface_qps{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\"}) \nby (hostname)","type":"promql","code":"b","promqlCode":2}}],"type":"pie"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":16,"y":26.7,"h":17.2,"w":8},"name":"接口 QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"performance_interface_qps{app_name=~\"#{bzi_server}\", env='#{env}', api=~\"#{interfact}\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"topk(20,\nsum(performance_host_interface_qps{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\"}) \nby (hostname, api)\n)","type":"promql","code":"b","promqlCode":2}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"performance_host_interface_qps{app_name=\"risk-engine-executor\"}","type":"promql","code":"c","promqlCode":3}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":43.8,"h":22.9,"w":6},"name":"接口系统错误率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"topk(20,\nsort_desc(100 - (sum(performance_host_interface_error_count{app_name=~\"#{bzi_server}\", env=~\"#{env}\", result=\"0\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}) by (api)\n/\nsum(performance_host_interface_error_count{app_name=~\"#{bzi_server}\", env=~\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}) by (api)) * 100)\n)\n","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"topk(20, \nperformance_host_interface_error_rate{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\"}\n) or on() vector(0)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":6,"y":43.8,"h":22.9,"w":6},"name":"接口系统错误率 - 节点分布","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sort_desc(\n (\n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", api!=\"/health\", api=~\"#{interfact}\"}) by (hostname, api)\n - \n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", result=\"0\",api!=\"/health\", api=~\"#{interfact}\"}) by (hostname, api)\n )\n /\n clamp_min(\n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\",api!=\"/health\", api=~\"#{interfact}\"}) by (hostname, api),\n 1\n )\n)[0:20]","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sort_desc( \n1 - (sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", result=\"0\", api=~\"#{interfact}\", hostname=\"#{bzi_host}\"}) by (hostname,api)\n/\nsum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=\"#{bzi_host}\"}) by (hostname,api))\nor on() vector(0)\n)[0:20]","type":"promql","code":"b","promqlCode":2}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"# 综合优化方案\nsort_desc(\n # 计算成功率百分比\n (\n # 成功数 = 总数 - 错误数(result!=\"0\")\n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\"}) by (hostname, api)\n - \n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", result=\"0\"}) by (hostname, api)\n )\n * 100 # 先乘100,避免小数精度问题\n /\n clamp_min(\n sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\"}) by (hostname, api),\n 1\n )\n)[0:20]","type":"promql","code":"c","promqlCode":3}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":12,"y":43.8,"h":22.9,"w":6},"name":"接口业务失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"topk(20,\nsort_desc(1 - (sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", status=~\"0|10.2..\", api=~\"#{interfact}\" , hostname=~\"#{bzi_host}\"}) by (api)\n/\nsum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}) by (api) > 0))\n)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":18,"y":43.8,"h":22.9,"w":6},"name":"接口业务失败率 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"pie","query":{"q":"sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", status!~\"0|10.2..\", api=~\"#{interfact}\"}) by (hostname,project,logstore)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"pie","query":{"q":"topk(20, performance_host_interface_biz_error_rate{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\"} > 0)","type":"promql","code":"b","promqlCode":2}}],"type":"pie"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":66.6,"h":22.9,"w":12},"name":"接口错误码 统计","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_interface_error_count{app_name=~\"#{bzi_server}\", status!~\"0|10.2..\", status=~\"#{bizstatus}\", env=~\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}) \nby (api, status) ","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":12,"y":66.6,"h":22.9,"w":12},"name":"接口错误码分布 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_interface_error_count{app_name=\"#{bzi_server}\", env=\"#{env}\", status!~\"0|10.2..\",status=~\"#{bizstatus}\", hostname=~\"#{bzi_host}\",api=~\"#{interfact}\"}) \nby (hostname, api, status) ","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":89.4,"h":19.1,"w":6},"name":"接口耗时 P99","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"max(performance_host_interface_p99{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}[1m]) \nby (api) ","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":6,"y":89.4,"h":19.1,"w":6},"name":"接口耗时 P95","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"max(performance_host_interface_p95{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}[1m]) \nby (api) ","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":12,"y":89.4,"h":19.1,"w":12},"name":"接口慢调用请求次数(大于500ms)- 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"topk(30, \nsum(performance_host_interface_500ms{app_name=\"#{bzi_server}\", env=\"#{env}\", api=~\"#{interfact}\", hostname=~\"#{bzi_host}\"}) by (hostname,api)\n)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":108.4,"h":3.9,"w":24},"name":"流量防护","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"1","type":"promql","code":"a","promqlCode":1}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":112.2,"h":17.2,"w":8},"name":"接口限流次数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(increase(infra_sentinel_block_total{app_name=~'#{bzi_server}', env='#{env}', resource=~\"#{interfact}\", block_type=~\"#{block_type}\"}[1m])) \nby (resource, block_type)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (app_name,resource)(\r\n rate(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\",env='#{env}', instance=~\"#{bzi_host}\"}[1m])\r\n)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":8,"y":112.2,"h":17.2,"w":8},"name":"接口限流次数-节点分布","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(increase(infra_sentinel_block_total{app_name=~'#{bzi_server}', env='#{env}', resource=~\"#{interfact}\", block_type=~\"#{block_type}\"}[1m])) by (resource, block_type, instance)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (app_name,resource)(\r\n rate(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\",env='#{env}', instance=~\"#{bzi_host}\"}[1m])\r\n)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":16,"y":112.2,"h":17.2,"w":8},"name":"接口流控阻断率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (resource) (increase(infra_sentinel_block_total{app_name=~\"#{bzi_server}\", env='#{env}', resource=~\"#{interfact}\"}[1m]))\n/\n(sum by (resource) (increase(infra_sentinel_block_total{app_name=~\"#{bzi_server}\", env='#{env}', resource=~\"#{interfact}\"}[1m])) \n+\nsum by (resource, block_type) (increase(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\", env='#{env}', resource=~\"#{interfact}\"}[1m])) \n)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (resource, block_type) (increase(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\", env='#{env}', resource=~\"#{interfact}\"}[1m])) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":0,"y":129.3,"h":15.3,"w":8},"name":"接口熔断次数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_host_interface_error_count{app_name=~\"#{bzi_server}\", env='#{env}', status='100503', api=~\"#{interfact}\"}) by (app_name)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":8,"y":129.3,"h":15.3,"w":8},"name":"接口熔断次数 - 节点分布","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(performance_interface_error_count{app_name=~\"#{bzi_server}\", env='#{env}', status='100503', api=~\"#{interfact}\"}) by (api, hostname)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (app_name,resource)(\r\n rate(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\",env='#{env}', instance=~\"#{bzi_host}\"}[1m])\r\n)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"应用视角"},"pos":{"x":16,"y":129.3,"h":15.3,"w":8},"name":"接口熔断率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(increase(performance_interface_error_count{app_name=~\"#{bzi_server}\", env='#{env}', status='100503', api=~\"#{interfact}\"}[1m])) by (api, hostname)\r\n/\r\nsum(increase(performance_interface_error_count{app_name=~\"#{bzi_server}\", env='#{env}', api=~\"#{interfact}\"}[1m])) by (api, hostname)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum by (resource)\n(increase(infra_sentinel_block_total{app_name=~\"#{bzi_server}\", env='#{env}', block_type=~\"#{block_type}\"}[1m]))\n/\nsum by (resource)\n(increase(infra_sentinel_block_total{app_name=~\"#{bzi_server}\", env='#{env}', block_type=~\"#{block_type}\"}[1m]))\n+\nsum by (resource)(\n rate(infra_sentinel_pass_total{app_name=~\"#{bzi_server}\", env='#{env}', block_type=~\"#{block_type}\"}[1m])\n)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"影响面评估 --- 跳转业务大盘"},"pos":{"x":0,"y":11.5,"h":5.8,"w":7},"name":"业务大盘","queries":[{"query":{"content":"<div id=\"dashboardContainer\"></div>\n\n<script>\n// 最简单直接的版本\nfunction initDashboard() {\n //const bzi_server = 'user-service'; // 你的实际变量\n const container = document.getElementById('dashboardContainer');\n if (`$bzi_server` === 'user-service' || `$bzi_server` === 'user-security') {\n container.innerHTML = '<a href=\"#\" onclick=\"openDashboard(); return false;\" style=\"display:block;font-size:16px; font-weight:600;\">📊 点击跳转业务大盘</a>';\n} else {\n container.innerHTML = '<div style=\"display:block;\"></div><span style=\"font-size:16px; font-weight:600; color:red\">🏗️ 大盘建设中,敬请期待</span> </div>';\n}\n}\nfunction openDashboard() {\n const url = \"https://dataflux.prod-guance.houtai.co/scene/dashboard/dashboardDetail?dashboard_id=dsbd_b8180e5ab2d24ca7bd1436eda1db7d6b&name=%E7%94%A8%E6%88%B7%E5%9F%9F%E7%9A%84%E4%B8%9A%E5%8A%A1%E5%A4%A7%E7%9B%98&lak=Scene&time=${__from},${__to}&refresh=0&variable=%7B%22dye%22%3A%22LOGIN%22,%22platform%22%3A%22%2a%22,%22region%22%3A%22%2a%22,%22lang%22%3A%22%2a%22%7D&w=wksp_71f37c251a3b4e9d9f626103ecaf2f0b\"; // 你的URL\n window.open(url, '_blank');\n}\n\n\n// 页面加载后执行\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', initDashboard);\n} else {\n initDashboard();\n}\n</script>"}}],"type":"text"},{"extend":{"settings":{}},"group":{"name":"上下游拓扑图 - 跳转trace"},"pos":{"x":0,"y":15.3,"h":5.8,"w":10},"name":"接口上下游依赖拓扑图","queries":[{"datasource":"dataflux","qtype":"promql","type":"text","query":{"q":"1234","type":"promql","code":"a","promqlCode":1}},{"query":{"content":"<div style=\"background-color: yellow\"; padding: 10px; border-radius: 4px;\" id=\"dashboardContainer\">\n <h4>上下游拓扑图【<dev style=\"color:red\">点击前请选择一个接口</dev>】:\n <a id=\"traceLink\" href=\"#\" target=\"_blank\">点击跳转观测云</a>\n </h3>\n</div>\n\n<script>\ndocument.getElementById('traceLink').addEventListener('click', function(e) {\n // 阻止默认跳转\n e.preventDefault();\n \n // 实时获取当前值\n const interfact = `$interfact`;\n const apiValue = interfact.includes(',') ? '/health' : interfact;\n \n const variable = {\n \"env\": \"prod\",\n \"service\": \"${bzi_server}\",\n \"should_exclude\": \"false\",\n \"filteredInterface\": \"test\",\n \"http_route\": apiValue,\n \"resource\": \"__all__\"\n };\n \n const url = `$guance_domain/scene/dashboard/dashboardDetail` +\n `?dashboard_id=dsbd_e2308a734df44ebabf8db4ea3134a08a` +\n `&lak=Scene` +\n `&time=${__from},${__to}` +\n `&variable=${encodeURIComponent(JSON.stringify(variable))}` +\n `&w=wksp_71f37c251a3b4e9d9f626103ecaf2f0b`;\n \n // 跳转\n window.open(url, '_blank');\n console.log('实时跳转:', apiValue);\n});\n</script>"}}],"type":"text"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":17.2,"h":3.9,"w":24},"name":"主调/被调","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"1","type":"promql","code":"a","promqlCode":1}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":21,"h":24.8,"w":12},"name":"【请求QPS】上游服务 -> 本应用接口 ","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(\n sum(rate(infra_service_invoke_total{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}' }[1m])) by (api, app_name) or on() vector(0)\n ,0\n )","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":21,"h":24.8,"w":12},"name":"【请求QPS】本应用 -> 目标应用接口 ","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":45.7,"h":22.9,"w":6},"name":"【接口失败率】上游服务 -> 本应用","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code='0', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api)\n/\nsum(rate(infra_service_invoke_total{target_service='#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":6,"y":45.7,"h":22.9,"w":6},"name":"【接口失败数】上游服务 -> 本应用接口 ","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code!='0', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":45.7,"h":22.9,"w":6},"name":"【业务失败率】本应用 -> 下游接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', code!~'#{active_code}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) \n/\nsum(rate(infra_service_invoke_total{app_name='#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) , 0) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_process_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (api, service) > 0","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":18,"y":45.7,"h":22.9,"w":6},"name":"【业务失败数】本应用 -> 下游接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', code=~'#{active_code}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) or on() vector(0)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_process_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (api, service) > 0","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":68.5,"h":21,"w":6},"name":"【系统错误率】上游服务 -> 本应用接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code=~'1005..', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api)\n/\nsum(rate(infra_service_invoke_total{target_service='#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":6,"y":68.5,"h":21,"w":6},"name":"【系统错误数】上游服务 -> 本应用接口 ","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code=~'1005..', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":68.5,"h":21,"w":6},"name":"【系统错误率】本应用 -> 下游接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', code!~'1005..', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service)\n/\nsum(rate(infra_service_invoke_total{app_name='#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) , 0) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_process_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (api, service) > 0","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":18,"y":68.5,"h":21,"w":6},"name":"【系统错误数】本应用 -> 下游接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', code=~'1005..', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service) or on() vector(0)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_process_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (api, service) > 0","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":89.4,"h":21,"w":12},"name":"【错误码统计】上游服务 -> 本应用接口 ","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code=~'#{active_code}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, api, code) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":89.4,"h":21,"w":12},"name":"【错误码统计】本应用 -> 下游服务接口","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', env='#{env}', api=~'#{active_api}', code=~'#{active_code}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, code) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":110.3,"h":21,"w":12},"name":"【错误码统计】上游服务 -> 本应用接口 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{target_service='#{bzi_server}', code=~'#{passive_code}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (app_name, instance, api, code) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":110.3,"h":21,"w":12},"name":"【错误码统计】本应用 -> 下游服务 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_total{app_name='#{bzi_server}', env='#{env}', api=~'#{active_api}', code=~'#{active_code}', target_service=~'#{passive_invoke_server}'}[1m])) by (instance, api, target_service, code) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":131.2,"h":21,"w":6},"name":"上游服务 -> 本应用接口 P95 耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.95, \n sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, le)\n) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.95, \n sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, le)\n) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":6,"y":131.2,"h":21,"w":6},"name":"上游服务 -> 本应用接口 P99 耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.99, \n sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, le)\n) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.99, \n sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, le)\n) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":131.2,"h":21,"w":6},"name":"本应用 -> 被调服务 接口 P95 耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.95, \n sum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, le)\n) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.95, \n sum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, le)\n) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":18,"y":131.2,"h":21,"w":6},"name":"本应用 -> 被调服务 接口 P99 耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.99, \n sum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, le)\n) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.99, \n sum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, le)\n) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":152.1,"h":21,"w":12},"name":"上游服务 -> 本应用节点 接口 慢调用请求比例","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(\n sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' ,le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n- \n sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' , le='500', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n)\n/\nsum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}' , api=~'#{passive_api}', le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(\n sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' ,le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n- \n sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' , le='1000', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n)\n/\nsum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}' , api=~'#{passive_api}', le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":152.1,"h":21,"w":12},"name":"本应用节点 -> 被调服务接口 慢调用请求比例","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(sum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance) \n- \nsum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='500', target_service=~'#{passive_invoke_server}'}[1m])) by (api,target_service, instance) \n)\n/\nsum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(sum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance) \n- \nsum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='1000', target_service=~'#{passive_invoke_server}'}[1m])) by (api,target_service, instance) \n)\n/\nsum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":0,"y":173,"h":21,"w":12},"name":"上游服务 -> 本应用节点 接口 慢调用请求量","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' ,le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n- \n sum(rate(infra_service_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' , le='500', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' ,le='+Inf', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) \n- \n sum(rate(infra_http_invoke_cost_ms_bucket{target_service=~'#{bzi_server}', env='#{env}', api=~'#{passive_api}' , le='1000', app_name=~'#{active_invoke_server}'}[1m])) by (api, app_name, instance) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"主/被调视角"},"pos":{"x":12,"y":173,"h":21,"w":12},"name":"本应用节点 -> 被调服务接口 慢调用请求数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance) \n- \nsum(rate(infra_service_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='500', target_service=~'#{passive_invoke_server}'}[1m])) by (api,target_service, instance) ","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='+Inf', target_service=~'#{passive_invoke_server}'}[1m])) by (api, target_service, instance) \n- \nsum(rate(infra_http_invoke_cost_ms_bucket{app_name=~'#{bzi_server}', env='#{env}', api=~'#{active_api}', le='1000', target_service=~'#{passive_invoke_server}'}[1m])) by (api,target_service, instance) ","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"快速处置"},"pos":{"x":0,"y":19.1,"h":7.7,"w":9},"name":"快速处置","queries":[{"datasource":"dataflux","qtype":"promql","type":"text","query":{"q":"1234","type":"promql","code":"a","promqlCode":1}},{"query":{"content":"<div style=\"background-color: yellow\"; padding: 10px; border-radius: 4px;\">\n <h4>1、流量防护:<a href='$ops_domain/question/flow-protection?app_name=$bzi_server&env=prod' target=\"_blank\"> 点击跳转OPS </a> </h3>\n <h4>2、预案管理:<a href='$ops_domain/question/plan-management?app_name=$bzi_server&env=prod' target=\"_blank\"> 点击跳转OPS </a> </h3>\n <h4>3、节点管理(关机/重启/升配):<a href='$ops_domain/assets/ec2?app_name=$bzi_server&env=prod' target=\"_blank\"> 点击跳转OPS </a> </h3>\n</div>"}}],"type":"text"},{"extend":{"settings":{}},"group":{"name":"Pod/EC2"},"pos":{"x":0,"y":21,"h":15.3,"w":12},"name":"CPU使用率 - 服务节点","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"linux_server{instance_name=~\"#{bzi_host}\", job=\"linux_server\", quota_name=~\"cpu_usage\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"90","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Pod/EC2"},"pos":{"x":12,"y":21,"h":15.3,"w":12},"name":"内存使用率 - 服务节点","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"linux_server{quota_name=\"memory_usage\", job=\"linux_server\", instance_name=~\"#{bzi_host}\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"80","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Pod/EC2"},"pos":{"x":0,"y":36.2,"h":15.3,"w":12},"name":"平均 IO 延迟","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(linux_server{instance_name=~\"#{bzi_host}\", job=\"linux_server\", quota_name=\"disk_iostat\", attribute=~\"r_await|w_await\"}[1m])) by (instance_name)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Pod/EC2"},"pos":{"x":12,"y":36.2,"h":15.3,"w":12},"name":"上行/下行流量","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(linux_server{instance_name=~\"#{bzi_host}\", job=\"linux_server\", quota_name=\"network_traffic\", direction=~\"in|out\"}[1m])) by (instance_name, direction)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"通信线程池"},"pos":{"x":0,"y":22.9,"h":15.3,"w":12},"name":"线程池信息(worker)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_io_thread_count{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_worker_pool_max_size{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"b","promqlCode":2}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_worker_thread_busy_count{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"c","promqlCode":3}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_worker_pool_core_size{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"d","promqlCode":4}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_worker_pool_size{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"e","promqlCode":5}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"通信线程池"},"pos":{"x":12,"y":22.9,"h":15.3,"w":12},"name":"Connections当前/最大活跃数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_connectors_connections_active_connections{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_connectors_connections_active_connections{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"通信线程池"},"pos":{"x":0,"y":38.1,"h":15.3,"w":8},"name":"请求错误率(5分钟错误增量/总增量)(statusCode=500)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"increase(undertow_connectors_requests_error_count{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}[5m])/increase(undertow_connectors_requests_count{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}[5m])","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"通信线程池"},"pos":{"x":8,"y":38.1,"h":15.3,"w":8},"name":"requests当前/最大活跃数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_connectors_requests_active_max_connections{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_connectors_requests_active_connections{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"通信线程池"},"pos":{"x":16,"y":38.1,"h":15.3,"w":8},"name":"等待队列数量(worker queue)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"undertow_xwork_worker_queue_size{env=~\"#{env}\", app_name=~\"#{bzi_server}\", instance=~\"#{bzi_host}\"}","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":0,"y":24.8,"h":15.3,"w":12},"name":"MySQL请求QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_mysql_total{app_name='#{bzi_server}', env='#{env}', host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}',operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, host, db, table, operation)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":12,"y":24.8,"h":15.3,"w":12},"name":"MySQL请求QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_mysql_total{app_name='#{bzi_server}', env='#{env}', host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}', operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, instance)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":0,"y":40,"h":15.3,"w":12},"name":"MySQL请求失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - sum(rate(infra_mysql_total{app_name='#{bzi_server}', env='#{env}', code='0',host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}',operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, host, db , table , operation)\n/\n(sum(rate(infra_mysql_total{app_name='#{bzi_server}', env='#{env}',host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}',operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, host, db , table , operation) > 0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":12,"y":40,"h":15.3,"w":12},"name":"MySQL请求错误 QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(sum(rate(infra_mysql_total{app_name='#{bzi_server}', env='#{env}', host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}', operation=~'#{db_operation}', code!=\"0\", instance=~'#{db_instance}'}[1m])) by (app_name, instance, db, table, operation, code), 0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":0,"y":55.2,"h":15.3,"w":12},"name":"MySQL请求P90耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_mysql_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}',host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}',operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, host, db ,table, operation, le))","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_mysql_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}',host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}',operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, host, db ,table, operation, le))","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"MySQL"},"pos":{"x":12,"y":55.2,"h":15.3,"w":12},"name":"MySQL请求P90耗时 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, \nsum(rate(infra_mysql_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}', operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, instance, le)\n)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, \nsum(rate(infra_mysql_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', host=~'#{db_host}', db=~'#{db_db}', table=~'#{db_table}', operation=~'#{db_operation}', instance=~'#{db_instance}'}[1m])) by (app_name, instance, le)\n)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":0,"y":26.7,"h":15.3,"w":12},"name":"Redis请求QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(\n sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (host, db, keyspace, cmd)\n ,0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":12,"y":26.7,"h":15.3,"w":12},"name":"Redis请求QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(\n sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', db=~'#{redis_db}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (app_name, instance)\n ,0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":0,"y":41.9,"h":15.3,"w":12},"name":"Redis请求失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(\n 1 - (sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', code=~'0|100', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (host, keyspace, cmd)\n/\nsum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (host, keyspace, cmd))\n,0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":12,"y":41.9,"h":15.3,"w":12},"name":"Redis请求错误QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(\n sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', code!~'0|100'}[1m])) by (app_name, instance, code)\n ,0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":0,"y":57.1,"h":15.3,"w":12},"name":"Redis 请求P90耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_redis_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (host, keyspace, cmd, le)) OR on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":12,"y":57.1,"h":15.3,"w":12},"name":"Redis请求P90耗时 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_redis_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', instance=~'#{redis_instance}'}[1m])) by (instance, le)) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Redis"},"pos":{"x":0,"y":72.3,"h":15.3,"w":12},"name":"Redis命中率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}', code!='100'}[1m])) by (app_name, instance)\n/\n sum(rate(infra_redis_total{app_name='#{bzi_server}', env='#{env}', host=~'#{redis_host}', keyspace=~'#{redis_key}', cmd=~'#{redis_cmd}'}[1m])) by (app_name, instance) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":0,"y":28.6,"h":15.3,"w":12},"name":"ES请求QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (index, operation, server_ip)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":12,"y":28.6,"h":15.3,"w":12},"name":"ES请求QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (instance)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":0,"y":43.8,"h":15.3,"w":12},"name":"ES请求失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', code='0', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (index, operation, server_ip)\n/\nsum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (index, operation, server_ip),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":12,"y":43.8,"h":15.3,"w":12},"name":"ES请求错误 - 节点/错误码维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', code!='0'}[1m])) by (index, operation, server_ip)\n/\nsum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (index, operation, server_ip) > 0","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(sum(rate(infra_elasticsearch_total{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}', code!='0'}[1m])) by (instance, code),0)","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":0,"y":59,"h":15.3,"w":12},"name":"ES请求P90耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_elasticsearch_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (server_ip, index, operation, le))","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"ElasticSearch"},"pos":{"x":12,"y":59,"h":15.3,"w":12},"name":"ES请求P90耗时 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_elasticsearch_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', index=~'#{es_index}', operation=~'#{es_operation}', server_ip=~'#{es_host}', instance=~'#{es_instance}'}[1m])) by (instance, le)) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":0,"y":30.5,"h":15.3,"w":12},"name":"生产者 QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (server_ip, topic, partition)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":12,"y":30.5,"h":15.3,"w":12},"name":"生产者 QPS -节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(\n sum(rate(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (instance)\n) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":0,"y":45.7,"h":15.3,"w":12},"name":"生产者 - 请求失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}', code='0', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (server_ip, topic, partition)\n/ \nsum(rate(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (server_ip, topic, partition),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":12,"y":45.7,"h":15.3,"w":12},"name":"生产者错误QPS - 节点/错误码维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_kafka_produce_total{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}', code!='0'}[1m])) by (instance, code) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":0,"y":60.9,"h":15.3,"w":12},"name":"生产者 P90耗时【暂无数据】","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_kafka_produce_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (server_ip, topic, partitio ,le)) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Kafka"},"pos":{"x":12,"y":60.9,"h":15.3,"w":12},"name":"生产者 P90耗时 - 节点维度【暂无数据】","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, sum(rate(infra_kafka_produce_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', server_ip=~'#{kafka_host}', topic=~'#{kafka_topic}', partition=~'#{kafka_partition}', instance=~'#{kafka_instance}'}[1m])) by (instance, le)) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":0,"y":32.4,"h":15.3,"w":12},"name":"Dynamodb请求QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m])) by (table, region, operation)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":12,"y":32.4,"h":15.3,"w":12},"name":"Dynamodb请求QPS - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m])) by (instance)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":0,"y":47.6,"h":15.3,"w":12},"name":"Dynamodb请求失败率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"1 - clamp_min(sum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', code='0', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m])) by (table, region, operation) \n/\nsum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m])) by (table, region, operation),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":12,"y":47.6,"h":15.3,"w":12},"name":"Dynamodb请求错误 - 节点/错误码维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"clamp_min(sum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', code!='0', instance=~'#{dynamodb_instance}'}[1m])) by (instance, code),0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":0,"y":62.8,"h":15.3,"w":12},"name":"Dynamodb请求P90耗时","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"max(histogram_quantile(0.90, rate(infra_dynamodb_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m]))) by (table, region, operation)","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}', code='0'}[1m])) by (table, region, operation) \n/\nsum(rate(infra_dynamodb_total{app_name='#{bzi_server}', env='#{env}'}[1m])) by (table, region, operation) > 0","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"DynamoDB"},"pos":{"x":12,"y":62.8,"h":15.3,"w":12},"name":"Dynamodb请求P90耗时 - 节点维度","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"histogram_quantile(0.90, \nsum(rate(infra_dynamodb_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}', table=~'#{dynamodb_table}', region=~'#{dynamodb_region}', operation=~'#{dynamodb_operation}', instance=~'#{dynamodb_instance}'}[1m])) by (instance, le)\n) or on() vector(0)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":0,"y":2,"h":15.3,"w":8},"name":"Collections(end of major GC)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_pause_seconds_count{app_name=\"#{bzi_server}\", action=\"end of major GC\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":8,"y":2,"h":15.3,"w":8},"name":"Collections(end of minor GC)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_pause_seconds_count{app_name=\"#{bzi_server}\", action=\"end of minor GC\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":16,"y":2,"h":15.3,"w":8},"name":"Allocated/Promoted","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_memory_allocated_bytes_total{app_name=\"#{bzi_server}\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"a","promqlCode":1}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_memory_promoted_bytes_total{app_name=\"#{app_name}\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"b","promqlCode":2}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":0,"y":17.2,"h":15.3,"w":12},"name":"G1新生代GC时间","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_pause_seconds_count{app_name=\"#{bzi_server}\", cause=\"G1 Evacuation Pause\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":12,"y":17.2,"h":15.3,"w":12},"name":"G1大对象GC时间","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(jvm_gc_pause_seconds_count{app_name=\"#{bzi_server}\", cause=\"G1 Humongous Allocation\", instance=~\"#{instance}\"}[1m])","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":0,"y":32.4,"h":15.3,"w":12},"name":"Heap used","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(sum(jvm_memory_used_bytes{app_name=\"#{bzi_server}\", instance=~\"#{instance}\", area=\"heap\"}) by (instance))*100/sum(jvm_memory_committed_bytes{app_name=\"#{bzi_server}\",instance=~\"#{instance}\", area=\"heap\"}) by (instance)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"JVM指标"},"pos":{"x":12,"y":32.4,"h":15.3,"w":12},"name":"Total used","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"(sum(jvm_memory_used_bytes{app_name=\"#{bzi_server}\", instance=~\"#{instance}\"}) by (instance))*100/sum(jvm_memory_committed_bytes{app_name=\"#{bzi_server}\",instance=~\"#{instance}\"}) by (instance)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Golang指标"},"pos":{"x":0,"y":34.3,"h":15.3,"w":12},"name":"协程QPS或者协程池处理QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(go_pkg_safe_run_cost_ms_sum{app_name='#{bzi_server}', env='#{env}'}[1m])) by (GoroutineName, Status)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Golang指标"},"pos":{"x":12,"y":34.3,"h":15.3,"w":12},"name":"协程耗时P90","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"max(histogram_quantile(0.9, rate(go_pkg_safe_run_cost_ms_bucket{app_name='#{bzi_server}', env='#{env}'}[1m]))) by (GoroutineName, Status)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Golang指标"},"pos":{"x":0,"y":49.5,"h":15.3,"w":12},"name":"协程处理超时QPS","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(rate(go_pkg_safe_run_exceed_timeout_ms_sum{app_name='#{bzi_server}', env='#{env}'}[1m])) by (GoroutineName, Status)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":"Golang指标"},"pos":{"x":12,"y":49.5,"h":15.3,"w":12},"name":"超时处理协程耗时P90","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"max(histogram_quantile(0.9, rate(go_pkg_safe_run_exceed_timeout_ms_bucket{app_name='#{bzi_server}', env='#{env}'}[1m]))) by (GoroutineName, Status)","type":"promql","code":"a","promqlCode":1}}],"type":"sequence"}],"groups":[{"name":"变更记录"},{"name":"应用视角"},{"name":"影响面评估 --- 跳转业务大盘"},{"name":"上下游拓扑图 - 跳转trace"},{"name":"主/被调视角"},{"name":"快速处置"},{"name":"Pod/EC2"},{"name":"通信线程池"},{"name":"MySQL"},{"name":"Redis"},{"name":"ElasticSearch"},{"name":"Kafka"},{"name":"DynamoDB"},{"name":"JVM指标"},{"name":"Golang指标"}]}}
|