From 9514b675b0ffeb6abdbd96288baff4d7d12ff24e Mon Sep 17 00:00:00 2001 From: Ales Verbic Date: Mon, 24 Nov 2025 18:29:29 -0500 Subject: [PATCH] fix: synthetic monitors Signed-off-by: Ales Verbic --- .terraform.lock.hcl | 46 +++++++++---------- grafana/synthetics/shared/dmtrHealth.js | 16 +++++-- .../shared/ogmiosQueryNetworkTip.js | 13 ++++-- versions.tf | 2 +- 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl index 1e2d9ea..fd05d3b 100644 --- a/.terraform.lock.hcl +++ b/.terraform.lock.hcl @@ -19,30 +19,30 @@ provider "registry.terraform.io/cloudflare/cloudflare" { } provider "registry.terraform.io/grafana/grafana" { - version = "4.14.0" - constraints = ">= 2.9.0" + version = "4.17.0" + constraints = ">= 4.17.0" hashes = [ - "h1:7V8gQRpJpYEYl/2pbrC67k6WK91upY2FRO11ybKOTT0=", - "zh:05337c6841474ea8e2dc3b196ca3c655f697f549b877cec76a258f5b61364614", - "zh:0e4ca21c85d66774bf0ceb8ccb558dac32c779d5f1bb941476c28dc7c912e551", - "zh:13d71a63daa03ad448f903bc5db893446fce866077f582e89e23b766a23ada71", - "zh:17f14dc80c3f8d398aece2a2fcb3686331ffed7a51c0fee4f4d77473b8d14fb7", - "zh:2623ae19ab18f9a54d8aaf8832298c60ee16e16895d55592d1eeaf055d8d8634", - "zh:46ea5dd42a86ab0a57f1888230859714d86f9e7101743ee44bb183b62b30c8a5", - "zh:5e7ccb42b95434eb45d1e6e1b5e51f13bd3516b4a3acba0cc891d07c7a76dd06", - "zh:79b087b47312bfe1cb62244232995838492a3a613daf396f711e9e576607b00c", - "zh:a0cc40a1b1b5016f675d5c0b0e2228c304b7be2b4d47bfca5d354439d99ac224", - "zh:a648b21d70fb8a3fb126f32f0ff8e17d7cc4efbb7cac25d7a0a351ad06cbc758", - "zh:a6fc1334c397479c28423a9bd8fe31f36350f569a84ed025e9896192153e7b1f", - "zh:aa079c538c1b9fb1cba706322510a5109be414ccb2b1226e58f0720fc295a32c", - "zh:c83d698d4ae30b9d85e0cc885d8c666cbe28c6fb3544386fca5cf0601f09519e", - "zh:d093e891621332d06f54f54cf13771dc9a7c03c8eccb208763697acb354bed15", - "zh:db3f64e52c9e25ddf710d84cb6e83acfbd64cfd23e26ec58f42e48e2027f5368", - "zh:db41b2b6584423ef2958f29386ee9be4cb9152246fe11a3b44b39ad3357e538e", - "zh:e4e7ddc8ae070cdb4f103f733af63e2a9907ec502ec31c6207dbd9ee3c24e8f0", - "zh:e9d4663bdab71bcdc6c05767e014acb0d029c7221b75d57403ff20e20d8eb7a3", - "zh:ecddc9ec97b707dbebeb592d84dca0ffa7f5b78408eac8187be665e1db877ce5", - "zh:f7bf77fde6cad0a6d45df2987e91ce4cecb7b5e774afb7a56bcaf67805d27c65", + "h1:HX6eh13ti1u5O5TjDEMOvXpeQIosdk1eyuqpOht55Eo=", + "zh:0521c25e4a31f72ee3a11be91d6738459c8b519a653e1c93870a029d54e8094c", + "zh:06b85713c638045b9db6650139960ec0881246dc7dd77a37374a8171b7ed6fd2", + "zh:10632a925a1bf4800328398cf775f7d42e3906192e2d08f8d63eef18cd9bd742", + "zh:26c3c4771caf78d8c222c2aaa27f7d8257dc54421494696bfe96de89460127a1", + "zh:3eba83e6998551dc6ca8693a4a60ed257b5d7134653e7411567ceccc2fcc8d91", + "zh:4b1c2ffbc102629178299bb878f6c331b32dc6ae2380dc0e4fdcdb2d50c50e46", + "zh:4f541a2299f2d40098ac979805c24c8b1453afb3b4035417bbb4c0bcf87d4c70", + "zh:584f26a48ab35481c02b415341d4396215e03409e2e6d426dce91f5b24ec5f9a", + "zh:5bdf5e81ff9aaa7c70bbf137b4bb4f13fb536505c6c4b32544be1eeb5c828594", + "zh:865f5be1d528e7cfdd4630a5982119a347331690e574f74e91388bbafed9f84c", + "zh:8dacfa081d2061b85b9be2e9ff901f450e7fe5244818a72643598a70732ba799", + "zh:9165739c89e8f591b45f31f4f498ad7285f2834a897353d8b8d7a3e02f865c59", + "zh:97d51cbf1705284c0a80186c59d7e457fae9dc08ed80ba115a7262794fc9f758", + "zh:b866fe57c93cf39749984cc3db11f03af1f3976ccc28616b470d14002efe3fc6", + "zh:ba02883d402637cee0696eb6f1d6d1a4b457443b192eb5645a6b592409ca8b3a", + "zh:c24b1f49e497d6e89175ebd5d4decbffca02ce20cadb7284a6409f969665ecaa", + "zh:d77504ad70ec66c754a3edc5f85c2647604b885232c36a38222d3bd7d3508613", + "zh:ed570220a9cbad6e28c36536768e030b083f6f54843c1e28d9044629e0e6987e", + "zh:fb837702ec2e73c6720f3fe8578f68d6a8979e897abc53243085663d737fd8b0", + "zh:ff098039c11d667a4cc20fe36148eec1327c5ab03136197dc8bb191d7c2c6260", ] } diff --git a/grafana/synthetics/shared/dmtrHealth.js b/grafana/synthetics/shared/dmtrHealth.js index 2cbba35..9a42c9a 100644 --- a/grafana/synthetics/shared/dmtrHealth.js +++ b/grafana/synthetics/shared/dmtrHealth.js @@ -1,5 +1,5 @@ import http from 'k6/http' -import { check } from 'k6' +import { check, fail } from 'k6' export default function () { const DMTR_API_KEY = '${api_key}' @@ -17,9 +17,17 @@ export default function () { console.log('Response status:', res.status) console.log('Response body:', res.body) - check(res, { + // Update assertion dashboard based on response + const ok = check(res, { 'status is 200': (r) => r.status === 200, - 'body is not empty': (r) => (r.body || '').length > 0, - 'body says OK': (r) => (r.body || '').trim().toUpperCase() === 'OK', + 'body says OK': (r) => { + const body = typeof r.body === 'string' ? r.body : String.fromCharCode.apply(null, new Uint8Array(r.body)) + return body.trim().toUpperCase() === 'OK' + }, }) + + if (!ok) { + const body = typeof res.body === 'string' ? res.body : String.fromCharCode.apply(null, new Uint8Array(res.body)) + fail(`Health check failed: status=$${res.status}, body=$${body}`) + } } diff --git a/grafana/synthetics/shared/ogmiosQueryNetworkTip.js b/grafana/synthetics/shared/ogmiosQueryNetworkTip.js index c0cdbb7..3c8cbc9 100644 --- a/grafana/synthetics/shared/ogmiosQueryNetworkTip.js +++ b/grafana/synthetics/shared/ogmiosQueryNetworkTip.js @@ -28,12 +28,16 @@ export default function () { console.log('Received:', data) const json = JSON.parse(data) - check(json, + const ok = check(json, { 'has result': (r) => r.result !== undefined, 'result has slot': (r) => r.result?.slot > 0, + 'method is queryNetwork/tip': (r) => r.method === 'queryNetwork/tip' }) - + if (!ok) { + socket.close() + return fail('queryNetwork/tip message check failed') + } socket.close() }) @@ -42,8 +46,11 @@ export default function () { }) }) - check(response, + const ok = check(response, { 'status is 101': (r) => r && r.status === 101 }) + if (!ok) { + return fail('WebSocket connection check failed') + } } diff --git a/versions.tf b/versions.tf index 642747a..d0cac9a 100644 --- a/versions.tf +++ b/versions.tf @@ -8,7 +8,7 @@ terraform { } grafana = { source = "grafana/grafana" - version = ">= 2.9.0" + version = ">= 4.17.0" } random = { source = "hashicorp/random"