From cdfbcb2ec6200f8b9d25bdd885a53aecad7b6106 Mon Sep 17 00:00:00 2001 From: alburthoffman Date: Mon, 31 Jul 2023 08:13:48 -0700 Subject: [PATCH] passing time filters (#64086) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * passing time filters * add settings * Cleanup and merge fixes --------- Co-authored-by: André Pereira --- .../ConfigEditor.tsx | 4 ++ .../configuration/TraceIdTimeParams.tsx | 56 +++++++++++++++++++ .../plugins/datasource/jaeger/datasource.ts | 15 ++++- .../app/plugins/datasource/jaeger/module.ts | 2 +- 4 files changed, 73 insertions(+), 4 deletions(-) rename public/app/plugins/datasource/jaeger/{components => configuration}/ConfigEditor.tsx (93%) create mode 100644 public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx diff --git a/public/app/plugins/datasource/jaeger/components/ConfigEditor.tsx b/public/app/plugins/datasource/jaeger/configuration/ConfigEditor.tsx similarity index 93% rename from public/app/plugins/datasource/jaeger/components/ConfigEditor.tsx rename to public/app/plugins/datasource/jaeger/configuration/ConfigEditor.tsx index b044f143b51..50f3d8d5e8d 100644 --- a/public/app/plugins/datasource/jaeger/components/ConfigEditor.tsx +++ b/public/app/plugins/datasource/jaeger/configuration/ConfigEditor.tsx @@ -11,6 +11,8 @@ import { TraceToLogsSection } from 'app/core/components/TraceToLogs/TraceToLogsS import { TraceToMetricsSection } from 'app/core/components/TraceToMetrics/TraceToMetricsSettings'; import { SpanBarSection } from 'app/features/explore/TraceView/components/settings/SpanBarSettings'; +import { TraceIdTimeParams } from './TraceIdTimeParams'; + export type Props = DataSourcePluginOptionsEditorProps; export const ConfigEditor = ({ options, onOptionsChange }: Props) => { @@ -54,6 +56,8 @@ export const ConfigEditor = ({ options, onOptionsChange }: Props) => { + + ); diff --git a/public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx b/public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx new file mode 100644 index 00000000000..52b2888045f --- /dev/null +++ b/public/app/plugins/datasource/jaeger/configuration/TraceIdTimeParams.tsx @@ -0,0 +1,56 @@ +import { css } from '@emotion/css'; +import React from 'react'; + +import { + DataSourceJsonData, + DataSourcePluginOptionsEditorProps, + updateDatasourcePluginJsonDataOption, +} from '@grafana/data'; +import { InlineField, InlineFieldRow, InlineSwitch } from '@grafana/ui'; + +export interface TraceIdTimeParamsOptions { + enabled?: boolean; +} + +export interface TraceIdTimeParamsData extends DataSourceJsonData { + traceIdTimeParams?: TraceIdTimeParamsOptions; +} + +interface Props extends DataSourcePluginOptionsEditorProps {} + +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)