From 7c32e2ec78b533d5d214785babe4935dd97aa064 Mon Sep 17 00:00:00 2001 From: Janae Quinones <62717289+Janaeq@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:52:23 -0400 Subject: [PATCH 1/6] Create kong_overview_openmetrics_v3 --- .../dashboards/kong_overview_openmetrics_v3 | 1148 +++++++++++++++++ 1 file changed, 1148 insertions(+) create mode 100644 kong/assets/dashboards/kong_overview_openmetrics_v3 diff --git a/kong/assets/dashboards/kong_overview_openmetrics_v3 b/kong/assets/dashboards/kong_overview_openmetrics_v3 new file mode 100644 index 0000000000000..7da83238ec3cb --- /dev/null +++ b/kong/assets/dashboards/kong_overview_openmetrics_v3 @@ -0,0 +1,1148 @@ +{ + "title":"Kong V3 Overview [OpenMetrics]", + "description":"Using this dashboard, you can get a high-level view of your Kong metrics so you can monitor the performance of Kong.\n\nTo learn more about the Datadog Kong integration, see:\n\n- [Datadog Kong integration documentation](https://docs.datadoghq.com/integrations/kong/?tabs=host).\n\n- [Monitoring Kong Performance Metrics](https://www.datadoghq.com/blog/monitor-kong-datadog/).\n\n\nYou can clone this dashboard, copy and paste widgets from other out-of-the-box dashboards, and create your own visualizations for your custom applications. (cloned) (cloned)", + "widgets":[ + { + "id":2101495049883950, + "definition":{ + "title":"", + "title_align":"center", + "banner_img":"/static/images/logos/kong_large.svg", + "show_title":false, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":1282662978160396, + "definition":{ + "type":"note", + "content":"Using this dashboard, you can get a high-level view of your Kong metrics so you can monitor the performance of Kong.", + "background_color":"transparent", + "font_size":"16", + "text_align":"left", + "vertical_align":"top", + "show_tick":false, + "tick_pos":"50%", + "tick_edge":"left", + "has_padding":true + }, + "layout":{ + "x":0, + "y":0, + "width":4, + "height":2 + } + }, + { + "id":2949261894225096, + "definition":{ + "type":"note", + "content":"\n\n**To learn more about the Datadog Kong integration, see:**\n\n- [Datadog Kong integration documentation](https://docs.datadoghq.com/integrations/kong/?tabs=host).\n\n- [Monitoring Kong Performance Metrics](https://www.datadoghq.com/blog/monitor-kong-datadog/).", + "background_color":"transparent", + "font_size":"12", + "text_align":"left", + "vertical_align":"top", + "show_tick":false, + "tick_pos":"50%", + "tick_edge":"left", + "has_padding":true + }, + "layout":{ + "x":4, + "y":0, + "width":4, + "height":2 + } + } + ] + }, + "layout":{ + "x":0, + "y":0, + "width":8, + "height":5 + } + }, + { + "id":1272699396363952, + "definition":{ + "title":"Basic Activity Monitor", + "title_align":"center", + "background_color":"white", + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":7345464978354066, + "definition":{ + "title":"DB status", + "title_size":"16", + "title_align":"left", + "type":"check_status", + "check":"kong.datastore.reachable", + "grouping":"cluster", + "group_by":[ + + ], + "tags":[ + "*" + ] + }, + "layout":{ + "x":0, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":8394607553635904, + "definition":{ + "title":"OM endpoint status", + "title_size":"16", + "title_align":"left", + "type":"check_status", + "check":"kong.openmetrics.health", + "grouping":"cluster", + "group_by":[ + + ], + "tags":[ + "*" + ] + }, + "layout":{ + "x":2, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":3857771035571498, + "definition":{ + "title":"Total connections", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:total,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":2, + "timeseries_background":{ + "yaxis":{ + "include_zero":false + }, + "type":"area" + } + }, + "layout":{ + "x":0, + "y":2, + "width":2, + "height":2 + } + }, + { + "id":4929722074464858, + "definition":{ + "title":"Bandwidth", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"sum:kong.bandwidth.bytes.count{$scope}.as_count()" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":2, + "timeseries_background":{ + "yaxis":{ + "include_zero":false + }, + "type":"bars" + } + }, + "layout":{ + "x":2, + "y":2, + "width":2, + "height":2 + } + } + ] + }, + "layout":{ + "x":8, + "y":0, + "width":4, + "height":5 + } + }, + { + "id":2575471079794398, + "definition":{ + "title":"Connections", + "background_color":"blue", + "show_title":true, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":2453445216166472, + "definition":{ + "title":"Active", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:active,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":0, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":8670635201532290, + "definition":{ + "title":"Reading", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:reading,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":2, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":5608747059626248, + "definition":{ + "title":"Writing", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:writing,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":4, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":6249831228701896, + "definition":{ + "title":"Waiting", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:waiting,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":6, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":3368145340682354, + "definition":{ + "title":"Accepted", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:accepted,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":8, + "y":0, + "width":2, + "height":2 + } + }, + { + "id":1851213606382248, + "definition":{ + "title":"Handled", + "title_size":"16", + "title_align":"left", + "time":{ + + }, + "type":"query_value", + "requests":[ + { + "formulas":[ + { + "number_format":{ + "unit":{ + "label":" ", + "type":"custom_unit_label" + } + }, + "formula":"query1" + } + ], + "queries":[ + { + "aggregator":"avg", + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.nginx.connections.total{state:handled,$scope}" + } + ], + "response_format":"scalar" + } + ], + "autoscale":true, + "precision":0 + }, + "layout":{ + "x":10, + "y":0, + "width":2, + "height":2 + } + } + ] + }, + "layout":{ + "x":0, + "y":5, + "width":12, + "height":3 + } + }, + { + "id":6529022583426052, + "definition":{ + "title":"HTTP Status Codes", + "background_color":"green", + "show_title":true, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":2682295870083266, + "definition":{ + "title":"Count", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"auto", + "legend_columns":[ + "avg", + "min", + "max", + "value", + "sum" + ], + "time":{ + + }, + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.http.requests.count{$scope} by {code}.as_count()" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"green", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ] + }, + "layout":{ + "x":0, + "y":0, + "width":12, + "height":4 + } + } + ] + }, + "layout":{ + "x":0, + "y":8, + "width":12, + "height":5 + } + }, + { + "id":8791240349460846, + "definition":{ + "title":"Memory", + "title_align":"center", + "background_color":"vivid_blue", + "show_title":true, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":102600120516942, + "definition":{ + "title":"Allocated slabs in a shared_dict", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"horizontal", + "legend_columns":[ + "min", + "max", + "avg", + "value" + ], + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.memory.lua.shared_dict.bytes{$scope} by {shared_dict}" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"blue", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ], + "yaxis":{ + "include_zero":true, + "label":"", + "scale":"linear", + "min":"auto", + "max":"auto" + }, + "markers":[ + + ] + }, + "layout":{ + "x":0, + "y":0, + "width":4, + "height":4 + } + }, + { + "id":5690041729436510, + "definition":{ + "title":"Total capacity of a shared_dict", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"auto", + "legend_columns":[ + "avg", + "min", + "max", + "value" + ], + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.memory.lua.shared_dict.total_bytes{$scope} by {shared_dict}" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"blue", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ], + "yaxis":{ + "include_zero":true, + "label":"", + "scale":"linear", + "min":"auto", + "max":"auto" + }, + "markers":[ + + ] + }, + "layout":{ + "x":4, + "y":0, + "width":4, + "height":4 + } + }, + { + "id":7065370977757784, + "definition":{ + "title":"Allocated in worker Lua VM", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"auto", + "legend_columns":[ + "avg", + "min", + "max", + "value", + "sum" + ], + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.memory.workers.lua.vms.bytes{$scope} by {kong_subsystem}" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"blue", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ] + }, + "layout":{ + "x":8, + "y":0, + "width":4, + "height":4 + } + } + ] + }, + "layout":{ + "x":0, + "y":0, + "width":12, + "height":5, + "is_column_break":true + } + }, + { + "id":6099126117266644, + "definition":{ + "title":"Latency", + "title_align":"center", + "background_color":"vivid_green", + "show_title":true, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":3102096035432604, + "definition":{ + "title":"Count", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"horizontal", + "legend_columns":[ + "min", + "max", + "avg", + "value" + ], + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.latency.count{$scope} by {service}.as_count()" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"green", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ], + "yaxis":{ + "include_zero":true, + "label":"", + "scale":"linear", + "min":"auto", + "max":"auto" + }, + "markers":[ + + ] + }, + "layout":{ + "x":0, + "y":0, + "width":6, + "height":2 + } + }, + { + "id":4246162448628126, + "definition":{ + "title":"Bucket", + "title_size":"16", + "title_align":"left", + "show_legend":true, + "legend_layout":"horizontal", + "legend_columns":[ + "min", + "max", + "avg", + "value" + ], + "time":{ + + }, + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.kong.latency.ms.bucket{$scope} by {service}.as_count()" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"green", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ], + "yaxis":{ + "include_zero":true, + "label":"", + "scale":"linear", + "min":"auto", + "max":"auto" + }, + "markers":[ + + ] + }, + "layout":{ + "x":6, + "y":0, + "width":6, + "height":2 + } + }, + { + "id":7995936833733852, + "definition":{ + "title":"Total", + "title_size":"16", + "title_align":"left", + "show_legend":false, + "legend_layout":"horizontal", + "legend_columns":[ + "min", + "max", + "avg", + "value" + ], + "time":{ + + }, + "type":"timeseries", + "requests":[ + { + "formulas":[ + { + "formula":"query1" + } + ], + "queries":[ + { + "data_source":"metrics", + "name":"query1", + "query":"avg:kong.kong.latency.ms.sum{$scope} by {service}.as_count()" + } + ], + "response_format":"timeseries", + "style":{ + "palette":"green", + "line_type":"solid", + "line_width":"normal" + }, + "display_type":"bars" + } + ], + "yaxis":{ + "include_zero":true, + "label":"", + "scale":"linear", + "min":"auto", + "max":"auto" + }, + "markers":[ + + ] + }, + "layout":{ + "x":0, + "y":2, + "width":12, + "height":2 + } + } + ] + }, + "layout":{ + "x":0, + "y":5, + "width":12, + "height":5 + } + }, + { + "id":1226269205466820, + "definition":{ + "title":"Logs", + "title_align":"center", + "background_color":"blue", + "show_title":true, + "type":"group", + "layout_type":"ordered", + "widgets":[ + { + "id":902203802588548, + "definition":{ + "title":"Log Volume by Status", + "title_size":"16", + "title_align":"left", + "type":"toplist", + "requests":[ + { + "queries":[ + { + "compute":{ + "aggregation":"count" + }, + "data_source":"logs", + "group_by":[ + { + "facet":"status", + "limit":10, + "sort":{ + "aggregation":"count", + "order":"desc" + } + } + ], + "indexes":[ + "*" + ], + "name":"query1", + "search":{ + "query":"source:kong" + } + } + ], + "response_format":"scalar", + "formulas":[ + { + "formula":"query1" + } + ], + "sort":{ + "count":10, + "order_by":[ + { + "type":"formula", + "index":0, + "order":"desc" + } + ] + } + } + ] + }, + "layout":{ + "x":0, + "y":0, + "width":4, + "height":2 + } + }, + { + "id":6626156661629262, + "definition":{ + "title":"Error Logs", + "title_size":"16", + "title_align":"left", + "requests":[ + { + "response_format":"event_list", + "query":{ + "data_source":"logs_stream", + "query_string":"status:error source:kong", + "indexes":[ + + ], + "storage":"hot", + "sort":{ + "order":"desc", + "column":"timestamp" + } + }, + "columns":[ + { + "field":"status_line", + "width":"auto" + }, + { + "field":"timestamp", + "width":"auto" + }, + { + "field":"host", + "width":"auto" + }, + { + "field":"service", + "width":"auto" + }, + { + "field":"content", + "width":"compact" + } + ] + } + ], + "type":"list_stream" + }, + "layout":{ + "x":4, + "y":0, + "width":8, + "height":4 + } + }, + { + "id":6499094635168520, + "definition":{ + "title":"Log Volume by HTTP.url_path", + "title_size":"16", + "title_align":"left", + "type":"toplist", + "requests":[ + { + "queries":[ + { + "compute":{ + "aggregation":"count" + }, + "data_source":"logs", + "group_by":[ + { + "facet":"@http.url_details.path", + "limit":10, + "sort":{ + "aggregation":"count", + "order":"desc" + } + } + ], + "indexes":[ + "*" + ], + "name":"query1", + "search":{ + "query":"source:kong" + } + } + ], + "response_format":"scalar", + "formulas":[ + { + "formula":"query1" + } + ], + "sort":{ + "count":10, + "order_by":[ + { + "type":"formula", + "index":0, + "order":"desc" + } + ] + } + } + ] + }, + "layout":{ + "x":0, + "y":2, + "width":4, + "height":2 + } + } + ] + }, + "layout":{ + "x":0, + "y":10, + "width":12, + "height":5 + } + } + ], + "template_variables":[ + { + "name":"scope", + "available_values":[ + + ], + "default":"*" + } + ], + "layout_type":"ordered", + "notify_list":[ + + ], + "reflow_type":"fixed" +} From 0ba45e09dbde7e27578a34261627a4c53ab43bf4 Mon Sep 17 00:00:00 2001 From: Janae Quinones <62717289+Janaeq@users.noreply.github.com> Date: Mon, 21 Jul 2025 18:50:19 -0400 Subject: [PATCH 2/6] updates on Kong dashboard Co-authored-by: Sarah Witt --- kong/assets/dashboards/kong_overview_openmetrics_v3 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kong/assets/dashboards/kong_overview_openmetrics_v3 b/kong/assets/dashboards/kong_overview_openmetrics_v3 index 7da83238ec3cb..e357f5d12ba59 100644 --- a/kong/assets/dashboards/kong_overview_openmetrics_v3 +++ b/kong/assets/dashboards/kong_overview_openmetrics_v3 @@ -1,6 +1,6 @@ { - "title":"Kong V3 Overview [OpenMetrics]", - "description":"Using this dashboard, you can get a high-level view of your Kong metrics so you can monitor the performance of Kong.\n\nTo learn more about the Datadog Kong integration, see:\n\n- [Datadog Kong integration documentation](https://docs.datadoghq.com/integrations/kong/?tabs=host).\n\n- [Monitoring Kong Performance Metrics](https://www.datadoghq.com/blog/monitor-kong-datadog/).\n\n\nYou can clone this dashboard, copy and paste widgets from other out-of-the-box dashboards, and create your own visualizations for your custom applications. (cloned) (cloned)", + "title":"Kong V3+ Overview [OpenMetrics]", + "description":"Using this dashboard, you can get a high-level view of your Kong metrics so you can monitor the performance of Kong.\n\nTo learn more about the Datadog Kong integration, see:\n\n- [Datadog Kong integration documentation](https://docs.datadoghq.com/integrations/kong/?tabs=host).\n\n- [Monitoring Kong Performance Metrics](https://www.datadoghq.com/blog/monitor-kong-datadog/).\n\n\nYou can clone this dashboard, copy and paste widgets from other out-of-the-box dashboards, and create your own visualizations for your custom applications.", "widgets":[ { "id":2101495049883950, @@ -780,7 +780,7 @@ { "data_source":"metrics", "name":"query1", - "query":"avg:kong.latency.count{$scope} by {service}.as_count()" + "query":"avg:kong.kong.latency.ms.bucket{$scope} by {service}.as_count()" } ], "response_format":"timeseries", From 51f9c6cd120e5726b70ae1c1066552767c21a664 Mon Sep 17 00:00:00 2001 From: Janae Quinones Date: Mon, 21 Jul 2025 19:00:15 -0400 Subject: [PATCH 3/6] update dashboard for kong metrics Date: Mon, 21 Jul 2025 19:22:37 -0400 Subject: [PATCH 4/6] update dashboard title for Date: Tue, 22 Jul 2025 13:56:58 -0400 Subject: [PATCH 5/6] Add updated dashbaord to manifest --- kong/manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/kong/manifest.json b/kong/manifest.json index 8d12b6e24df33..849c3d7e60dd8 100644 --- a/kong/manifest.json +++ b/kong/manifest.json @@ -58,6 +58,7 @@ "auto_install": true }, "dashboards": { + "Kong Overview Openmetrics v3+": "assets/dashboards/kong_overview_openmetrics_v3", "Kong Overview OpenMetrics": "assets/dashboards/kong_overview_openmetrics.json", "Kong Overview": "assets/dashboards/kong_overview.json", "Kong API": "assets/dashboards/kong_api.json" From 3477101da13f826321cc1f6e8f6b2bb67564db3e Mon Sep 17 00:00:00 2001 From: Janae Quinones Date: Tue, 22 Jul 2025 17:08:24 -0400 Subject: [PATCH 6/6] update v3 dashboard title --- kong/assets/dashboards/kong_overview_openmetrics_v3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kong/assets/dashboards/kong_overview_openmetrics_v3 b/kong/assets/dashboards/kong_overview_openmetrics_v3 index eee0823938a32..9518f5be839a5 100644 --- a/kong/assets/dashboards/kong_overview_openmetrics_v3 +++ b/kong/assets/dashboards/kong_overview_openmetrics_v3 @@ -1,5 +1,5 @@ { - "title":"Kong Overview (V3) [OpenMetrics]", "description":"Using this dashboard, you can get a high-level view of your Kong metrics so you can monitor the performance of Kong.\n\nTo learn more about the Datadog Kong integration, see:\n\n- [Datadog Kong integration documentation](https://docs.datadoghq.com/integrations/kong/?tabs=host).\n\n- [Monitoring Kong Performance Metrics](https://www.datadoghq.com/blog/monitor-kong-datadog/).\n\n\nYou can clone this dashboard, copy and paste widgets from other out-of-the-box dashboards, and create your own visualizations for your custom applications.", "widgets":[ {