6.3 Test Routing Connector
Exercise
In this section, we will test the routing
rule configured for the Gateway. The expected result is that a span
generated by the loadgen
that match the "[deployment.environment"] == "security-applications"
rule will be sent to the gateway-traces-route2-security.out
file.
Start the Gateway: In your Gateway terminal window start the Gateway.
../otelcol --config gateway.yaml
Start the Agent: In your Agent terminal window start the Agent.
../otelcol --config agent.yaml
Send a Regular Span: In the Loadgen terminal window send a regular span using the loadgen
:
../loadgen -count 1
Both the Agent and Gateway will display debug information. The gateway will also generate a new gateway-traces-route1-regular.out
file, as this is now the designated destination for regular spans.
Tip
If you check gateway-traces-route1-regular.out
, it will contain the span
sent by loadgen
. You will also see an empty gateway-traces-route2-security..out
file, as the routing configuration creates output files immediately, even if no matching spans have been processed yet.
Send a Security Span: In the Loadgen terminal window send a security span using the security
flag:
../loadgen -security -count 1
Again, both the Agent and Gateway should display debug information, including the span you just sent. This time, the Gateway will write a line to the gateway-traces-route2-security.out
file, which is designated for spans where the deployment.environment
resource attribute matches "security-applications"
.
jq -c '.resourceSpans[] as $resource | $resource.scopeSpans[].spans[] | {spanId: .spanId, deploymentEnvironment: ($resource.resource.attributes[] | select(.key == "deployment.environment") | .value.stringValue)}' gateway-traces-route2-security.out
{"spanId":"cb799e92e26d5782","deploymentEnvironment":"security-applications"}
You can repeat this scenario multiple times, and each trace will be written to its corresponding output file.
Important
Stop the Agent and the Gateway processes by pressing Ctrl-C
in their respective terminals.
Conclusion
In this section, we successfully tested the routing connector in the gateway by sending different spans and verifying their destinations.
Regular spans were correctly routed to
gateway-traces-route1-regular.out
, confirming that spans without a matchingdeployment.environment
attribute follow the default pipeline.Security-related spans were routed to
gateway-traces-route2-security.out
, demonstrating that the routing rule based on"deployment.environment": "security-applications"
works as expected.
By inspecting the output files, we confirmed that the OpenTelemetry Collector correctly evaluates span attributes and routes them to the appropriate destinations. This validates that routing rules can effectively separate and direct telemetry data for different use cases.
You can now extend this approach by defining additional routing rules to further categorize spans, metrics, and logs based on different attributes.