C++ OpenTracing binding for Jaeger
Please see CONTRIBUTING.md.
jaeger-client-cpp is built using CMake. It will automatically download needed dependencies using Hunter.
To build:
mkdir build
cd build
cmake ..
makeAfter building, the example program can be run with:
./app ../examples/config.ymlTo run tests:
make testTo install the library:
make installThis project uses Apache Thrift for wire-format protocol support code generation. It currently requires Thrift 0.11.0.
The code can be re-generated with
$ git submodule update --init
$ find idl/thrift/ -type f -name \*.thrift -exec thrift -gen cpp -out src/jaegertracing/thrift-gen {} \;
$ git apply scripts/thrift-gen.patchThe default host and port for Jaeger Agent is 127.0.0.1:6831. When the application and Jaeger Agent are running in different containers on the same host, the application's notion of localhost/127.0.0.1 it restriced to its own container, so in this case it's usually necessary to override the Agent's host/port by updating your reporter configuration:
YAML configuration:
reporter:
localAgentHostPort: jaeger-agent:6831NOTE: It is not recommended to use a remote host for UDP connections.
In case the client should connect directly to the collector instead of going through an agent, it's necessary update the reporter configuration
reporter:
endpoint: http://${collectorhost}:${collectorport}/api/tracesNote that if both localAgentHostPort and endpoint are specified, the endpoint will be used.
The default sampling collector URL is http://127.0.0.1:5778/sampling. Similar to UDP address above, you can use a different URL by updating the sampler configuration.
sampler:
samplingServerURL: http://jaeger-agent.local:5778/samplingIt's possible to populate the tracer configuration from the environement variables by calling jaegertracing::Config::fromEnv.
The following property names are currently available:
| Property | Description |
|---|---|
| JAEGER_SERVICE_NAME | The service name |
| JAEGER_DISABLED (not recommended) | Instructs the Configuration to return a no-op tracer |
| JAEGER_AGENT_HOST | The hostname for communicating with agent via UDP |
| JAEGER_AGENT_PORT | The port for communicating with agent via UDP |
| JAEGER_ENDPOINT | The traces endpoint, in case the client should connect directly to the Collector, like http://jaeger-collector:14268/api/traces |
| JAEGER_REPORTER_LOG_SPANS | Whether the reporter should also log the spans |
| JAEGER_REPORTER_MAX_QUEUE_SIZE | The reporter's maximum queue size |
| JAEGER_REPORTER_FLUSH_INTERVAL | The reporter's flush interval (ms) |
| JAEGER_SAMPLER_TYPE | The sampler type |
| JAEGER_SAMPLER_PARAM | The sampler parameter (double) |
| JAEGER_SAMPLING_ENDPOINT | The url for the remote sampling conf when using sampler type remote. Default is http://127.0.0.1:5778/sampling |
| JAEGER_TAGS | A comma separated list of name = value tracer level tags, which get added to all reported spans. The value can also refer to an environment variable using the format ${envVarName:default}, where the :default is optional, and identifies a value to be used if the environment variable cannot be found |