-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve loading time of Kubernetes package Dashboards #31021
Comments
My suggestion regarding the default kubernetes dashboard optimization is to split it into 2 different dashboards. For example for the number of available/desired/unavailable pods or number of nodes it is most important is to display the current situation in the cluster. While for other visualisations like The two dashboards could like this: Time series dashboard: This grouping can make the dashboards more performant as less queries will be performed simultaneously. |
cc @ChrsMark , @tetianakravchenko , @ruflin, @mlunadia, @gsantoro |
++ on splitting up the dashboards. Will the dashboards link to each other? |
That would be great. We do the same for Istio module to split the control plane from data plane views: |
Yes I was thinking something like Istio tab view! That would be great! Does this allow to set different time ranges to each one? |
I thought by now there is a new / better way on how to link dashboards together. @alexfrancoeur You might be able to point us to the right direction here? |
Thanks for the ping @ruflin. I think there are a number of best practices these integration dashboards can start to leverage. I've listed a bunch here in the past. Kibana has drilldown capabilities in a dashboard (https://www.elastic.co/guide/en/kibana/current/drilldowns.html#create-drilldowns). This is great for creating workflows from dashboard to dashboard. An overview dashboard to a details dashboard for example. We support dashboard to dashboard and dashboard to external URLs (paid feature). For the integrations dashboard, a combination of markdown for general navigation and drilldowns for workflows is probably the best option. If you'd like to sit down with some kibana folks and discuss best practices, we're happy to engage. For example we no longer need to ship 100's of visualizations referenced by a dashboard, we can simplify to package all in a single dashboard JSON now. This is off topic, but while we're on the topic of dashboard linking, I think it's worth raising if we should be linking to solutions as well. There is probably some low hanging fruit here. Rather than taking that context and navigating to a dashboard, we could apply it to a solution view to create solution drilldowns. I hack together this all the time for demos using the URL drilldowns. Meaning if there's a host IP in a dashboard, let's click into that to navigate to a filtered view in the metrics app. Building these experiences as part of our integrations add for a much more integrated experience when onboarding a new data source. If there's interest in collaborating on something like this, let's have a quick chat with myself and @sixstringcode |
Thanks for the list @alexfrancoeur . The drilldown one is the one I was looking for. There lots of other great hints in the issue you linked. About "as value" I just had a conversation with your team and we should figure out ways how to automatically convert it. @ChrsMark @MichaelKatsoulis If we redo the k8s dashboards, lets use these best practices directly as an example and also switch to "value". On the linking to solutions, ++. It is a topic we should also involve @jasonrhodes from unified observability. |
I've been attending the TSDB meeting yesterday and @Mpdreamz showed off a demo for using TSDB in APM. A first version of the metrics parts are merged into main in Elasticsearch and available in the snapshot builds. I think it is also worth trying this out for the k8s data to see what impact it has. My understanding is that currently the storage and query part are available but we can't make use of it yet in Kibana. Also in the package-spec we don't support the time series fields yet. What it means is that we have to adjust the templates manually and see what affect it has. @imotov Tried to find some public docs I can point the team to around mappings and TSDI but was not successful. Is this already available? |
I filed elastic/package-spec#311 to get support for TSDB in the package-spec. |
I read in the best practises and by @ruflin suggestions that moving to lens is the way forward. I don't see or maybe I don't know how some of our tsvb visualisations can be moved to lens. I will give an example regarding
and we want to sum up all the last values of this fields for all deployments. None of the results is the correct one. But lens one extreme! There where discussions about this in elastic/integrations#2159 (comment) and @ChrsMark updated the tsvb query by using series aggregation and grouping by deployment name. But as long as this is not supported in Lens, I don't see how we can use it for such cases. |
Additional thoughts following @ChrsMark suggestions in https://github.com/elastic/enhancements/issues/14008#issuecomment-1088524593 We could have:
|
@MichaelKatsoulis I like your proposal above. It would be great if we could work on these dashboards in collaboration with the team from @flash1293 We can't necessarily achive everything with Lens now and all the other great features in Kibana but we should be able to eventually. Please keep the conversations going. |
I played around with drill down. It doesn't work exactly as demonstrated and documented in https://www.elastic.co/guide/en/kibana/current/drilldowns.html#_create_the_dashboard_drilldown. I was expecting a |
@MichaelKatsoulis This is expected for metric visualizations - the "Go to Dashboard" drilldown is tied to the filter trigger, that means it's only shown in case the visualization can place a filter (and if it happens, it will prompt the user to go to the other dashboard instead). There are no plans for TSVB, but we do plan to add this functionality for Lens metric visualizations: elastic/kibana#122879 |
@flash1293 thanks for the clarification. To be honest I don't understand why it is tied to the filter trigger. and when the user wants to see extra detailed info for the Nodes(currently tsvb but could be lens) it will point to I have currently created drilldown with |
Completely agree, that’s what we will work on for Lens in 8.3 |
|
@flash1293 I agree with your second bullet. That would be a good way. As it is now, there is no way a user can understand there is something more. The word |
@flash1293 Could we arrange a zoom call whenever possible to ask you about best ways to show some metrics in Kibana? I can do things like this. But cannot get to use those two number for a division to get the percentage. |
@katefarrar @mlunadia it would be great for us to try to understand what it is about these dashboards that people want/need/use as we try to think through the infrastructure UI. |
We had a nice discussion with @flash1293 about ways to create some visualizations and we concluded that some things are not possible yet. But they can be in the near future. Ideally we would like to be able to math calculation with the numbers in each vis to get the percentage. |
@jasonrhodes 100% we have plans to tackle this holistically and will for now address any low hanging fruit. We have already started working on establishing a baseline with different discovery activities one of them will be bringing your input in. |
@elastic/infra-monitoring-ui I wonder if there are things we can learn from the optimizations in this issue that could be applied to any other querying we are doing for infra UI. |
I guess there are two things we can do:
|
@miltonhultgren thanks! These sound like good ideas to me. I'm wondering if there are specific optimizations made in the work related to this issue (from @MichaelKatsoulis and others) that we could use to inform how we might optimize our own queries, but you're right that there is likely some work we'll need to do to understand whether that kind of overlap exists. |
Further improvements will take place with the usage of TSDB features. Investigations will take place along with Rally framework. |
We have found some opportunities for optimization in the dashboards::
Top CPU intensive pods gets the max of
kubernetes.container.cpu.usage.core.ns
, then uses derivative aggregation over it and keeps the positive values. We can simply usekubernetes.container.cpu.usage.node.pct
instead and group by the pod name.Same for Top Memory intensive pods
CPU Usage by node sums all cpu usage nanocores per container, then uses a painless script to normalise it to the metricset period and groups by the node name. Instead we can use the node metric
Kubernetes.node.cpu.usage.nanocores
and divide it withkubernetes.node.cpu.allocatable.cores
. Same approach is used in metrics UISame for Memory Usage by node. We can divide
kubernetes.node.memory.usage.bytes
tokubernetes.node.memory.allocatable.bytes
Same approach for network in and out bytes
I tested that by creating a separate dashboard with all those visualisations optimised and the loading time for 24h range decreased from 1m and 10 seconds down to 30 seconds.
The text was updated successfully, but these errors were encountered: