# Example trigger code trigger: | import kv from 'k6/x/zdravko/kv'; import incidents, { severity } from 'k6/x/zdravko/incidents'; import { getTarget, getMonitor, getOutcome } from 'k6/x/zdravko'; const getMinute = (date) => { return Math.floor(date.getTime() / 1000 / 60); } const get5LastMinutes = (date) => { const currentMinute = getMinute(date); return Array.from({ length: 5 }, (_, i) => { const minute = currentMinute - i; if (minute < 0) { return 60 - minute; } return minute; }); } // This trigger will check if there were more than 5 issues in last // 5 minutes, if so it will create a critical incident. export default function () { const target = getTarget(); const monitor = getMonitor(); const outcome = getOutcome(); // If the outcome is not failure, we close any potential incidents. if (outcome.status !== 'FAILURE') { incidents.close(target, monitor); return; } const date = new Date(); let total = 0; for (const minute of get5LastMinutes(date)) { const count = kv.get(`${monitor.name}:issues:${minute}`) || 0; total += count; } // If there are more than 5 issues in the last 5 minutes, create a critical incident. if (total > 5) { incidents.create( target, monitor, severity.CRITICAL, `More than 5 issues in the last 5 minutes.`, { special: "tags" } ); // Else we would close any potential incidents. If non exist, that's ok. } else { incidents.close(target, monitor); } // Increment and set TTL to 5 minutes const minute = getMinute(date); kv.increment(`${monitor.name}:issues:${minute}`, 5 * 60); } # Example monitor code check: | import http from 'k6/http'; import { getTarget } from 'k6/x/zdravko'; export const options = { thresholds: { // http errors should be less than 1% http_req_failed: ['rate<0.01'], }, }; // Execute the check on the targets. export default function () { const { name, group, metadata } = getTarget(); console.log(`Running check for ${group}/${name}`) http.get(metadata.spec.url); } hook: | // TODO: Implement hook example filter: | target.metadata.kind == "Http" && target.metadata.spec.url != "" target: | kind: Http labels: production: "true" spec: url: "https://test.k6.io" method: "GET" headers: User-Agent: "Zdravko"