{}
+
+export function TraceIdTimeParams({ options, onOptionsChange }: Props) {
+ return (
+
+
Query Trace by ID with Time Params
+
+
+ ) =>
+ updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'traceIdTimeParams', {
+ ...options.jsonData.traceIdTimeParams,
+ enabled: event.currentTarget.checked,
+ })
+ }
+ />
+
+
+
+ );
+}
+
+const styles = {
+ container: css`
+ label: container;
+ width: 100%;
+ `,
+ row: css`
+ label: row;
+ align-items: baseline;
+ `,
+};
diff --git a/public/app/plugins/datasource/jaeger/datasource.ts b/public/app/plugins/datasource/jaeger/datasource.ts
index f8288806604..a2d10cc0f8d 100644
--- a/public/app/plugins/datasource/jaeger/datasource.ts
+++ b/public/app/plugins/datasource/jaeger/datasource.ts
@@ -21,6 +21,7 @@ import { getTimeSrv, TimeSrv } from 'app/features/dashboard/services/TimeSrv';
import { SpanBarOptions } from 'app/features/explore/TraceView/components';
import { ALL_OPERATIONS_KEY } from './components/SearchForm';
+import { TraceIdTimeParamsOptions } from './configuration/TraceIdTimeParams';
import { createGraphFrames } from './graphTransform';
import { createTableFrame, createTraceFrame } from './responseTransform';
import { JaegerQuery } from './types';
@@ -28,11 +29,13 @@ import { convertTagsLogfmt } from './util';
export interface JaegerJsonData extends DataSourceJsonData {
nodeGraph?: NodeGraphOptions;
+ traceIdTimeParams?: TraceIdTimeParamsOptions;
}
export class JaegerDatasource extends DataSourceApi {
uploadedJson: string | ArrayBuffer | null = null;
nodeGraph?: NodeGraphOptions;
+ traceIdTimeParams?: TraceIdTimeParamsOptions;
spanBar?: SpanBarOptions;
constructor(
private instanceSettings: DataSourceInstanceSettings,
@@ -41,6 +44,7 @@ export class JaegerDatasource extends DataSourceApi
) {
super(instanceSettings);
this.nodeGraph = instanceSettings.jsonData.nodeGraph;
+ this.traceIdTimeParams = instanceSettings.jsonData.traceIdTimeParams;
}
async metadataRequest(url: string, params?: Record): Promise {
@@ -65,10 +69,15 @@ export class JaegerDatasource extends DataSourceApi
return of({ error: { message: 'You must select a service.' }, data: [] });
}
+ let { start, end } = this.getTimeRange();
+
if (target.queryType !== 'search' && target.query) {
- return this._request(
- `/api/traces/${encodeURIComponent(this.templateSrv.replace(target.query, options.scopedVars))}`
- ).pipe(
+ let url = `/api/traces/${encodeURIComponent(this.templateSrv.replace(target.query, options.scopedVars))}`;
+ if (this.traceIdTimeParams) {
+ url += `?start=${start}&end=${end}`;
+ }
+
+ return this._request(url).pipe(
map((response) => {
const traceData = response?.data?.data?.[0];
if (!traceData) {
diff --git a/public/app/plugins/datasource/jaeger/module.ts b/public/app/plugins/datasource/jaeger/module.ts
index 7ff12082d39..83adb0ea625 100644
--- a/public/app/plugins/datasource/jaeger/module.ts
+++ b/public/app/plugins/datasource/jaeger/module.ts
@@ -1,8 +1,8 @@
import { DataSourcePlugin } from '@grafana/data';
import CheatSheet from './CheatSheet';
-import { ConfigEditor } from './components/ConfigEditor';
import { QueryEditor } from './components/QueryEditor';
+import { ConfigEditor } from './configuration/ConfigEditor';
import { JaegerDatasource } from './datasource';
export const plugin = new DataSourcePlugin(JaegerDatasource)