From 4c1a6a92a5831bf60dc7110fcef6568accaa0610 Mon Sep 17 00:00:00 2001 From: Ivana Date: Wed, 24 Nov 2021 10:43:22 +0100 Subject: [PATCH] Prometheus: Use this.query for health check --- .../datasource/prometheus/datasource.ts | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 28b034dfb70..4bd90e1a357 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -16,6 +16,7 @@ import { ScopedVars, TimeRange, DataFrame, + dateTime, } from '@grafana/data'; import { BackendSrvRequest, @@ -789,11 +790,33 @@ export class PrometheusDatasource extends DataSourceWithBackend = { + targets: [{ refId: 'test', expr: '1+1', instant: true }], + requestId: `${this.id}-health`, + scopedVars: {}, + dashboardId: 0, + panelId: 0, + interval: '1m', + intervalMs: 60000, + maxDataPoints: 1, + range: { + from: dateTime(now - 1000), + to: dateTime(now), + }, + } as DataQueryRequest; + + return lastValueFrom(this.query(request)) + .then((res: DataQueryResponse) => { + if (!res || !res.data || res.state !== LoadingState.Done) { + return { status: 'error', message: `Error reading Prometheus: ${res?.error?.message}` }; + } else { + return { status: 'success', message: 'Data source is working' }; + } + }) + .catch((err: any) => { + console.error('Prometheus Error', err); + return { status: 'error', message: err.message }; + }); } interpolateVariablesInQueries(queries: PromQuery[], scopedVars: ScopedVars): PromQuery[] {