diff --git a/distr_tracing/distr_tracing_tempo/distr-tracing-tempo-configuring.adoc b/distr_tracing/distr_tracing_tempo/distr-tracing-tempo-configuring.adoc index 841663f9be21..508196c2dca4 100644 --- a/distr_tracing/distr_tracing_tempo/distr-tracing-tempo-configuring.adoc +++ b/distr_tracing/distr_tracing_tempo/distr-tracing-tempo-configuring.adoc @@ -21,6 +21,11 @@ include::modules/distr-tracing-tempo-config-storage.adoc[leveloffset=+2] include::modules/distr-tracing-tempo-config-query-frontend.adoc[leveloffset=+2] +[role="_additional-resources"] +[id="additional-resources_distr-tracing-tempo-configuring"] +==== Additional resources +* xref:../../nodes/scheduling/nodes-scheduler-taints-tolerations.adoc#nodes-scheduler-taints-tolerations-about_nodes-scheduler-taints-tolerations[Understanding taints and tolerations] + include::modules/distr-tracing-tempo-config-spanmetrics.adoc[leveloffset=+2] include::modules/distr-tracing-tempo-config-multitenancy.adoc[leveloffset=+2] diff --git a/modules/distr-tracing-tempo-config-default.adoc b/modules/distr-tracing-tempo-config-default.adoc index 489d9f66626f..573fe9815dd0 100644 --- a/modules/distr-tracing-tempo-config-default.adoc +++ b/modules/distr-tracing-tempo-config-default.adoc @@ -38,8 +38,8 @@ spec: |apiVersion: |API version to use when creating the object. -|`tempotracing.io/v1` -|`tempotracing.io/v1` +|`tempo.grafana.com/v1alpha1` +|`tempo.grafana.com/v1alpha1` |kind: |Defines the kind of Kubernetes object to create. diff --git a/modules/distr-tracing-tempo-config-query-frontend.adoc b/modules/distr-tracing-tempo-config-query-frontend.adoc index 9230513396d4..425c5a87053d 100644 --- a/modules/distr-tracing-tempo-config-query-frontend.adoc +++ b/modules/distr-tracing-tempo-config-query-frontend.adoc @@ -6,62 +6,125 @@ [id="distr-tracing-tempo-config-query_{context}"] = Query configuration options -Query is a service that retrieves traces from storage and hosts the user interface to display them. +Two components of the {TempoShortName}, the querier and query frontend, manage queries. You can configure both of these components. -.Parameters used by the {TempoOperator} to define Query +The querier component finds the requested trace ID in the ingesters or back-end storage. Depending on the set parameters, the querier component can query both the ingesters and pull bloom or indexes from the back end to search blocks in object storage. The querier component exposes an HTTP endpoint at `GET /querier/api/traces/`, but it is not expected to be used directly. Queries must be sent to the query frontend. + +.Configuration parameters for the querier component [options="header"] -[cols="l, a, a, a"] |=== -|Parameter |Description |Values |Default value - -|spec: - query: - replicas: -|Specifies the number of Query replicas to create. -|Positive integer -| +|Parameter |Description |Values + +|`nodeSelector` +|The simple form of the node-selection constraint. +|type: object + +|`replicas` +|The number of replicas to be created for the component. +|type: integer; format: int32 + +|`tolerations` +|Component-specific pod tolerations. +|type: array |=== +The query frontend component is responsible for sharding the search space for an incoming query. The query frontend exposes traces via a simple HTTP endpoint: `GET /api/traces/`. Internally, the query frontend component splits the `blockID` space into a configurable number of shards and then queues these requests. The querier component connects to the query frontend component via a streaming gRPC connection to process these sharded queries. -.Configuration parameters passed to Query +.Configuration parameters for the query frontend component [options="header"] -[cols="l, a, a, a"] |=== -|Parameter |Description |Values |Default value - -|spec: - query: - options: {} -|Configuration options that define the Query service. -| -| - -|options: - log-level: -|Logging level for Query. -|`debug`, `info`, `warn`, `error`, `fatal`, `panic` -| - -|options: - query: - base-path: -|You can set the base path for all tempo-query HTTP routes to a non-root value: for example, `/tempo` will cause all UI URLs to start with `/tempo`. This can be useful when running `tempo-query` behind a reverse proxy. -|`/` -| +|Parameter |Description |Values + +|`component` +|Configuration of the query frontend component. +|type: object + +|`component.nodeSelector` +|The simple form of the node selection constraint. +|type: object + +|`component.replicas` +|The number of replicas to be created for the query frontend component. +|type: integer; format: int32 + +|`component.tolerations` +|Pod tolerations specific to the query frontend component. +|type: array + +|`jaegerQuery` +|The options specific to the Jaeger Query component. +|type: object + +|`jaegerQuery.enabled` +|When `enabled`, creates the Jaeger Query component,`jaegerQuery`. +|type: boolean + +|`jaegerQuery.ingress` +|The options for the Jaeger Query ingress. +|type: object + +|`jaegerQuery.ingress.annotations` +|The annotations of the ingress object. +|type: object + +|`jaegerQuery.ingress.host` +|The hostname of the ingress object. +|type: string + +|`jaegerQuery.ingress.ingressClassName` +|The name of an IngressClass cluster resource. Defines which ingress controller serves this ingress resource. +|type: string + +|`jaegerQuery.ingress.route` +|The options for the OpenShift route. +|type: object + +|`jaegerQuery.ingress.route.termination` +|The termination type. The default is `edge`. +|type: string (enum: insecure, edge, passthrough, reencrypt) + +|`jaegerQuery.ingress.type` +|The type of ingress for the Jaeger Query UI. The supported types are `ingress`, `route`, and `none`. +|type: string (enum: ingress, route) + +|`jaegerQuery.monitorTab` +|The monitor tab configuration. +|type: object + +|`jaegerQuery.monitorTab.enabled` +|Enables the monitor tab in the Jaeger console. The `PrometheusEndpoint` must be configured. +|type: boolean + +|`jaegerQuery.monitorTab.prometheusEndpoint` +|The endpoint to the Prometheus instance that contains the span rate, error, and duration (RED) metrics. For example, `+https://thanos-querier.openshift-monitoring.svc.cluster.local:9091+`. +|type: string + |=== -.Sample Query configuration +.Example configuration of the query frontend component in a `TempoStack` CR [source,yaml] ---- -apiVersion: tempotracing.io/v1 -kind: "Tempo" +apiVersion: tempo.grafana.com/v1alpha1 +kind: TempoStack metadata: - name: "my-tempo" + name: simplest spec: - strategy: allInOne - allInOne: - options: - log-level: debug - query: - base-path: /tempo + storage: + secret: + name: minio + type: s3 + storageSize: 200M + resources: + total: + limits: + memory: 2Gi + cpu: 2000m + template: + queryFrontend: + jaegerQuery: + enabled: true + ingress: + route: + termination: edge + type: route ---- diff --git a/modules/distr-tracing-tempo-config-spanmetrics.adoc b/modules/distr-tracing-tempo-config-spanmetrics.adoc index 9988bbc09d6a..3e3d4dfa6692 100644 --- a/modules/distr-tracing-tempo-config-spanmetrics.adoc +++ b/modules/distr-tracing-tempo-config-spanmetrics.adoc @@ -7,7 +7,7 @@ = Configuration of the monitor tab in Jaeger UI Trace data contains rich information, and the data is normalized across instrumented languages and frameworks. -Therefore, additional metrics can be extracted from traces. These metrics are request count, duration, and error count (RED). +Therefore, request rate, error, and duration (RED) metrics can be extracted from traces. The metrics can be visualized in Jaeger console in the *Monitor* tab. The metrics are derived from spans in the OpenTelemetry Collector that are scraped from the Collector by the Prometheus deployed in the user-workload monitoring stack.