Skip to content
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

modify withRunbookURL to allow internal annotation #1139

Merged
merged 3 commits into from
Feb 5, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions mixin-utils/utils.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -117,12 +117,12 @@ local g = import 'grafana-builder/grafana.libsonnet';
// withRunbookURL - Add/Override the runbook_url annotations for all alerts inside a list of rule groups.
// - url_format: an URL format for the runbook, the alert name will be substituted in the URL.
// - groups: the list of rule groups containing alerts.
withRunbookURL(url_format, groups)::
withRunbookURL(url_format, groups, internal=false)::
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding conditional like this is a bit of anti pattern that leads to overloading a function signature to satisfy every user.

I'd suggest giving the original default like this, it'll allow the same override but needs less maintenance if someone follows a slightly alternative annotation approach.

Suggested change
withRunbookURL(url_format, groups, internal=false)::
withRunbookURL(url_format, groups, annotation_key='runbook_url')::

Perhaps also add a line of documentation above this function to explain it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated and tested

tk diff ksonnet/environments/ruler-exporter/main.jsonnet --name environments/ruler-exporter/dev-us-central-0

...
     ---
-    alert: UnhealthyComponents
+    alert: "UnhealthyComponents"
     annotations:
-      message: Unhealthy Flow components detected.
+      custom_runbook_annotation_key: "https://github.com/grafana/cloud-onboarding/blob/main/runbooks/HostedExporters-Agent.md#AgentUnhealthyComponents"
+      message: "Unhealthy Flow components detected."
     expr: "sum(agent_component_controller_running_components{health_type!=\"healthy\"}) > 0"
-    for: 15m
+    for: "15m"

local update_rule(rule) =
if std.objectHas(rule, 'alert')
then rule {
annotations+: {
runbook_url: url_format % rule.alert,
[if !internal then 'runbook_url' else 'internal_runbook_url']: url_format % rule.alert,
},
}
else rule;
Expand Down