@cloudcare/guance-front-tools 1.0.5 → 1.0.6
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/guance-dashboard.json +1 -0
- package/lib/example/pod.json +2133 -0
- package/lib/example/test.json +3122 -0
- package/lib/scripts/grafana-covert-to-guance.js +10 -3
- package/lib/scripts/grafana-covert-to-guance.ts +10 -3
- package/package.json +1 -1
- package/test/pod.json +1 -0
|
@@ -136,21 +136,22 @@ function covertPanelToGuanceChart(grafanaPanel, rowPanel) {
|
|
|
136
136
|
const queries = [];
|
|
137
137
|
if (targets && targets.length) {
|
|
138
138
|
targets.forEach((_target) => {
|
|
139
|
-
|
|
139
|
+
const queryStr = _target.expr || _target.query;
|
|
140
|
+
if (!queryStr)
|
|
140
141
|
return;
|
|
141
142
|
const queryItem = {
|
|
142
143
|
datasource: 'dataflux',
|
|
143
144
|
qtype: 'promql',
|
|
144
145
|
type: chartType,
|
|
145
146
|
query: {
|
|
146
|
-
q: replaceVariableStr(
|
|
147
|
+
q: replaceVariableStr(queryStr),
|
|
147
148
|
type: 'promql',
|
|
148
149
|
},
|
|
149
150
|
};
|
|
150
151
|
queries.push(queryItem);
|
|
151
152
|
});
|
|
152
153
|
}
|
|
153
|
-
|
|
154
|
+
let settings = {};
|
|
154
155
|
if (options) {
|
|
155
156
|
switch (chartType) {
|
|
156
157
|
case 'text':
|
|
@@ -161,6 +162,12 @@ function covertPanelToGuanceChart(grafanaPanel, rowPanel) {
|
|
|
161
162
|
};
|
|
162
163
|
queries.push(queryItem);
|
|
163
164
|
break;
|
|
165
|
+
case 'toplist':
|
|
166
|
+
settings = {
|
|
167
|
+
showTopSize: true,
|
|
168
|
+
chartType: 'bar',
|
|
169
|
+
};
|
|
170
|
+
break;
|
|
164
171
|
default:
|
|
165
172
|
break;
|
|
166
173
|
}
|
|
@@ -141,20 +141,21 @@ function covertPanelToGuanceChart(grafanaPanel: Panel, rowPanel: RowPanel | unde
|
|
|
141
141
|
const queries: GuanceChartQueries = []
|
|
142
142
|
if (targets && targets.length) {
|
|
143
143
|
targets.forEach((_target) => {
|
|
144
|
-
|
|
144
|
+
const queryStr: string | unknown = _target.expr || _target.query
|
|
145
|
+
if (!queryStr) return
|
|
145
146
|
const queryItem: GuanceChartQueryItem = {
|
|
146
147
|
datasource: 'dataflux',
|
|
147
148
|
qtype: 'promql',
|
|
148
149
|
type: chartType,
|
|
149
150
|
query: {
|
|
150
|
-
q: replaceVariableStr(
|
|
151
|
+
q: replaceVariableStr(queryStr as string),
|
|
151
152
|
type: 'promql',
|
|
152
153
|
},
|
|
153
154
|
}
|
|
154
155
|
queries.push(queryItem)
|
|
155
156
|
})
|
|
156
157
|
}
|
|
157
|
-
|
|
158
|
+
let settings: GuanceChartSettings = {}
|
|
158
159
|
if (options) {
|
|
159
160
|
switch (chartType) {
|
|
160
161
|
case 'text':
|
|
@@ -165,6 +166,12 @@ function covertPanelToGuanceChart(grafanaPanel: Panel, rowPanel: RowPanel | unde
|
|
|
165
166
|
}
|
|
166
167
|
queries.push(queryItem)
|
|
167
168
|
break
|
|
169
|
+
case 'toplist':
|
|
170
|
+
settings = {
|
|
171
|
+
showTopSize: true,
|
|
172
|
+
chartType: 'bar',
|
|
173
|
+
}
|
|
174
|
+
break
|
|
168
175
|
default:
|
|
169
176
|
break
|
|
170
177
|
}
|
package/package.json
CHANGED
package/test/pod.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"title":"项目容器状态","dashboardExtend":{"groupUnfoldStatus":{}},"main":{"vars":[{"type":"PROMQL_QUERY","datasource":"dataflux","name":"namespace","seq":0,"hide":0,"multiple":false,"includeStar":false,"valueSort":"desc","code":"namespace","definition":{"value":"label_values(kube_pod_info, namespace)","defaultVal":{"label":"kube-system","value":"kube-system"}}},{"type":"PROMQL_QUERY","datasource":"dataflux","name":"workload","seq":1,"hide":0,"multiple":false,"includeStar":false,"valueSort":"desc","code":"workload","definition":{"value":"label_values(kube_deployment_created{namespace=\"#{namespace}\"}, deployment)","defaultVal":{"label":"tiller-deploy","value":"tiller-deploy"}}}],"charts":[{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":0.5,"h":5.8,"w":3},"name":"CPU Limit","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"max(kube_pod_container_resource_limits_cpu_cores{namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"})","type":"promql"}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":3,"y":0.5,"h":5.8,"w":3},"name":"Memory Limit","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"max(kube_pod_container_resource_limits_memory_bytes{namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"})","type":"promql"}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":6,"y":0.5,"h":5.8,"w":3},"name":"最大实例数","queries":[{"datasource":"dataflux","qtype":"promql","type":"singlestat","query":{"q":"kube_deployment_spec_replicas{deployment=~\"#{workload}\"}","type":"promql"}}],"type":"singlestat"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":9,"y":0.5,"h":15.3,"w":5},"name":"整体CPU使用率","queries":[{"datasource":"dataflux","qtype":"promql","type":"gauge","query":{"q":"avg(\navg(irate(container_cpu_usage_seconds_total{container!~\"(POD|istio-proxy)\", namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m]) ) by (pod)\n/\navg( kube_pod_container_resource_limits_cpu_cores{namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"} ) by (pod)\n)","type":"promql"}}],"type":"gauge"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":14,"y":0.5,"h":15.3,"w":5},"name":"整体内存使用率","queries":[{"datasource":"dataflux","qtype":"promql","type":"gauge","query":{"q":"avg(\navg(container_memory_working_set_bytes{ container=\"#{workload}\",namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"} ) by (pod)\n/\nmax( kube_pod_container_resource_limits_memory_bytes{container=~\"#{workload}\"} ) by (pod)\n)","type":"promql"}}],"type":"gauge"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":19,"y":0.5,"h":15.3,"w":5},"name":"实例可用率","queries":[{"datasource":"dataflux","qtype":"promql","type":"gauge","query":{"q":"kube_deployment_status_replicas_available{deployment=~\"#{workload}\"} / kube_deployment_spec_replicas{deployment=~\"#{workload}\"} ","type":"promql"}}],"type":"gauge"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":5.8,"h":9.6,"w":9},"name":"可用副本数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"kube_deployment_status_replicas_available{deployment=~\"${workload}\"}","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":15.3,"h":15.3,"w":12},"name":"CPU使用率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"avg(irate(container_cpu_usage_seconds_total{container!~\"(POD|istio-proxy)\", namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m]) ) by (pod)\n/\nmax( kube_pod_container_resource_limits_cpu_cores{namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"} ) by (pod)","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":15.3,"h":15.3,"w":12},"name":"内存使用率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"avg(container_memory_working_set_bytes{ container=\"#{workload}\", namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"} ) by (pod)\n/\nmax( kube_pod_container_resource_limits_memory_bytes{namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"} ) by (pod)","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":30.5,"h":15.3,"w":12},"name":"磁盘读取速率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(container_fs_reads_bytes_total{namespace=~\"#{namespace}\", container=~\"#{workload}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m])","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":30.5,"h":15.3,"w":12},"name":"磁盘写入速率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"rate(container_fs_writes_bytes_total{namespace=~\"#{namespace}\", container=~\"#{workload}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m])","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":45.7,"h":17.2,"w":12},"name":"网络传输速率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"irate(container_network_transmit_bytes_total{namespace=~\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m])","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":45.7,"h":17.2,"w":12},"name":"网络接收速率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"irate(container_network_receive_bytes_total{namespace=~\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m])","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":62.8,"h":15.3,"w":12},"name":"文件打开数","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"process_files_open{namespace=~\"#{namespace}\", service=~\"#{workload}\"}","type":"promql"}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"process_files_open_files{namespace=~\"#{namespace}\", service=~\"#{workload}\"}","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":62.8,"h":15.3,"w":12},"name":"网络速率","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(irate(container_network_receive_bytes_total{namespace=~\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m]))","type":"promql"}},{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"0- sum(irate(container_network_transmit_bytes_total{namespace=~\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m]))","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":78,"h":15.3,"w":12},"name":"业务状态码 isSuccess","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"product_appId_isSuccess:polaris_requests_business_code_total:increase1m{appId=~\"#{workload}\"}","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":78,"h":15.3,"w":12},"name":"业务状态码 respCode - busCode","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(product_appId_isSuccess_respCode_busCode:polaris_requests_business_code_total:increase1m{appId=~\"#{workload}\"}) by (respCode, busCode)","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":93.2,"h":15.3,"w":12},"name":"访问量","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(increase(nginx_ingress_controller_requests{namespace=\"#{namespace}\", service=\"#{workload}\",service!~\"ingress.+\"}[1m])) by (service) ","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":93.2,"h":15.3,"w":12},"name":"状态码","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"sum(increase(nginx_ingress_controller_requests{status=~\"(40[1-4]|40[5-9]|4[1-9][0-9]|5[0-9]+)\", namespace=\"#{namespace}\", service=\"#{workload}\"}[1m])) by (service, status) > 0","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":0,"y":108.4,"h":15.3,"w":12},"name":"cpu throttle (核心数)","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"irate(container_cpu_cfs_throttled_seconds_total{container=~\"#{workload}\", namespace=\"#{namespace}\", pod=~\"#{workload}-[0-9a-z]+-[0-9a-z]+\"}[5m])","type":"promql"}}],"type":"sequence"},{"extend":{"settings":{}},"group":{"name":null},"pos":{"x":12,"y":108.4,"h":15.3,"w":12},"name":"pod挂载状态","queries":[{"datasource":"dataflux","qtype":"promql","type":"sequence","query":{"q":"kube_pod_container_status_ready{container=\"#{workload}\"} == 1","type":"promql"}}],"type":"sequence"}],"groups":[]}}
|