Tracing
Tracing is a way of profiling and monitoring events in applications. This helps to reveal the performance of critical operations with correct information. Tracer also helps to break down our operations to the database, APIs, and other Microservices.
Jaeger is a distributed tracing system and is used for monitoring and troubleshooting Microservices-based distributed systems. Jaeger generates a time-line view with traces. This helps to understand the request flow. Jaeger also assists in detecting performance bottlenecks.
Monitor
Once the Docker is up and running, monitor trace using the Jaeger for the Microservices.
For monitoring Trace both the Microservices and Jaeger should be available in the same network.
To enable the Jaeger service in Docker, run the below command in command prompt.
docker run -d --name jaeger --network=infinity_network -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 14250:14250 -p 9411:9411 jaegertracing/all-in-one:1.22
After the above configurations, click the API and monitor the trace using the Jaeger service. Jaeger UI is accessed through following end point: http://{hostname}:16686/search
Kubernetes Configuration
In order to enable tracer in Microservices, the following configurations need to be added:
| Configuration | Configuration Description |
|---|---|
|
temn.msf.tracer.enabled: boolean (Eg true or false) |
Switch to enable or disable tracer functionality for a given service. |
|
temn.tracer.exporter.host: hostname (Eg jaeger or "172.25.0.7") |
Hostname or Service name of any tracer backend service. (Currently we are using Jaeger). |
|
temn.tracer.exporter.port: 14268 |
Port number of tracer backend service. |
|
temn.msf.service.name: Any string (Eg INGESTER) |
When given will be used to generate name of service Eg: TEMN-MICROSERVICE-{MSname}-{service-name}. |
Enabling Trace in K8
Trace can be monitored for all the type of services such as api and ingestion. Below is an example configuration for the api services to be monitored.
By default jaeger is disabled. To enable it in the Microservice, set the property temn.msf.tracer.enabled as true.
Set the below mentioned Tracer configuration properties as Environment Variables in duediligence-configmap.yml which in turn will refer the start scripts(start-duediligence-mongo.bat/start-duediligence-mongo.sh/start-duediligence-postgresql.bat/start-duediligence-postgresql.sh) for the value of the respective Tracer properties.
#--- Tracer Configuration ---
temn.msf.tracer.enabled: {{ .Values.tracing.enabled | quote}}
temn.msf.service.name: {{ .Values.tracing.temn_msf_service_name | quote}}
temn.tracer.port: {{ .Values.tracing.port | quote}}
temn.tracer.host: {{ .Values.tracing.host | quote}}
#--- TRACING PROPERTIES --- SET tracing_enabled=false SET temn_msf_service_name="api" SET tracing_port=14268 SET host=jaeger
If value for a property has not been set in start scripts, then the respective JWT configuration properties values will be taken from values.yaml.
tracing: enabled: false temn_msf_service_name: "api" port: 14268 host: jaeger
In this topic