mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
170 lines
4.8 KiB
Plaintext
170 lines
4.8 KiB
Plaintext
// Module is included in the following assemblies:
|
|
//
|
|
// * serverless/serverless-tracing.adoc
|
|
|
|
:_mod-docs-content-type: PROCEDURE
|
|
[id="serverless-open-telemetry_{context}"]
|
|
= Using {DTProductName} to enable distributed tracing
|
|
|
|
{DTProductName} is made up of several components that work together to collect, store, and display tracing data.
|
|
|
|
.Prerequisites
|
|
|
|
* You have access to an {product-title} account with cluster administrator access.
|
|
* You have not yet installed the {ServerlessOperatorName}, Knative Serving, and Knative Eventing. These must be installed after the {DTProductName} installation.
|
|
* You have installed {DTProductName} by following the {product-title} "Installing distributed tracing" documentation.
|
|
* You have installed the OpenShift CLI (`oc`).
|
|
* You have created a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in {product-title}.
|
|
|
|
.Procedure
|
|
|
|
. Create an `OpenTelemetryCollector` custom resource (CR):
|
|
+
|
|
.Example OpenTelemetryCollector CR
|
|
[source,yaml]
|
|
----
|
|
apiVersion: opentelemetry.io/v1alpha1
|
|
kind: OpenTelemetryCollector
|
|
metadata:
|
|
name: cluster-collector
|
|
namespace: <namespace>
|
|
spec:
|
|
mode: deployment
|
|
config: |
|
|
receivers:
|
|
zipkin:
|
|
processors:
|
|
exporters:
|
|
jaeger:
|
|
endpoint: jaeger-all-in-one-inmemory-collector-headless.tracing-system.svc:14250
|
|
tls:
|
|
ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
|
|
logging:
|
|
service:
|
|
pipelines:
|
|
traces:
|
|
receivers: [zipkin]
|
|
processors: []
|
|
exporters: [jaeger, logging]
|
|
----
|
|
|
|
. Verify that you have two pods running in the namespace where {DTProductName} is installed:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc get pods -n <namespace>
|
|
----
|
|
+
|
|
.Example output
|
|
[source,terminal]
|
|
----
|
|
NAME READY STATUS RESTARTS AGE
|
|
cluster-collector-collector-85c766b5c-b5g99 1/1 Running 0 5m56s
|
|
jaeger-all-in-one-inmemory-ccbc9df4b-ndkl5 2/2 Running 0 15m
|
|
----
|
|
|
|
. Verify that the following headless services have been created:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
$ oc get svc -n <namespace> | grep headless
|
|
----
|
|
+
|
|
.Example output
|
|
[source,terminal]
|
|
----
|
|
cluster-collector-collector-headless ClusterIP None <none> 9411/TCP 7m28s
|
|
jaeger-all-in-one-inmemory-collector-headless ClusterIP None <none> 9411/TCP,14250/TCP,14267/TCP,14268/TCP 16m
|
|
----
|
|
+
|
|
These services are used to configure Jaeger, Knative Serving, and Knative Eventing. The name of the Jaeger service may vary.
|
|
|
|
. Install the {ServerlessOperatorName} by following the "Installing the {ServerlessOperatorName}" documentation.
|
|
|
|
. Install Knative Serving by creating the following `KnativeServing` CR:
|
|
+
|
|
.Example KnativeServing CR
|
|
[source,yaml]
|
|
----
|
|
apiVersion: operator.knative.dev/v1beta1
|
|
kind: KnativeServing
|
|
metadata:
|
|
name: knative-serving
|
|
namespace: knative-serving
|
|
spec:
|
|
config:
|
|
tracing:
|
|
backend: "zipkin"
|
|
zipkin-endpoint: "http://cluster-collector-collector-headless.tracing-system.svc:9411/api/v2/spans"
|
|
debug: "false"
|
|
sample-rate: "0.1" <1>
|
|
----
|
|
<1> The `sample-rate` defines sampling probability. Using `sample-rate: "0.1"` means that 1 in 10 traces are sampled.
|
|
|
|
. Install Knative Eventing by creating the following `KnativeEventing` CR:
|
|
+
|
|
.Example KnativeEventing CR
|
|
[source,yaml]
|
|
----
|
|
apiVersion: operator.knative.dev/v1beta1
|
|
kind: KnativeEventing
|
|
metadata:
|
|
name: knative-eventing
|
|
namespace: knative-eventing
|
|
spec:
|
|
config:
|
|
tracing:
|
|
backend: "zipkin"
|
|
zipkin-endpoint: "http://cluster-collector-collector-headless.tracing-system.svc:9411/api/v2/spans"
|
|
debug: "false"
|
|
sample-rate: "0.1" <1>
|
|
----
|
|
<1> The `sample-rate` defines sampling probability. Using `sample-rate: "0.1"` means that 1 in 10 traces are sampled.
|
|
|
|
. Create a Knative service:
|
|
+
|
|
.Example service
|
|
[source,yaml]
|
|
----
|
|
apiVersion: serving.knative.dev/v1
|
|
kind: Service
|
|
metadata:
|
|
name: helloworld-go
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: helloworld-go
|
|
annotations:
|
|
autoscaling.knative.dev/minScale: "1"
|
|
autoscaling.knative.dev/target: "1"
|
|
spec:
|
|
containers:
|
|
- image: quay.io/openshift-knative/helloworld:v1.2
|
|
imagePullPolicy: Always
|
|
resources:
|
|
requests:
|
|
cpu: "200m"
|
|
env:
|
|
- name: TARGET
|
|
value: "Go Sample v1"
|
|
----
|
|
|
|
. Make some requests to the service:
|
|
+
|
|
.Example HTTPS request
|
|
[source,terminal]
|
|
----
|
|
$ curl https://helloworld-go.example.com
|
|
----
|
|
|
|
. Get the URL for the Jaeger web console:
|
|
+
|
|
.Example command
|
|
[source,terminal]
|
|
----
|
|
$ oc get route jaeger-all-in-one-inmemory -o jsonpath='{.spec.host}' -n <namespace>
|
|
----
|
|
+
|
|
You can now examine traces by using the Jaeger console.
|