diff options
author | Katherine Nadeau | 2018-10-03 13:21:40 +0000 |
---|---|---|
committer | Katherine Nadeau | 2018-10-24 14:41:09 +0000 |
commit | 554baafd5c219669c0cf288c8d5e40be6bbb9e97 (patch) | |
tree | 866b927d67fa5edb17f4f7c6bfee60bd3433cbe9 | |
parent | 7d4789b39166e6bf697c1e02184103ab7914b8e5 (diff) | |
download | org.eclipse.tracecompass.incubator-554baafd5c219669c0cf288c8d5e40be6bbb9e97.tar.gz org.eclipse.tracecompass.incubator-554baafd5c219669c0cf288c8d5e40be6bbb9e97.tar.xz org.eclipse.tracecompass.incubator-554baafd5c219669c0cf288c8d5e40be6bbb9e97.zip |
opentracing.ui: New selection options in the fetchJaeger window
tags, minDuration, maxDuration and specific lookback time options for
the fetch jaeger traces. Also fixed a small bug in the span life view
span name determination.
Change-Id: Ib188c4057d2808ec434cda7fcc16e456a53d63af
Signed-off-by: Katherine Nadeau <katherine.nadeau@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/130764
Tested-by: CI Bot
Reviewed-by: Simon Delisle <simon.delisle@ericsson.com>
Tested-by: Simon Delisle <simon.delisle@ericsson.com>
6 files changed, 168 insertions, 42 deletions
diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.core/src/org/eclipse/tracecompass/incubator/internal/opentracing/core/analysis/spanlife/SpanLifeDataProvider.java b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.core/src/org/eclipse/tracecompass/incubator/internal/opentracing/core/analysis/spanlife/SpanLifeDataProvider.java index 13f904c70..25ccd6bf9 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.core/src/org/eclipse/tracecompass/incubator/internal/opentracing/core/analysis/spanlife/SpanLifeDataProvider.java +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.core/src/org/eclipse/tracecompass/incubator/internal/opentracing/core/analysis/spanlife/SpanLifeDataProvider.java @@ -286,15 +286,17 @@ public class SpanLifeDataProvider extends AbstractTimeGraphDataProvider<@NonNull } private static String getSpanName(String attributeName) { - return attributeName.split("/")[0]; //$NON-NLS-1$ + String spanNameAndId = attributeName.substring(0, attributeName.lastIndexOf('/')); + return spanNameAndId.substring(0, spanNameAndId.lastIndexOf('/')); } private static String getSpanId(String attributeName) { - return attributeName.split("/")[1]; //$NON-NLS-1$ + String[] attributeInfo = attributeName.split("/"); //$NON-NLS-1$ + return attributeInfo[attributeInfo.length - 2]; } private static Boolean getErrorTag(String attributeName) { - return attributeName.split("/")[2].equals("true"); //$NON-NLS-1$ //$NON-NLS-2$ + return attributeName.substring(attributeName.lastIndexOf('/') + 1).equals("true"); //$NON-NLS-1$ } private static String getLogType(String logs) { diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/META-INF/MANIFEST.MF b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/META-INF/MANIFEST.MF index 9f359de8a..8cb1f1f4c 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/META-INF/MANIFEST.MF +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/META-INF/MANIFEST.MF @@ -27,5 +27,6 @@ Import-Package: com.google.common.collect, javax.ws.rs.client, javax.ws.rs.core, org.apache.commons.compress.utils, + org.apache.commons.lang3, org.eclipse.tracecompass.incubator.jsontrace.core.trace Automatic-Module-Name: org.eclipse.tracecompass.incubator.opentracing.ui diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/FetchJaegerTracesWizardPage.java b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/FetchJaegerTracesWizardPage.java index 7f08b395e..86fb6f70b 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/FetchJaegerTracesWizardPage.java +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/FetchJaegerTracesWizardPage.java @@ -13,6 +13,7 @@ import java.time.Instant; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; @@ -49,15 +50,20 @@ import com.google.gson.JsonObject; public class FetchJaegerTracesWizardPage extends WizardPage { private static final String DEFAULT_TRACE_FOLDER_NAME = "jaegerTraces"; //$NON-NLS-1$ - private static final String DEFAULT_LOOKBACK = "43200"; //$NON-NLS-1$ private static final String DEFAULT_LIMIT = "20"; //$NON-NLS-1$ private static final String DEFAULT_BASE_URL = "http://localhost:16686/api"; //$NON-NLS-1$ + @SuppressWarnings("nls") + private static final String[] DEFAULT_LOOKBACKS = {"1h", "2h", "3h", "6h", "12h", "1d", "2d"}; + private static final Long[] DEFAULT_LOOKBACKS_SECONDS = {3600L, 7200L, 10800L, 21600L, 43200L, 86400L, 172800L}; private static final String NANOSECONDS_PADDING = "000"; //$NON-NLS-1$ - private static final String JAEGER_TRACE_ID_KEY = "traceID"; //$NON-NLS-1$ private static final String JAEGER_DATA_KEY = "data"; //$NON-NLS-1$ private static final String JAEGER_SPANS_KEY = "spans"; //$NON-NLS-1$ + private static final String JAEGER_TRACE_ID_KEY = "traceID"; //$NON-NLS-1$ private static final String JAEGER_SPAN_NAME_KEY = "operationName"; //$NON-NLS-1$ + private static final String JAEGER_PROCESSES_KEY = "processes"; //$NON-NLS-1$ + private static final String JAEGER_SERVICE_KEY = "serviceName"; //$NON-NLS-1$ + private Table fTracesTable; private String fTraceFolderName; @@ -98,7 +104,7 @@ public class FetchJaegerTracesWizardPage extends WizardPage { Label serviceLabel = new Label(urlConfigurationGroup, SWT.NONE); serviceLabel.setText(Messages.FetchJaegerTracesWizardPage_serviceNameLabel); Combo serviceCombo = new Combo(urlConfigurationGroup, SWT.DROP_DOWN); - serviceCombo.setItems(""); //$NON-NLS-1$ + serviceCombo.setItems(); serviceCombo.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); targetUrlText.addFocusListener(new FocusListener() { @@ -123,6 +129,12 @@ public class FetchJaegerTracesWizardPage extends WizardPage { } }); + Label targetTagsLabel = new Label(urlConfigurationGroup, SWT.NONE); + targetTagsLabel.setText(Messages.FetchJaegerTracesWizardPage_tagsLabel); + Text targetTagsText = new Text(urlConfigurationGroup, SWT.NONE); + targetTagsText.setMessage("http.method=GET error=true"); //$NON-NLS-1$ + targetTagsText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); + Label traceNumberLimitLabel = new Label(urlConfigurationGroup, SWT.NONE); traceNumberLimitLabel.setText(Messages.FetchJaegerTracesWizardPage_nbTracesLimitLabel); Text traceNumberLimitText = new Text(urlConfigurationGroup, SWT.NONE); @@ -130,10 +142,50 @@ public class FetchJaegerTracesWizardPage extends WizardPage { traceNumberLimitText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); Label traceLookBackLabel = new Label(urlConfigurationGroup, SWT.NONE); - traceLookBackLabel.setText(Messages.FetchJaegerTracesWizardPage_loockbackLabel); - Text traceLookBackText = new Text(urlConfigurationGroup, SWT.NONE); - traceLookBackText.setText(DEFAULT_LOOKBACK); - traceLookBackText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); + traceLookBackLabel.setText(Messages.FetchJaegerTracesWizardPage_lookbackLabel); + Combo lookbackCombo = new Combo(urlConfigurationGroup, SWT.DROP_DOWN); + lookbackCombo.setItems(DEFAULT_LOOKBACKS); + lookbackCombo.select(0); + lookbackCombo.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); + + Label targetMinDurationLabel = new Label(urlConfigurationGroup, SWT.NONE); + targetMinDurationLabel.setText(Messages.FetchJaegerTracesWizardPage_minDurationLabel); + Text targetMinDurationText = new Text(urlConfigurationGroup, SWT.NONE); + targetMinDurationText.setMessage("100ms"); //$NON-NLS-1$ + targetMinDurationText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); + + // Jaeger doesn't support a request with both a tag and minimum duration filters + // so we deactivate one if the other is filled with a value + targetMinDurationText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(ModifyEvent e) { + if (targetMinDurationText.getText().isEmpty()) { + targetTagsText.setEnabled(true); + } else { + targetTagsText.setEnabled(false); + } + updatePageCompletion(); + } + }); + + targetTagsText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(ModifyEvent e) { + if (targetTagsText.getText().isEmpty()) { + targetMinDurationText.setEnabled(true); + } else { + targetMinDurationText.setEnabled(false); + } + updatePageCompletion(); + } + }); + + + Label targetMaxDurationLabel = new Label(urlConfigurationGroup, SWT.NONE); + targetMaxDurationLabel.setText(Messages.FetchJaegerTracesWizardPage_maxDurationLabel); + Text targetMaxDurationText = new Text(urlConfigurationGroup, SWT.NONE); + targetMaxDurationText.setMessage("1.1s"); //$NON-NLS-1$ + targetMaxDurationText.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create()); Label traceNameLabel = new Label(urlConfigurationGroup, SWT.NONE); traceNameLabel.setText(Messages.FetchJaegerTracesWizardPage_traceName); @@ -170,9 +222,11 @@ public class FetchJaegerTracesWizardPage extends WizardPage { fetchJagerButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - long currentTime = Instant.now().toEpochMilli(); - long loockBackTime = Instant.now().minusSeconds(Long.parseLong(traceLookBackText.getText())).toEpochMilli(); - String requestUrl = JaegerRestUtils.buildTracesUrl(targetUrlText.getText(), serviceCombo.getText(), Long.toString(loockBackTime) + NANOSECONDS_PADDING, Long.toString(currentTime) + NANOSECONDS_PADDING, traceNumberLimitText.getText()); + long endTime = Instant.now().toEpochMilli(); + long startTime = Instant.now().minusSeconds(DEFAULT_LOOKBACKS_SECONDS[lookbackCombo.indexOf(lookbackCombo.getText())]).toEpochMilli(); + String tags = buildTagsString(targetTagsText.getText()); + String requestUrl = JaegerRestUtils.buildTracesUrl(targetUrlText.getText(), Long.toString(endTime) + NANOSECONDS_PADDING, traceNumberLimitText.getText(), lookbackCombo.getText(), + targetMaxDurationText.getText(), targetMinDurationText.getText(), serviceCombo.getText(), Long.toString(startTime) + NANOSECONDS_PADDING, tags); String jaegerTraces = JaegerRestUtils.fetchJaegerTraces(requestUrl); if (jaegerTraces == null) { setPageComplete(false); @@ -183,13 +237,16 @@ public class FetchJaegerTracesWizardPage extends WizardPage { JsonObject tracesObject = gson.fromJson(jaegerTraces, JsonObject.class); JsonArray tracesArray = tracesObject.get(JAEGER_DATA_KEY).getAsJsonArray(); fTracesTable.removeAll(); + tracesInfoGroup.setText(Messages.FetchJaegerTracesWizardPage_tracesGroup + " ("+ tracesArray.size() + ')'); //$NON-NLS-1$ if (tracesArray.size() > 0) { for (int i = 0; i < tracesArray.size(); i++) { TableItem traceItem = new TableItem(fTracesTable, SWT.NONE); - traceItem.setText(0, tracesArray.get(i).getAsJsonObject().get(JAEGER_TRACE_ID_KEY).getAsString()); - JsonArray spans = tracesArray.get(i).getAsJsonObject().get(JAEGER_SPANS_KEY).getAsJsonArray(); - traceItem.setText(1, spans.get(0).getAsJsonObject().get(JAEGER_SPAN_NAME_KEY).getAsString()); - traceItem.setText(2, Integer.toString(spans.size())); + JsonObject trace = tracesArray.get(i).getAsJsonObject(); + JsonArray spans = trace.get(JAEGER_SPANS_KEY).getAsJsonArray(); + traceItem.setText(0, spans.get(0).getAsJsonObject().get(JAEGER_SPAN_NAME_KEY).getAsString()); + traceItem.setText(1, Integer.toString(spans.size())); + traceItem.setText(2, StringUtils.join(fetchTraceServices(trace), ", ")); //$NON-NLS-1$ + traceItem.setText(3, trace.get(JAEGER_TRACE_ID_KEY).getAsString()); traceItem.setChecked(true); for(TableColumn column : fTracesTable.getColumns()) { column.pack(); @@ -209,15 +266,18 @@ public class FetchJaegerTracesWizardPage extends WizardPage { fTracesTable.setLinesVisible(true); fTracesTable.setHeaderVisible(true); - TableColumn traceIdColumn = new TableColumn(fTracesTable, SWT.NONE); - traceIdColumn.setText(Messages.FetchJaegerTracesWizardPage_traceIdColumnName); - traceIdColumn.pack(); TableColumn firstSpanColumn = new TableColumn(fTracesTable, SWT.NONE); firstSpanColumn.setText(Messages.FetchJaegerTracesWizardPage_spanNameColumnName); firstSpanColumn.pack(); TableColumn nbSpanColumn = new TableColumn(fTracesTable, SWT.NONE); nbSpanColumn.setText(Messages.FetchJaegerTracesWizardPage_nbSpansColumnName); nbSpanColumn.pack(); + TableColumn servicesColumn = new TableColumn(fTracesTable, SWT.NONE); + servicesColumn.setText(Messages.FetchJaegerTracesWizardPage_servicesColumnName); + servicesColumn.pack(); + TableColumn traceIdColumn = new TableColumn(fTracesTable, SWT.NONE); + traceIdColumn.setText(Messages.FetchJaegerTracesWizardPage_traceIdColumnName); + traceIdColumn.pack(); fTracesTable.addSelectionListener(new SelectionAdapter() { @Override @@ -279,7 +339,7 @@ public class FetchJaegerTracesWizardPage extends WizardPage { List<String> traceIdList = new ArrayList<>(); for (TableItem traceItem : fTracesTable.getItems()) { if (traceItem.getChecked()) { - traceIdList.add(traceItem.getText(0)); + traceIdList.add(traceItem.getText(3)); } } return traceIdList; @@ -305,4 +365,28 @@ public class FetchJaegerTracesWizardPage extends WizardPage { setPageComplete(true); } + + private static String buildTagsString(String tags) { + if (!tags.isEmpty()) { + String[] tagsArray = tags.split(" "); //$NON-NLS-1$ + + JsonObject jsonTags = new JsonObject(); + for (int i = 0; i < tagsArray.length; i++) { + String[] tagKeyValue = tagsArray[i].split("="); //$NON-NLS-1$ + jsonTags.addProperty(tagKeyValue[0], tagKeyValue[1]); + } + + return jsonTags.toString(); + } + return tags; + } + + private static String[] fetchTraceServices(JsonObject trace) { + JsonObject servicesArray = trace.get(JAEGER_PROCESSES_KEY).getAsJsonObject(); + String[] services = new String[servicesArray.size()]; + for (int i = 0; i < servicesArray.size(); i++) { + services[i] = servicesArray.get("p" + (i + 1)).getAsJsonObject().get(JAEGER_SERVICE_KEY).getAsString(); //$NON-NLS-1$ + } + return services; + } } diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/JaegerRestUtils.java b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/JaegerRestUtils.java index 29b3a439a..fcb8ed20c 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/JaegerRestUtils.java +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/JaegerRestUtils.java @@ -9,7 +9,10 @@ package org.eclipse.tracecompass.incubator.internal.opentracing.ui.project.wizards; +import java.io.UnsupportedEncodingException; import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; @@ -38,10 +41,14 @@ public class JaegerRestUtils { /** * Parameters key for traces request */ - private static final String SERVICE_NAME = "service"; //$NON-NLS-1$ - private static final String SEARCH_START_TIME = "start"; //$NON-NLS-1$ private static final String SEARCH_END_TIME = "end"; //$NON-NLS-1$ private static final String NB_TRACES_LIMIT = "limit"; //$NON-NLS-1$ + private static final String LOOKBACK = "lookback"; //$NON-NLS-1$ + private static final String MAX_DURATION = "maxDuration"; //$NON-NLS-1$ + private static final String MIN_DURATION = "minDuration"; //$NON-NLS-1$ + private static final String SERVICE_NAME = "service"; //$NON-NLS-1$ + private static final String SEARCH_START_TIME = "start"; //$NON-NLS-1$ + private static final String TAGS = "tags"; //$NON-NLS-1$ private JaegerRestUtils() { } @@ -81,14 +88,38 @@ public class JaegerRestUtils { * Search end time * @param limit * Limit on the number of traces returned + * @param lookback + * Amount of time to go look back for traces + * @param maxDuration + * Trace maximum duration + * @param minDuration + * Trace minimum duration + * @param tags + * Span tags filter * @return The built URL */ - public static String buildTracesUrl(String baseUrl, String service, String startTime, String endTime, String limit) { - URI uri = UriBuilder.fromUri(baseUrl).path(TRACES_ENDPOINT).queryParam(SERVICE_NAME, service) - .queryParam(SEARCH_START_TIME, startTime) + public static String buildTracesUrl(String baseUrl, String endTime, String limit, String lookback, String maxDuration, String minDuration, String service, String startTime, String tags) { + UriBuilder uriBuilder = UriBuilder.fromUri(baseUrl).path(TRACES_ENDPOINT) .queryParam(SEARCH_END_TIME, endTime) - .queryParam(NB_TRACES_LIMIT, limit).build(); - return uri.toString(); + .queryParam(NB_TRACES_LIMIT, limit) + .queryParam(LOOKBACK, lookback) + .queryParam(SERVICE_NAME, service) + .queryParam(SEARCH_START_TIME, startTime); + if (!maxDuration.isEmpty()) { + uriBuilder.queryParam(MAX_DURATION, maxDuration); + } + if (!minDuration.isEmpty()) { + uriBuilder.queryParam(MIN_DURATION, minDuration); + } + if (!tags.isEmpty()) { + try { + uriBuilder.queryParam(TAGS, URLEncoder.encode(tags, StandardCharsets.UTF_8.name())); + } catch (UnsupportedEncodingException e) { + // We don't add the tags if the encoding fails + } + } + + return uriBuilder.build().toString(); } /** diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/Messages.java b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/Messages.java index c69515bb5..1bc534e90 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/Messages.java +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/Messages.java @@ -22,14 +22,18 @@ public class Messages extends NLS { public static String FetchJaegerTracesWizardPage_fetchJaegerShellTitle; public static String FetchJaegerTracesWizardPage_jaegerConfigGroup; public static String FetchJaegerTracesWizardPage_jaegerFetchButton; - public static String FetchJaegerTracesWizardPage_loockbackLabel; + public static String FetchJaegerTracesWizardPage_lookbackLabel; + public static String FetchJaegerTracesWizardPage_maxDurationLabel; + public static String FetchJaegerTracesWizardPage_minDurationLabel; public static String FetchJaegerTracesWizardPage_nbSpansColumnName; public static String FetchJaegerTracesWizardPage_nbTracesLimitLabel; public static String FetchJaegerTracesWizardPage_selectAllButton; public static String FetchJaegerTracesWizardPage_serviceNameLabel; public static String FetchJaegerTracesWizardPage_spanNameColumnName; - public static String FetchJaegerTracesWizardPage_traceIdColumnName; + public static String FetchJaegerTracesWizardPage_servicesColumnName; + public static String FetchJaegerTracesWizardPage_tagsLabel; public static String FetchJaegerTracesWizardPage_traceName; + public static String FetchJaegerTracesWizardPage_traceIdColumnName; public static String FetchJaegerTracesWizardPage_tracesGroup; public static String FetchJaegerTracesWizardPage_errorApiConnection; public static String FetchJaegerTracesWizardPage_errorFetchTraces; diff --git a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/messages.properties b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/messages.properties index 8cf436414..486c7a098 100644 --- a/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/messages.properties +++ b/tracetypes/org.eclipse.tracecompass.incubator.opentracing.ui/src/org/eclipse/tracecompass/incubator/internal/opentracing/ui/project/wizards/messages.properties @@ -6,25 +6,29 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################### -FetchJaegerTracesWizardPage_apiBaseUrlLabel=API URL: -FetchJaegerTracesWizardPage_deselectAllButton=Deselect all -FetchJaegerTracesWizardPage_fetchJaegerShellTitle=Fetch traces from Jaeger -FetchJaegerTracesWizardPage_jaegerConfigGroup=Jaeger configuration +FetchJaegerTracesWizardPage_apiBaseUrlLabel=API URL +FetchJaegerTracesWizardPage_deselectAllButton=Deselect All +FetchJaegerTracesWizardPage_fetchJaegerShellTitle=Fetch Traces from Jaeger +FetchJaegerTracesWizardPage_jaegerConfigGroup=Jaeger Configuration FetchJaegerTracesWizardPage_jaegerFetchButton=Fetch -FetchJaegerTracesWizardPage_loockbackLabel=Lookback (seconds from now): -FetchJaegerTracesWizardPage_nbSpansColumnName=Number of spans -FetchJaegerTracesWizardPage_nbTracesLimitLabel=Number of traces: +FetchJaegerTracesWizardPage_lookbackLabel=Lookback +FetchJaegerTracesWizardPage_maxDurationLabel=Max Duration +FetchJaegerTracesWizardPage_minDurationLabel=Min Duration +FetchJaegerTracesWizardPage_nbSpansColumnName=Number of Spans +FetchJaegerTracesWizardPage_nbTracesLimitLabel=Limit Results FetchJaegerTracesWizardPage_selectAllButton=Select All -FetchJaegerTracesWizardPage_serviceNameLabel=Service: -FetchJaegerTracesWizardPage_spanNameColumnName=First span name +FetchJaegerTracesWizardPage_serviceNameLabel=Service +FetchJaegerTracesWizardPage_spanNameColumnName=First Span Name +FetchJaegerTracesWizardPage_servicesColumnName=Service(s) +FetchJaegerTracesWizardPage_tagsLabel=Tags FetchJaegerTracesWizardPage_traceIdColumnName=Trace ID -FetchJaegerTracesWizardPage_traceName=Destination folder: +FetchJaegerTracesWizardPage_traceName=Destination Folder FetchJaegerTracesWizardPage_tracesGroup=Traces FetchJaegerTracesWizardPage_errorApiConnection=Jaeger API URL not reachable FetchJaegerTracesWizardPage_errorFetchTraces=Not able to fetch traces FetchJaegerTracesWizardPage_errorFileName=Folder name already exist FetchJaegerTracesWizardPage_errorNoTracesFound=No trace found with these parameters -FetchJaegerTracesWizardPage_importDestinationLabel=Import into folder: +FetchJaegerTracesWizardPage_importDestinationLabel=Importation Folder FetchJaegerTracesWizardPage_wizardDescriptionMessage=Search for Jaeger traces to import -FetchJaegerTracesWizardPage_wizardPageName=Fetch traces from Jaeger +FetchJaegerTracesWizardPage_wizardPageName=Fetch Traces from Jaeger FetchJaegerTraceWizard_wizardTitle=Import traces from Jaeger |