diff --git a/src/main/cluster.ts b/src/main/cluster.ts index b6323c0a0d..bbae37d96c 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -46,6 +46,7 @@ export type ClusterPreferences = { namespace: string; service: string; port: number; + prefix: string; }; prometheusProvider?: { type: string; @@ -154,6 +155,13 @@ export class Cluster implements ClusterInfo { this.save() } + public getPrometheusApiPrefix() { + if (!this.preferences.prometheus?.prefix) { + return "" + } + return this.preferences.prometheus.prefix + } + public save() { clusterStore.storeCluster(this) } diff --git a/src/main/routes/metrics.ts b/src/main/routes/metrics.ts index b7b1a030b0..ec50ec7d1e 100644 --- a/src/main/routes/metrics.ts +++ b/src/main/routes/metrics.ts @@ -2,6 +2,7 @@ import { LensApiRequest } from "../router" import { LensApi } from "../lens-api" import * as requestPromise from "request-promise-native" import { PrometheusProviderRegistry, PrometheusProvider, PrometheusNodeQuery, PrometheusClusterQuery, PrometheusPodQuery, PrometheusPvcQuery, PrometheusIngressQuery, PrometheusQueryOpts} from "../prometheus/provider-registry" +import logger from "../logger" type MetricsQuery = string | string[] | { [metricName: string]: string; @@ -13,7 +14,8 @@ class MetricsRoute extends LensApi { const { response, cluster} = request const query: MetricsQuery = request.payload; const serverUrl = `http://127.0.0.1:${cluster.port}/api-kube` - const metricsUrl = `${serverUrl}/api/v1/namespaces/${cluster.contextHandler.getPrometheusPath()}/proxy/api/v1/query_range` + const metricsUrl = `${serverUrl}/api/v1/namespaces/${cluster.contextHandler.getPrometheusPath()}/proxy${cluster.getPrometheusApiPrefix()}/api/v1/query_range` + logger.info(metricsUrl) const headers = { "Host": `${cluster.id}.localhost:${cluster.port}`, "Content-type": "application/json", diff --git a/src/renderer/components/ClusterSettings/Preferences/index.vue b/src/renderer/components/ClusterSettings/Preferences/index.vue index 108b6ad207..9df3d2d3ae 100644 --- a/src/renderer/components/ClusterSettings/Preferences/index.vue +++ b/src/renderer/components/ClusterSettings/Preferences/index.vue @@ -97,7 +97,7 @@ export default { updateValues: function(){ if (this.cluster.preferences.prometheus) { const prom = this.cluster.preferences.prometheus; - this.prometheusPath = `${prom.namespace}/${prom.service}:${prom.port}` + this.prometheusPath = `${prom.namespace}/${prom.service}:${prom.port}${prom.prefix}` } else { this.prometheusPath = "" } @@ -112,7 +112,8 @@ export default { return { namespace: parsed[0], service: parsed[1], - port: parsed[2] + port: parsed[2], + prefix: parsed[3] ? `/${parsed[3]}` : '' } }, expandPath: function(value, event) {