cryostatio / cryostat-grafana-dashboard Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Something in #68 , one of the last commits, broke the object allocation breakout panel:
Using a GitHub workflow instead of the Quay build automation would give us some more flexibility over how the images are tagged. Ideally our development versions could be tagged 'X.Y.Z-dev/snapshot', to bring them in line with other Cryostat images. After reading this issue actions/runner-images#1445, I'm unsure whether this would help or hurt the issue of DockerHub rate limiting.
That's a good point. Having the aggregate panel to help identify correlations probably makes sense for threads as well as allocations. Yeah, and having the cpu loads already normalized is convenient too.
I'm not sure whether Cryostat already has this feature, but having the ability to filter out allocation size below a specified threshold might help with noise in the aggregated chart. I imagine there's probably a lot of smaller allocations, but in most cases you care more about trends between object types that have large/sustained allocations. This could allow you to do some graph re-scaling as well, spacing out the "important" lines more, making them easier to differentiate.
Originally posted by @roberttoyonaga in cryostatio/cryostat#135 (comment)
The env var GF_INSTALL_PLUGINS=grafana-simple-json-datasource
is not set and the grafana.ini
does not properly list the plugin location within the container image, which leads to the Grafana container not registering the plugin and not being able to communicate with the jfr-datasource
container.
The newest 7.x release at this time is 7.5.15.
See cryostatio/cryostat#135 (comment)
Currently, we display some high-level CPU usage or thread activity overview panels:
The jdk.ThreadCPULoad
event raw data looks like this in JMC:
While jdk.ObjectAllocationSample
looks like this:
Therefore, it seems reasonable that we could build Grafana panels for jdk.ThreadCPULoad
similar to the ones we already have for jdk.ObjectAllocationSample
:
The thread load aggregate single panel could add both system mode and user mode load into one value with the thread name as the key, whereas the breakout dashboard would have a panel for each thread name key and a timeseries line for each system mode and user mode load.
When testing Pod Security Admission changes in the operator, I noticed the following error in Minikube:
Warning Failed 35m (x4 over 35m) kubelet Error: container has runAsNonRoot and image has non-numeric user (grafana), cannot verify user is non-root (pod: "cryostat-sample-557bc597-xjwkj_cryostat-operator-system(c11fabdc-aaf8-4f16-b3e5-ed9c534666eb)", container: cryostat-sample-grafana)
See cryostatio/cryostat-core#168 . Something similar should be done here.
See also dependabot/dependabot-core#6067
The Grafana Dashboard has't been updated and needs redesigning to support new events. Here are some of the things to look into:
Cryostat
or probably the recording name #2Datasource task:
In Grafana 11, which will be released in preview in April 2024 and generally available in May, we will change the default behavior of the angular_support_enabled configuration parameter to turn off support for AngularJS based plugins
Looks like in Grafana 11, support for deprecated Angular plugin will be turned off by default. That will be removed completely in Grafana 12. Cryostat's dashboard panels (pretty much all panels) are using deprecated Angular plugin. https://grafana.com/docs/grafana/latest/developers/angular_deprecation/
Related to #25. JFR Datasource might need to be migrated too.
https://grafana.com/grafana/plugins/grafana-simple-json-datasource/
https://grafana.com/grafana/plugins/grafana-simple-json-datasource/
We currently use this plugin to link the jfr-datasource
and Grafana dashboards together. This datasource plugin is no longer maintained and we need to build it separately, include it overlaid on top of the Grafana container image, and set an environment variable to get the dashboard to register the plugin. There are alternate plugins that could possibly be used instead, or else there seems to be a way to build the required functionality into the jfr-datasource
itself.
As suggested by @cmah88, we should have some helper texts to explain:
jdk.ObjectAllocationSample
event. Looks good!
One RFE for later, this tags releases with the v
prefix intact. It would be nice to strip this from the tag name when tagging the container image (e.g. v2.4.0 -> 2.4.0) to be consistent with other components.
Originally posted by @ebaron in #38 (review)
See also #19 - maybe this is a duplicate of that?
See #12
Currently, the sub-dashboard that splits out object allocations into separate panels for different classes does so by simply containing a hardcoded list of classes that are filtered for. For example, int[]
here:
However, on the main dashboard, this is done with a wildcard query:
Is there a way to dynamically generate the sub-dashboard so that it has separate panels for each class in the dataset?
Right now, the main dashboard panel for allocations is complete and accurate to the underlying JFR data, but it can be hard to read because the data is too dense. The sub-dashboard splits it out, reducing the density and making it legible, but it is actually representing incomplete data because any class that is not hardcoded to the layout will not be rendered at all.
This script is for developer use. Let's remove the GRAFANA_TAG and only tag builds as latest
.
This would greatly improve user experience as it reduces the amount of steps to see the data points.
Waiting on grafana/grafana#6288.
For now, we need to investigate which time frame is best (currently now-24h <-> now
) based on use cases.
Suggested by @cmah88 :D
Currently the pre-provisioned dashboard is named, well, Dashboard. Should this be ex. Cryostat instead?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.