Create a validation plan to determine that there are no visual changes to our dashboards after we replace the deprecated grafonnet-lib library with the new grafonnet library in our wrapper library.
This will need to include Dedicated, which have their own custom dashboards, and will need to spin up a sandbox to validate.
@reprazent I've been thinking a little bit on how we might do this, at least for the dashboards in the Runbooks repository.
To maintain the best possible experience for our users, I think it's best that for a period of time we have both the deprecated graph panel dashboards and new time series panel dashboards available at the same time. Named something like: sentry: Overview and sentry: Overview - Deprecated. We could even have a banner at the top of the deprecated dashboard pointing at the new one.
This way, if there are any issues with the new time series panel dashboards, our users will be able to inform us and continue with their day uninterrupted while we fix it.
So far, with the work I've done, it feels like the easiest way to achieve this would add some additional logic (either in a parameter or internally) in the top level functions such as serviceDashboard.overview() that would enable the time series panel generation that we could turn on with an environment variable. Then we just generate the dashboards twice, once for each panel type.
// dashboards/sentry/main.dashboard.jsonnetserviceDashboard.overview('sentry',environmentSelectorHash=environmentSelector,// Set paramerter based on environment variable.enableTimeSeries=std.extVar("ENABLE_TIME_SERIES"),).overviewTrailer()
// libsonnet/gitlab-dashboards/service_dashboard.libsonnetlocaloverviewDashboard(type,title='Overview',uid=null,startRow=0,environmentSelectorHash=defaultEnvironmentSelector,saturationEnvironmentSelectorHash=defaultEnvironmentSelector,omitEnvironmentDropdown=false,includeStandardEnvironmentAnnotations=true,showProvisioningDetails=true,showSystemDiagrams=true,expectMultipleSeries=false,// Additional parameter defaulting to false.enableTimeSeriesPanels=false,)=
Then after a period of time when we're satisfied we've fixed any issues, we update it so we only generate time series panel dashboards and remove the deprecated dashboards.
This is all a bit of extra effort, but I think it's work it to ensure a good experience for our users, but would be great to hear your thoughts.