Hi everyone, below you can find the updates from the Observability Platform team for the previous week starting on 28/03/2022.
cc @sed-i @jose @michele-mancioppi @bthomas @rbarry @dylanstathis
Hi everyone, below you can find the updates from the Observability Platform team for the previous week starting on 28/03/2022.
cc @sed-i @jose @michele-mancioppi @bthomas @rbarry @dylanstathis
All the GitHub repositories maintained by the team now include both issue templates and pull request templates, making it easier for both external and internal developers to make quality contributions.
Edge releases for the following charms are now automated on merge to main:
Injecting Juju Topology label matchers into an alert rule expression at runtime
Besides the extensive build and release automation introduced for most of the COS charms (see this post from @0x12b), we also did some serious work on automating the build and release of file-based resources used by the charms:
promql-transform, the secret sauce that allows COS Lite to automatically apply Juju topology to PromQL alert queries, got a snazzy new build automation that, on merges to main, automatically uploads new revisions to CharmHub for amd64 and arm64 architectures.
promtail, the heart of the LogProxyConsumer facility of the loki_push_api library, is now automatically built and released to the canonical/loki-k8s-operator repository with static linking whenever the upstream grafana/loki repository creates a GitHub release (see, e.g., this loki-k8s-operator GitHub release). This will enable the LogProxyConsumer, as soon as we update the loki_push_api library, to set up promtail running on all sorts of containers, irrespective of their base image (and we automatically test a bunch of them
)
Also, if you are a Git geek, you may find interesting how we keep in canonical/loki-k8s-operator shallow tags built from the upstream grafana/loki repository to be able, in the future, to patch and build anew promtail versions as needed.
The traefik-k8s charm has gotten a couple bugs squashed, where spurious data was left in the relation in case of scale-to-zero proxied applications (e.g., juju scale-application prometheus-k8s 0), and a race condition about the proxied application not writing some relation data quick enough, which lead to transient errors in the juju debug-log.
Also, we are making progress in re-implementing the ingress_per_unit library to remove the dependency from the serialized-data-interface package for better understandability, testability, debuggability and ease of use (no need to add stuff to your requirements.txt, charmcraft fetch-lib will suffice).
In Loki Charmed Operator:
Work in progress: Integration between Loki and Traefik ingress. See PR #120
The LokiPushApiProvider no longer expects planned units to follow a sequential pattern, resolving a bug that surfaced whenever there either was a gap in the sequence or the sequence did not start from 0 (#117)
Alert rules integration tests were added. See Issue #103 and PR #122
More in the Loki charmed operator:
Also in the Loki Operator:
In the Grafana Operator:
GrafanaSourceProvider library, which previously made the assumption that all datasources would be available at the HTTP root. With ingress support rapidly making its way into Observability charms, this needed an update in (PR #85), and the Grafana Operator now happily talks to ingress-enabled Prometheus and Loki.
GrafanaSourceProvider constructor. If your charm uses this library and provides a datasource endpoint somewhere other than /, you should use the source_url parameter when instantiating it.GrafanaDashboardConsumer|Provider try to be smart about tweaking values in incoming dashboards so the datasources with automatically work with Juju Topology templated variables. In doing so, any datasource which already had the name we expected to change it to (such as prometheusds or lokids) was accidentally squashed. For the most part, dashboards from the Grafana Marketplace and hand-built dashboards were unlikely to encounter this, but our internal integration testing did.
null value for the Datasource work as expected..tmpl, as early implementations used Jinja templating to substitute variables instead of adding dropdowns inthe template. Now that this is no longer used, any *.tmpl or any *.json file can be used.In the Loki Charmed Operator:
In the Prometheus Charmed Operator: