Add more information to charts and fix grpc charts (#498)

This commit is contained in:
Young Bu Park 2020-04-02 09:02:35 -07:00 committed by GitHub
parent 1171c71ded
commit 55e1562a3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 1196 additions and 1178 deletions

View File

@ -17,8 +17,8 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 2,
"iteration": 1584033425621,
"id": 15,
"iteration": 1585841779452,
"links": [],
"panels": [
{
@ -157,8 +157,8 @@
"steppedLine": false,
"targets": [
{
"expr": "sum(rate(container_cpu_usage_seconds_total{pod=~\"($dapr_app_id).*\", namespace=\"$namespace\"}[5m])) by (pod)",
"legendFormat": "{{pod}}",
"expr": "sum(rate(container_cpu_usage_seconds_total{pod_name=~\"($dapr_app_id).*\", namespace=\"$namespace\"}[5m])) by (pod_name)",
"legendFormat": "{{pod_name}}",
"refId": "A"
}
],
@ -244,7 +244,7 @@
"steppedLine": false,
"targets": [
{
"expr": "max(go_goroutines{kubernetes_name=~\"($dapr_app_id)-dapr\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"expr": "sum(go_goroutines{kubernetes_name=~\"($dapr_app_id)-dapr.*\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"legendFormat": "{{kubernetes_name}}",
"refId": "A"
}
@ -332,7 +332,7 @@
"steppedLine": false,
"targets": [
{
"expr": "max(process_resident_memory_bytes{kubernetes_name=~\"($dapr_app_id)-dapr\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"expr": "sum(process_resident_memory_bytes{kubernetes_name=~\"($dapr_app_id)-dapr\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"legendFormat": "{{kubernetes_name}}",
"refId": "A"
}
@ -420,7 +420,7 @@
"steppedLine": false,
"targets": [
{
"expr": "max(process_virtual_memory_bytes{kubernetes_name=~\"($dapr_app_id)-dapr\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"expr": "sum(process_virtual_memory_bytes{kubernetes_name=~\"($dapr_app_id)-dapr\", kubernetes_namespace=\"$namespace\"}) by (kubernetes_name)",
"legendFormat": "{{kubernetes_name}}",
"refId": "A"
}
@ -468,7 +468,7 @@
}
},
{
"collapsed": false,
"collapsed": true,
"datasource": null,
"gridPos": {
"h": 1,
@ -477,10 +477,7 @@
"y": 14
},
"id": 21,
"panels": [],
"title": "Throughput/Latency - HTTP",
"type": "row"
},
"panels": [
{
"aliasColors": {},
"bars": false,
@ -494,7 +491,7 @@
"h": 8,
"w": 12,
"x": 0,
"y": 15
"y": 7
},
"hiddenSeries": false,
"id": 19,
@ -596,7 +593,7 @@
"h": 8,
"w": 12,
"x": 12,
"y": 15
"y": 7
},
"hiddenSeries": false,
"id": 31,
@ -691,7 +688,7 @@
"h": 8,
"w": 12,
"x": 0,
"y": 23
"y": 15
},
"hiddenSeries": false,
"id": 18,
@ -792,7 +789,7 @@
"h": 8,
"w": 12,
"x": 12,
"y": 23
"y": 15
},
"hiddenSeries": false,
"id": 32,
@ -873,6 +870,10 @@
"align": false,
"alignLevel": null
}
}
],
"title": "Throughput/Latency - HTTP",
"type": "row"
},
{
"collapsed": true,
@ -881,7 +882,7 @@
"h": 1,
"w": 24,
"x": 0,
"y": 31
"y": 15
},
"id": 34,
"panels": [
@ -891,14 +892,14 @@
"dashLength": 10,
"dashes": false,
"datasource": "Dapr",
"description": "",
"description": "This charts shows the turn-around latency when user app calls Dapr API. For example, you can understand each statestore and service invocation performance.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 32
"y": 8
},
"hiddenSeries": false,
"id": 36,
@ -927,13 +928,13 @@
"steppedLine": false,
"targets": [
{
"expr": "histogram_quantile(0.95, sum(rate(dapr_grpc_io_client_roundtrip_latency_bucket{app_id=~\"$dapr_app_id\", grpc_client_method=~\"dapr.Dapr/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_client_method))",
"legendFormat": "[95p] - {{grpc_client_method}} ({{app_id}})",
"expr": "histogram_quantile(0.95, sum(rate(dapr_grpc_io_server_server_latency_bucket{app_id=~\"$dapr_app_id\", grpc_server_method=~\"dapr.Dapr/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_server_method))",
"legendFormat": "[95p] - {{grpc_server_method}} ({{app_id}})",
"refId": "A"
},
{
"expr": "histogram_quantile(0.75, sum(rate(dapr_grpc_io_client_roundtrip_latency_bucket{app_id=~\"$dapr_app_id\", grpc_client_method=~\"dapr.Dapr/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_client_method))",
"legendFormat": "[75p] {{grpc_client_method}} ({{app_id}})",
"expr": "histogram_quantile(0.75, sum(rate(dapr_grpc_io_server_server_latency_bucket{app_id=~\"$dapr_app_id\", grpc_server_method=~\"dapr.Dapr/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_server_method))",
"legendFormat": "[75p] {{grpc_server_method}} ({{app_id}})",
"refId": "B"
}
],
@ -984,14 +985,14 @@
"dashLength": 10,
"dashes": false,
"datasource": "Dapr",
"description": "",
"description": "This charts shows completed request rate (rps) when User app calls Dapr.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 32
"y": 8
},
"hiddenSeries": false,
"id": 38,
@ -1020,8 +1021,8 @@
"steppedLine": false,
"targets": [
{
"expr": "sum by (app_id, grpc_client_method, grpc_client_status) (rate(dapr_grpc_io_client_completed_rpcs{app_id=~\"$dapr_app_id\", grpc_client_method=~\"dapr.Dapr/.*\"}[5m]))",
"legendFormat": "{{grpc_client_status}} {{grpc_client_method}} ({{app_id}})",
"expr": "sum by (app_id, grpc_server_method, grpc_server_status) (rate(dapr_grpc_io_server_completed_rpcs{app_id=~\"$dapr_app_id\", grpc_server_method=~\"dapr.Dapr/.*\"}[5m]))",
"legendFormat": "{{grpc_server_status}} {{grpc_server_method}} ({{app_id}})",
"refId": "B"
}
],
@ -1072,14 +1073,14 @@
"dashLength": 10,
"dashes": false,
"datasource": "Dapr",
"description": "",
"description": "This charts shows the inbound request latency from Dapr to App. You can analyze App's API endpoint performance.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 40
"y": 16
},
"hiddenSeries": false,
"id": 40,
@ -1108,13 +1109,13 @@
"steppedLine": false,
"targets": [
{
"expr": "histogram_quantile(0.95, sum(rate(dapr_grpc_io_server_server_latency_bucket{app_id=~\"$dapr_app_id\", grpc_server_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_server_method))",
"legendFormat": "[95p] {{grpc_server_method}} ({{app_id}})",
"expr": "histogram_quantile(0.95, sum(rate(dapr_grpc_io_client_roundtrip_latency_bucket{app_id=~\"$dapr_app_id\", grpc_client_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_client_method))",
"legendFormat": "[95p] {{grpc_client_method}} ({{app_id}})",
"refId": "A"
},
{
"expr": "histogram_quantile(0.75, sum(rate(dapr_grpc_io_server_server_latency_bucket{app_id=~\"$dapr_app_id\", grpc_server_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_server_method))",
"legendFormat": "[75p] {{grpc_server_method}} ({{app_id}})",
"expr": "histogram_quantile(0.75, sum(rate(dapr_grpc_io_client_roundtrip_latency_bucket{app_id=~\"$dapr_app_id\", grpc_client_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m])) by (le, app_id, grpc_client_method))",
"legendFormat": "[75p] {{grpc_client_method}} ({{app_id}})",
"refId": "B"
}
],
@ -1172,7 +1173,7 @@
"h": 8,
"w": 12,
"x": 12,
"y": 40
"y": 16
},
"hiddenSeries": false,
"id": 42,
@ -1201,8 +1202,8 @@
"steppedLine": false,
"targets": [
{
"expr": "sum by (app_id, grpc_server_method, grpc_server_status) (rate(dapr_grpc_io_server_completed_rpcs{app_id=~\"$dapr_app_id\", grpc_server_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m]))",
"legendFormat": "{{grpc_server_status}} {{grpc_server_method}} ({{app_id}})",
"expr": "sum by (app_id, grpc_client_method, grpc_client_status) (rate(dapr_grpc_io_client_roundtrip_latency_bucket{app_id=~\"$dapr_app_id\", grpc_client_method=~\"daprclient.DaprClient/.*\", kubernetes_namespace=\"$namespace\"}[5m]))",
"legendFormat": "{{grpc_client_status}} {{grpc_client_method}} ({{app_id}})",
"refId": "B"
}
],
@ -1252,27 +1253,24 @@
"type": "row"
},
{
"collapsed": false,
"collapsed": true,
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 32
"y": 16
},
"id": 52,
"panels": [],
"title": "Components",
"type": "row"
},
"panels": [
{
"datasource": null,
"description": "",
"description": "This shows the number of configured components. For example, it will shows \"2\" if you configure redis statestore and redis pubsub components. ",
"gridPos": {
"h": 8,
"w": 6,
"x": 0,
"y": 33
"y": 9
},
"id": 56,
"options": {
@ -1320,11 +1318,12 @@
{
"cacheTimeout": null,
"datasource": null,
"description": "This shows the number of initialized components. This number must be the same as loaded components. Otherwise, Daprd fails to initialize some of components.",
"gridPos": {
"h": 8,
"w": 6,
"x": 6,
"y": 33
"y": 9
},
"id": 54,
"links": [],
@ -1386,13 +1385,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This chart shows the number component initialization failures with the reasons.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 33
"y": 9
},
"hiddenSeries": false,
"id": 58,
@ -1467,34 +1467,36 @@
"align": false,
"alignLevel": null
}
}
],
"title": "Components",
"type": "row"
},
{
"collapsed": false,
"collapsed": true,
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 41
"y": 17
},
"id": 44,
"panels": [],
"title": "Actor",
"type": "row"
},
"panels": [
{
"aliasColors": {},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This chart shows how many actors are activated.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 42
"y": 10
},
"hiddenSeries": false,
"id": 64,
@ -1523,12 +1525,12 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_actor_activated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (actor_type) -1",
"expr": "dapr_runtime_actor_activated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}",
"legendFormat": "OK {{actor_type}}",
"refId": "A"
},
{
"expr": "count (rate(dapr_runtime_actor_activated_failed_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (actor_type) -1",
"expr": "dapr_runtime_actor_activated_failed_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}",
"legendFormat": "Error {{actor_type}}",
"refId": "C"
}
@ -1580,13 +1582,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This chart shows how many actors are deactivated.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 42
"y": 10
},
"hiddenSeries": false,
"id": 65,
@ -1615,12 +1618,12 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_actor_deactivated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (actor_type) -1",
"expr": "dapr_runtime_actor_deactivated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}",
"legendFormat": "OK {{actor_type}}",
"refId": "A"
},
{
"expr": "count (rate(dapr_runtime_actor_deactivated_failed_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (actor_type) -1",
"expr": "dapr_runtime_actor_deactivated_failed_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}",
"legendFormat": "Error {{actor_type}}",
"refId": "C"
}
@ -1672,13 +1675,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This shows when actor is rebalanced. This operation can make the activated actors deactivated and move actor to the other hosts.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 42
"y": 10
},
"hiddenSeries": false,
"id": 63,
@ -1707,7 +1711,7 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_actor_rebalanced_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id) -1",
"expr": "dapr_runtime_actor_rebalanced_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}",
"intervalFactor": 1,
"legendFormat": "{{app_id}}",
"refId": "B"
@ -1760,13 +1764,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This shows when Daprd reports host status to placement service. Non-Actor service reports host status in the beginning. Actor service reports host status to placement periodically. If there is a failure, virtual actors will not be distributed properly.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 9,
"x": 0,
"y": 49
"y": 17
},
"hiddenSeries": false,
"id": 46,
@ -1792,15 +1797,15 @@
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"steppedLine": true,
"targets": [
{
"expr": "sum(dapr_runtime_actor_status_report_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}) by (app_id)",
"expr": "rate(dapr_runtime_actor_status_report_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"legendFormat": "OK ({{app_id}})",
"refId": "A"
},
{
"expr": "sum(dapr_runtime_actor_status_report_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}) by (app_id)",
"expr": "rate(dapr_runtime_actor_status_report_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"legendFormat": "Error ({{app_id}})",
"refId": "B"
}
@ -1809,7 +1814,7 @@
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Report status to placement",
"title": "Status report status",
"tooltip": {
"shared": true,
"sort": 0,
@ -1825,12 +1830,12 @@
},
"yaxes": [
{
"format": "short",
"format": "none",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
},
{
"format": "short",
@ -1838,7 +1843,7 @@
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
}
],
"yaxis": {
@ -1849,11 +1854,12 @@
{
"cacheTimeout": null,
"datasource": null,
"description": "This shows the failures when Daprd reports host status to placement.",
"gridPos": {
"h": 7,
"w": 5,
"x": 9,
"y": 49
"y": 17
},
"id": 59,
"links": [],
@ -1904,13 +1910,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This shows the placement table update status based on the response from placement service. Daprd maintains the actor placement table in its memory. This table is periodically updated.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 10,
"x": 14,
"y": 49
"y": 17
},
"hiddenSeries": false,
"id": 61,
@ -1939,7 +1946,7 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_actor_table_operation_recv_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id, operation) -1",
"expr": "sum(dapr_runtime_actor_table_operation_recv_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}) by (app_id, operation)",
"format": "time_series",
"intervalFactor": 3,
"legendFormat": "{{operation}} ({{app_id}})",
@ -1986,6 +1993,10 @@
"align": false,
"alignLevel": null
}
}
],
"title": "Actor",
"type": "row"
},
{
"collapsed": true,
@ -1994,7 +2005,7 @@
"h": 1,
"w": 24,
"x": 0,
"y": 56
"y": 18
},
"id": 50,
"panels": [
@ -2004,13 +2015,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This chart shows when mTLS is initialized, which means root cert is loaded and workload cert is issued from sentry, when runtime starts.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 7,
"x": 0,
"y": 35
"y": 11
},
"hiddenSeries": false,
"id": 48,
@ -2039,13 +2051,13 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_mtls_init_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id) - 1",
"expr": "rate(dapr_runtime_mtls_init_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"intervalFactor": 2,
"legendFormat": "OK {{app_id}}",
"refId": "A"
},
{
"expr": "count (rate(dapr_runtime_mtls_init_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id) - 1",
"expr": "rate(dapr_runtime_mtls_init_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"intervalFactor": 2,
"legendFormat": "Error {{app_id}}",
"refId": "B"
@ -2055,7 +2067,7 @@
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "mTLS initialization",
"title": "mTLS initialization status",
"tooltip": {
"shared": true,
"sort": 0,
@ -2076,7 +2088,7 @@
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
},
{
"format": "short",
@ -2084,7 +2096,7 @@
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
}
],
"yaxis": {
@ -2099,7 +2111,7 @@
"h": 8,
"w": 5,
"x": 7,
"y": 35
"y": 11
},
"id": 67,
"links": [],
@ -2150,13 +2162,14 @@
"dashLength": 10,
"dashes": false,
"datasource": null,
"description": "This chart shows when workload certificate is rotated.",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 7,
"x": 12,
"y": 35
"y": 11
},
"hiddenSeries": false,
"id": 66,
@ -2176,6 +2189,7 @@
"dataLinks": []
},
"percentage": false,
"pluginVersion": "6.6.2",
"pointradius": 2,
"points": false,
"renderer": "flot",
@ -2185,13 +2199,15 @@
"steppedLine": false,
"targets": [
{
"expr": "count (rate(dapr_runtime_mtls_workload_cert_rotated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id) - 1",
"expr": "rate(dapr_runtime_mtls_workload_cert_rotated_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"format": "time_series",
"instant": false,
"intervalFactor": 2,
"legendFormat": "OK {{app_id}}",
"refId": "A"
},
{
"expr": "count (rate(dapr_runtime_mtls_workload_cert_rotated_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])) by (app_id) - 1",
"expr": "rate(dapr_runtime_mtls_workload_cert_rotated_fail_total{app_id=~\"$dapr_app_id\", kubernetes_namespace=\"$namespace\"}[5m])",
"intervalFactor": 2,
"legendFormat": "Error {{app_id}}",
"refId": "B"
@ -2201,7 +2217,7 @@
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Workload certificate rotation",
"title": "Workload certificate rotation status",
"tooltip": {
"shared": true,
"sort": 0,
@ -2222,7 +2238,7 @@
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
},
{
"format": "short",
@ -2230,7 +2246,7 @@
"logBase": 1,
"max": null,
"min": null,
"show": true
"show": false
}
],
"yaxis": {
@ -2245,7 +2261,7 @@
"h": 8,
"w": 5,
"x": 19,
"y": 35
"y": 11
},
"id": 68,
"links": [],
@ -2304,9 +2320,8 @@
{
"allValue": null,
"current": {
"selected": true,
"text": "default",
"value": "default"
"text": "longhaul-test",
"value": "longhaul-test"
},
"datasource": "Dapr",
"definition": "label_values(dapr_runtime_component_loaded,kubernetes_namespace)",
@ -2330,9 +2345,12 @@
{
"allValue": null,
"current": {
"text": "",
"text": "feed-generator + hashtag-actor + hashtag-counter + message-analyzer",
"value": [
""
"feed-generator",
"hashtag-actor",
"hashtag-counter",
"message-analyzer"
]
},
"datasource": "Dapr",
@ -2357,7 +2375,7 @@
]
},
"time": {
"from": "now-6h",
"from": "now-3h",
"to": "now"
},
"timepicker": {
@ -2377,5 +2395,5 @@
"timezone": "",
"title": "Dapr Sidecar Dashboard",
"uid": "Ym9RqIuWk",
"version": 2
"version": 39
}