mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: datasource config with custom parameters string (#19121)
This commit is contained in:
parent
a5adeed840
commit
043bb59593
@ -25,16 +25,17 @@ Grafana includes built-in support for Prometheus.
|
||||
|
||||
## Data source options
|
||||
|
||||
| Name | Description |
|
||||
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| _Name_ | The data source name. This is how you refer to the data source in panels & queries. |
|
||||
| _Default_ | Default data source means that it will be pre-selected for new panels. |
|
||||
| _Url_ | The http protocol, ip and port of you Prometheus server (default port is usually 9090) |
|
||||
| _Access_ | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. |
|
||||
| _Basic Auth_ | Enable basic authentication to the Prometheus data source. |
|
||||
| _User_ | Name of your Prometheus user |
|
||||
| _Password_ | Database user's password |
|
||||
| _Scrape interval_ | This will be used as a lower limit for the Prometheus step query parameter. Default value is 15s. |
|
||||
| Name | Description |
|
||||
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| _Name_ | The data source name. This is how you refer to the data source in panels & queries. |
|
||||
| _Default_ | Default data source means that it will be pre-selected for new panels. |
|
||||
| _Url_ | The http protocol, ip and port of you Prometheus server (default port is usually 9090) |
|
||||
| _Access_ | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. |
|
||||
| _Basic Auth_ | Enable basic authentication to the Prometheus data source. |
|
||||
| _User_ | Name of your Prometheus user |
|
||||
| _Password_ | Database user's password |
|
||||
| _Scrape interval_ | This will be used as a lower limit for the Prometheus step query parameter. Default value is 15s. |
|
||||
| _CustomQueryParameters_ | Add Custom parameters to Prometheus query url. For example `timeout`, `partial_response`, `dedup` or `max_source_resolution`. |
|
||||
|
||||
## Query editor
|
||||
|
||||
|
@ -55,6 +55,7 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
||||
httpMethod: string;
|
||||
languageProvider: PrometheusLanguageProvider;
|
||||
resultTransformer: ResultTransformer;
|
||||
customQueryParameters: any;
|
||||
|
||||
/** @ngInject */
|
||||
constructor(
|
||||
@ -78,6 +79,7 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
||||
this.resultTransformer = new ResultTransformer(templateSrv);
|
||||
this.ruleMappings = {};
|
||||
this.languageProvider = new PrometheusLanguageProvider(this);
|
||||
this.customQueryParameters = new URLSearchParams(instanceSettings.jsonData.customQueryParameters);
|
||||
}
|
||||
|
||||
init = () => {
|
||||
@ -348,6 +350,12 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
||||
data['timeout'] = this.queryTimeout;
|
||||
}
|
||||
|
||||
for (const [key, value] of this.customQueryParameters) {
|
||||
if (data[key] == null) {
|
||||
data[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return this._request(url, data, { requestId: query.requestId, headers: query.headers }).catch((err: any) => {
|
||||
if (err.cancelled) {
|
||||
return err;
|
||||
@ -368,6 +376,12 @@ export class PrometheusDatasource extends DataSourceApi<PromQuery, PromOptions>
|
||||
data['timeout'] = this.queryTimeout;
|
||||
}
|
||||
|
||||
for (const [key, value] of this.customQueryParameters) {
|
||||
if (data[key] == null) {
|
||||
data[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return this._request(url, data, { requestId: query.requestId, headers: query.headers }).catch((err: any) => {
|
||||
if (err.cancelled) {
|
||||
return err;
|
||||
|
@ -48,3 +48,23 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="page-heading">Misc</h3>
|
||||
<div class="gf-form-group">
|
||||
<div class="gf-form-inline">
|
||||
<div class="gf-form max-width-30">
|
||||
<span class="gf-form-label width-13">Custom query parameters</span>
|
||||
<input
|
||||
type="text"
|
||||
class="gf-form-input gf-form-input--has-help-icon"
|
||||
ng-model="ctrl.current.jsonData.customQueryParameters"
|
||||
spellcheck="false"
|
||||
placeholder="Example: max_source_resolution=5m&timeout=10"
|
||||
></input>
|
||||
<info-popover mode="right-absolute">
|
||||
Add Custom parameters to Prometheus or Thanos queries.
|
||||
</info-popover>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -25,6 +25,7 @@ export interface PromOptions extends DataSourceJsonData {
|
||||
queryTimeout: string;
|
||||
httpMethod: string;
|
||||
directUrl: string;
|
||||
customQueryParameters?: string;
|
||||
}
|
||||
|
||||
export interface PromQueryRequest extends PromQuery {
|
||||
|
Loading…
Reference in New Issue
Block a user