Skip to main content

Transformation

The transform can be used to convert one check into multiple checks programmatically.

alertmanager-check.yaml
apiVersion: canaries.flanksource.com/v1
kind: Canary
metadata:
name: alertmanager-check
spec:
schedule: "@every 5m"
alertmanager:
- url: alertmanager.example.com
name: alert-manager-transform
alerts:
- .*
ignore:
- KubeScheduler.*
transform:
javascript: |
var out = _.map(results, function(r) {
return {
name: r.name,
labels: r.labels,
icon: 'alert',
message: r.message,
description: r.message,
}
})
JSON.stringify(out);

In the above example, the check returns multiple alerts from alertmanager. By default, all those alerts are grouped in a single check.

But if we want to display each alert as its own check in the UI, we can use the transform function for this. The transform function takes a Template as input and the output from the template expected are the checks in JSON format.

For example, if there are 9 different alerts, each alert has its own check that can be managed and interacted with equally.

Transform Result

FieldDescriptionScheme
name*

Name of the check to use, the name is used to lookup existing checks to update

string

pass*

Set to true if the health check is passing

boolean

duration

Time in ms for duration of the check

int64

invalid

Set to true if the check is not configured correctly, and can never pass

boolean

deletedAt

The time the check or event logically ended

time.Time

error

An error message to be shown, if non-empty sets pass: false automatically

string

icon

Icon

labels

map[string]string

message

Informational message to be shown to users

string

namespace

string

start

The time the check or event logically started (e.g if coming from an external source)

time.Time

data

map[string]interface{}

description

string

detail

interface{}

displayType

string

endpoint

string

metrics

Add custom metrics to be exported

[]Metric

transformDeleteStrategy

How to handle checks that were returned in a previous transformation, but not in the current

MarkHealthy | MarkUnhealthy | Ignore
type

string

Transforms can either update checks in-place or return new checks.

Updating checks in-place

The update a check in place, return a JSON string of TransformResult with the updated fields

Creating new checks

To create a new check, return a JSON string of []TransformResult containing the new checks.