This repository demonstrates Instana's Envoy Proxy tracing functionality based on OpenTracing.
Envoy Proxy versions 1.15 until 1.29 are supported by the distributed tracing based on OpenTracing.
With Envoy version 1.30 onwards, tracing is based on OpenTelemetry. Visit the demonstration repository envoy-otel-tracing for those.
A docker-compose
installation running on your machine. This demo has been created and tested on Mac OS
and RHEL with docker-compose
and docker-machine
.
Create a .env
file in the root of the checked-out version of this repository and enter the following content.
The values need to be adjusted to your environment.
agent_key=<agent secret key>
download_key=<download secret key (optional agent key with download privileges)>
agent_zone=<name of the zone for the agent; default: envoy-tracing-demo>
agent_endpoint=<local ip or remote host; e.g. ingress-red-saas.instana.io>
agent_endpoint_port=<443 already set as default; or 4443 for local>
In most scenarios only the field agent_key
and agent_endpoint
are required.
A template .env.template can be copied to .env
for your convenience.
docker-compose build
docker-compose up
This will build and launch the following components:
client-app
service, a simple Spring Boot application that issues a request every second to the ...envoy
service, which routes all incoming requests to the ...server-app
service, a simple Spring Boot application that returns200
to any HTTP request.
After the agent is bootstrapped and starts accepting spans from Envoy, the resulting traces in the Analyze view will look like this:
To view all calls in its own application, create a new Application Perspective from the Application menu
with a filter for the agent zone (agent.zone
). The filter value must be the value of the agent_zone
from
the .env
file. If agent_zone
is not set, it defaults to envoy-tracing-demo
.
Link: https://artifact-public.instana.io/artifactory/shared/com/instana/libinstana_sensor/
Credentials: _:${agent_key}
Only linux-amd64-libcxx-libinstana_sensor.so
is required.
- No changes regarding Envoy Proxy tracing
- New Feature: support of
INSTANA_LOG_LEVEL
- Security fixes: strlen security fix, fix for CVE-2023-46137
- CI/CD pipelines: consolidate proactive support and sonarqube coverage
- Release W3C trace context support
- Fix discovery response bug when tracing section contains additional fields not used by tracer.
- W3C Trace Context: truncate 128 bit IDs to 64 bit
- Use "tracing" config from agent announce response, fall back to legacy extra headers
- Support ipv4 and ipv6 addresses to connect to Instana agent
- Miscellaneous minor code refactoring and improvements
- Improved build times and ergonomics
- Consolidate build system and CI/CD pipelines
- Changed log level for ignored JSON fields in discovery response from warn to debug
- added support for Envoy 1.15 and greater
- dropped support for Envoy 1.13 and below in new releases
- dropped initial wait time of 10s before connecting to the Instana agent
- now dropping all spans if the agent connection is not established
- avoiding too delayed spans
- avoiding using wrongs secrets configuration
- reduced the interval to poll the answering Instana agent from 30s to 5s
- faster agent connection
- now storing trace and span IDs as hex strings internally resulting in better debug output
- fixed handling of requests where
X-INSTANA-L
is set to zero
- fixed the agent discovery if
/proc/$pid/sched
(CONFIG_SCHED_DEBUG
) is not available
- added support for secrets in URLs configured by the agent
- added support for hiding synthetic calls
- made MaxBufferedSpans configurable (default
1000
)- added
max_buffered_spans
JSON config entry
- added
- added EUM handling for NGINX tracing only
- handling correlation part of extended
X-INSTANA-L
header for mobile EUM - HTTP extra headers are captured also in root spans
- requires an Instana backend update (v174) for those heads to be matched by the
call.http.header
filter
- requires an Instana backend update (v174) for those heads to be matched by the
- logging
libinstana_sensor
version upon module load- information gathering for better support
- added timestamps and prefix "[lis]" to log messages for better debugging
- added pid to log messages
- enforcing IPv4 in agent host name resolution
- avoiding failure due to IPv6 address for same host name
- implemented a new discovery request format
- requiring the C++ sensor 1.1.0 agent part for faster agent connection
- reworked the agent connection/discovery to quickly connect
- if no agent host is configured, then the gateway is checked first
- only logging an error if connections to all agent host candidates fail
- converted misleading error message upon failure of first candidate
- increased span flushing interval from 5s to 1s
- no changes relevant to Envoy tracing
- initial public release