-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Jaeger configuration and deployment options #20643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
e9fe881
341c8fb
ebd20ee
a974944
33bfe72
bcbeaa7
ba6ca7a
48d4b99
859510e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,42 +1,73 @@ | ||
| [id="deploying-jaeger"] | ||
| = Deploying Jaeger | ||
| include::modules/ossm-document-attributes.adoc[] | ||
| include::modules/jaeger-document-attributes.adoc[] | ||
| :context: jaeger-deploying | ||
|
|
||
| toc::[] | ||
|
|
||
| The Jaeger Operator includes a custom resource definition (CRD) file that determines the architecture and configuration settings to use when creating the Jaeger custom resources (CR). You can either install the default configuration or modify the custom resource file to better suit your business requirements. | ||
| The Jaeger Operator includes a custom resource definition (CRD) file that defines the architecture and configuration settings for the Jaeger resources. You can either install the default configuration or modify the file to better suit your business requirements. | ||
|
|
||
| Each Jaeger instance is associated with a deployment strategy. You define the strategy is defined in the custom resource file and when you create a Jaeger instance the Operator uses the deployment strategy and configuration options in the CR file to create the objects necessary for the deployment. | ||
| The Jaeger Operator currently supports the following deployment strategies: | ||
| Jaeger has pre-defined deployment strategies. You specify a deployment strategy in the custom resource file. When you create a Jaeger instance the Operator uses this configuration file to create the objects necessary for the deployment. | ||
|
|
||
| * *allInOne* (Default) strategy - This strategy is intended for development, testing, and demo purposes. The main backend components, Agent, Collector and Query service, are all packaged into a single executable which is configured (by default) to use in-memory storage. | ||
| .Jaeger custom resource file showing deployment strategy | ||
| [source,yaml] | ||
| ---- | ||
| apiVersion: jaegertracing.io/v1 | ||
| kind: Jaeger | ||
| metadata: | ||
| name: simple-prod | ||
| spec: | ||
| strategy: production <1> | ||
| ---- | ||
|
|
||
| <1> The Jaeger Operator currently supports the following deployment strategies: | ||
|
|
||
| * *allInOne* (Default) - This strategy is intended for development, testing, and demo purposes. The main backend components, Agent, Collector and Query service, are all packaged into a single executable which is configured (by default) to use in-memory storage. | ||
| + | ||
| [NOTE] | ||
| ==== | ||
| In-memory storage is not persistent, which means that if the Jaeger instance shuts down, restarts, or is replaced, that your trace data will be lost. For persistent storage, use the production Elasticsearch deployment strategy. | ||
| In-memory storage is not persistent, which means that if the Jaeger instance shuts down, restarts, or is replaced, that your trace data will be lost. And in-memory storage cannot be scaled, since each pod has its own memory. For persistent storage, you must use the `production` or `streaming` strategies, which use Elasticsearch as the default storage. | ||
| ==== | ||
|
|
||
| * *production* strategy - The production strategy is intended for production environments, where long term storage of trace data is important, as well as a more scalable and highly available architecture is required. Each of the backend components is therefore deployed separately. The Agent can be injected as a sidecar on the instrumented application or as a daemonset. The Query and Collector services are configured with a supported storage type - currently Elasticsearch. Multiple instances of each of these components can be provisioned as required for performance and resilience purposes. For more information about configuring Elasticsearch with {product-title}, see xref:../../logging/config/cluster-logging-elasticsearch.adoc[Configuring Elasticsearch]. | ||
| * *production* - The production strategy is intended for production environments, where long term storage of trace data is important, as well as a more scalable and highly available architecture is required. Each of the backend components is therefore deployed separately. The Agent can be injected as a sidecar on the instrumented application or as a daemonset. The Query and Collector services are configured with a supported storage type - currently Elasticsearch. Multiple instances of each of these components can be provisioned as required for performance and resilience purposes. | ||
|
|
||
| * *streaming* strategy - The streaming strategy is designed to augment the production strategy by providing a streaming capability that effectively sits between the Collector and the backend storage (Elasticsearch). This provides the benefit of reducing the pressure on the backend storage, under high load situations, and enables other trace post-processing capabilities to tap into the real time span data directly from the streaming platform (Kafka). | ||
| * *streaming* - The streaming strategy is designed to augment the production strategy by providing a streaming capability that effectively sits between the Collector and the backend storage (Elasticsearch). This provides the benefit of reducing the pressure on the backend storage, under high load situations, and enables other trace post-processing capabilities to tap into the real time span data directly from the streaming platform (https://access.redhat.com/documentation/en-us/red_hat_amq/7.6/html/using_amq_streams_on_openshift/index[AMQ Streams]/ https://kafka.apache.org/documentation/[Kafka]). | ||
|
|
||
| [NOTE] | ||
| ==== | ||
| There are two ways to install Jaeger, as part of a service mesh or as a stand alone component. If you have installed Jaeger as part of Red Hat OpenShift Service Mesh, you must configure and deploy Jaeger as part of the xref:../../service_mesh/service_mesh_install/customizing-installation-ossm.adoc#customizing-installation-ossm[ServiceMeshControlPlane]. | ||
| ==== | ||
|
|
||
|
|
||
|
|
||
| // The following include statements pull in the module files that comprise the assembly. | ||
|
|
||
| include::modules/jaeger-deploy-default.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-deploy-production-es.adoc[leveloffset=1] | ||
|
|
||
| include::modules/jaeger-deploy-streaming.adoc[leveloffset=1] | ||
|
|
||
| [id="customizing-jaeger-deployment"] | ||
| = Customizing Jaeger deployment | ||
|
|
||
| include::modules/jaeger-config-default.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-deploy-production-es.adoc[leveloffset=+1] | ||
| include::modules/jaeger-config-collector.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-config-sampling.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-config-storage.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-config-query.adoc[leveloffset=+1] | ||
|
|
||
| include::modules/jaeger-config-ingester.adoc[leveloffset=+1] | ||
|
|
||
| [id="injecting-sidecars"] | ||
| = Injecting sidecars | ||
|
|
||
| include::modules/jaeger-config-production-es.adoc[leveloffset=+1] | ||
| {ProductName} relies on a proxy sidecar within the application’s pod to provide the agent. The Jaeger Operator can inject Jaeger Agent sidecars into Deployment workloads. You can enable automatic sidecar injection or manage it manually. | ||
|
|
||
| include::modules/jaeger-deploy-streaming.adoc[leveloffset=+1] | ||
| include::modules/jaeger-sidecar-automatic.adoc[leveloffset=1] | ||
|
|
||
| include::modules/jaeger-config-streaming.adoc[leveloffset=+1] | ||
| include::modules/jaeger-sidecar-manual.adoc[leveloffset=1] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| //// | ||
| This REFERENCE module included in the following assemblies: | ||
| -rhbjaeger-deploy.adoc | ||
| //// | ||
|
|
||
| [id="jaeger-config-collector_{context}"] | ||
| = Jaeger Collector configuration options | ||
|
|
||
JStickler marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| The Jaeger Collector is the component responsible for receiving the spans that were captured by the tracer and writing them to a persistent storage (Elasticsearch) when using the `production` strategy, or to AMQ Streams when using the `streaming` strategy. | ||
|
|
||
| The collectors are stateless and thus many instances of Jaeger Collector can be run in parallel. Collectors require almost no configuration, except for the location of the Elasticsearch cluster. | ||
|
||
|
|
||
| .Jaeger collector parameters | ||
| [options="header"] | ||
| [cols="l, a, a, a"] | ||
| |=== | ||
| |Parameter |Description |Values |Default value | ||
| |spec: | ||
| collector: | ||
| options: {} | ||
| |Configuration options that define the Jaeger Collector. | ||
| | | ||
| | | ||
|
|
||
| |kafka: | ||
| producer: | ||
| topic: jaeger-spans | ||
| |The `topic` parameter identifies the Kafka configuration used by the collector to produce the messages, and the ingester to consume the messages. | ||
| |Label for the producer | ||
| | | ||
|
|
||
| |kafka: | ||
| producer: | ||
| brokers: my-cluster-kafka-brokers.kafka:9092 | ||
| |Identifies the Kafka configuration used by the Collector to produce the messages. If brokers are not specified, and you have AMQ Streams 1.4.0+ installed, Jaeger will self-provision Kafka. | ||
| | | ||
| | | ||
|
|
||
| |log-level: | ||
| |Logging level for the collector. | ||
| |Possible values: `trace`, `debug`, `info`, `warning`, `error`, `fatal`, `panic`. | ||
| | | ||
| |=== | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,126 @@ | ||
| //// | ||
| This REFERENCE module included in the following assemblies: | ||
| - rhbjaeger-deploying.adoc | ||
| //// | ||
|
|
||
| [id="jaeger-config-default_{context}"] | ||
| = Jaeger default configuration options | ||
| :pantheon-module-type: REFERENCE | ||
|
|
||
| The Jaeger custom resource (CR) defines the architecture and settings to be used when creating the Jaeger resources. You can modify these parameters to customize your Jaeger implementation to your business needs. | ||
|
|
||
| .Jaeger generic YAML example | ||
| [source,yaml] | ||
| ---- | ||
| apiVersion: jaegertracing.io/v1 | ||
| kind: Jaeger | ||
| metadata: | ||
| name: name | ||
| spec: | ||
| strategy: <deployment_strategy> | ||
| allInOne: | ||
| options: {} | ||
| resources: {} | ||
| agent: | ||
| options: {} | ||
| resources: {} | ||
| collector: | ||
| options: {} | ||
| resources: {} | ||
| sampling: | ||
| options: {} | ||
| storage: | ||
| type: | ||
| options: {} | ||
| query: | ||
| options: {} | ||
| resources: {} | ||
| ingester: | ||
| options: {} | ||
| resources: {} | ||
| options: {} | ||
| ---- | ||
|
|
||
| .Jaeger parameters | ||
| [options="header"] | ||
| |=== | ||
| |Parameter |Description |Values |Default value | ||
|
|
||
| |apiVersion: | ||
| |Version of the Application Program Interface to use when creating the object. | ||
| |`jaegertracing.io/v1` | ||
| |`jaegertracing.io/v1` | ||
|
|
||
| |kind: | ||
| |Defines the kind of Kubernetes object to create. | ||
| |`jaeger` | ||
| | | ||
|
|
||
| |metadata: | ||
| |Data that helps uniquely identify the object, including a `name` string, `UID`, and optional `namespace`. | ||
| | | ||
| |OpenShift automatically generates the `UID` and completes the `namespace` with the name of the project where the object is created. | ||
|
|
||
| |name: | ||
| |Name for the object. | ||
| |The name of your Jaeger instance. | ||
| |`jaeger-all-in-one-inmemory` | ||
|
|
||
| |spec: | ||
| |Specification for the object to be created. | ||
| |Contains all of the configuration parameters for your Jeager instance. When a common definition (for all Jaeger components) is required, it is defined under the spec node. When the definition relates to an individual component, it is placed under the spec/<component> node. | ||
| |N/A | ||
|
|
||
| |strategy: | ||
| |Jaeger deployment strategy | ||
| |`allInOne`, `production`, or `streaming` | ||
| |`allInOne` | ||
|
|
||
| |allInOne: | ||
| |Because the allInOne image deploys the agent, collector, query, ingester, Jaeger UI in a single pod, configuration for this deployment should nest component configuration under the allInOne parameter. | ||
| | | ||
| | | ||
|
|
||
| |agent: | ||
| |Configuration options that define the Jaeger agent. | ||
| | | ||
| | | ||
|
|
||
| |collector: | ||
| |Configuration options that define the Jaeger Collector. | ||
| | | ||
| | | ||
|
|
||
| |sampling: | ||
| |Configuration options that define the sampling strategies for tracing. | ||
| | | ||
| | | ||
|
|
||
| |storage: | ||
| |Configuration options that define the storage. All storage related options should be placed under `storage`, rather than under the `allInOne` or other component options. | ||
| | | ||
| | | ||
|
|
||
| |query: | ||
| |Configuration options that define the Query service. | ||
| | | ||
| | | ||
|
|
||
| |ingester: | ||
| |Configuration options that define the Ingester service. | ||
| | | ||
| | | ||
|
|
||
| |=== | ||
|
|
||
|
|
||
| The following example YAML is the minimum required to create a Jaeger instance using the default settings. | ||
|
|
||
| .Example minimum required jaeger-all-in-one.yaml | ||
| [source,yaml] | ||
| ---- | ||
| apiVersion: jaegertracing.io/v1 | ||
| kind: Jaeger | ||
| metadata: | ||
| name: jaeger-all-in-one-inmemory | ||
| ---- |
Uh oh!
There was an error while loading. Please reload this page.