CLI for OpenTelemetry Traces and Metrics in Python
Project description
opentelemetry-cli: human-friendly OpenTelemetry CLI
Provides a CLI for crafting and sending telemetry data over OTLP (OpenTelemetry Line Protocol).
Requirements
Installation
There are several ways of running this CLI.
Docker
docker pull opentelemetry-cli:<version>
You can specify a version like 0.2.0
or use latest
to get the most up-to-date version.
Run latest version of the CLI in a container:
# set OTEL_EXPORTER_OTLP_ENDPOINT to your OTel collector instance
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
docker run --rm -e OTEL_EXPORTER_OTLP_ENDPOINT opentelemetry-cli:latest --help
Replace --help
with any otel
command, without otel
itself.
PyPI
pip install otel-cli
Usage
First, define OTEL_EXPORTER_OTLP_ENDPOINT
in your shell and set it to the OTLP collector instance you want to use.
For a local collector, set this to http://127.0.0.1:4317
like so:
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
Spans
To send a span, run:
otel span "span name"
To set a different service name, use the --service
flag:
otel span --service "My Service" "span name"
You can also pass custom start and end dates. These should be nanoseconds since the epoch:
SPAN_START_DATE=$(date --date "2 minutes ago" +%s%N)
SPAN_END_DATE=$(date +%s%N)
otel span --start "$SPAN_START_DATE" --end "$SPAN_END_DATE" "span name"
By default, spans are reported with a status of UNKNOWN
. To pass a different status, use the --status
option:
otel span --status OK "successful span"
otel span --status ERROR "failed span"
To add attributes to spans, use the --attribute|-a
option. It accepts attributes in a key=value
format. Use multiple instances of this option to send multiple attributes.
otel span -a "my.foo=bar" -a "my.bar=baz" "span name"
otel will create a random trace ID and span ID. You can override those:
otel span --trace-id "4d999706756fd1859345f8dc6d0af218" --span-id "ac2a3b2b19ac602d"
Sending multiple spans in a trace
To create a single trace with one root span and multiple child spans, we first need to generate a trace ID for the entire trace and a span ID for the parent span. Use otel generate
to create those:
TRACE_ID=$(otel generate trace_id)
PARENT_SPAN=$(otel generate span_id)
Then, when creating children span, we pass this information in the format of a TRACEPARENT
:
TRACEPARENT="00-${TRACE_ID}-${PARENT_SPAN}-01"
otel span --traceparent "$TRACEPARENT" "Child A Name"
otel span --traceparent "$TRACEPARENT" "Child B Name"
Finally, send the parent span using the pre-generated IDs:
otel span --trace-id "$TRACE_ID" --span-id "$PARENT_SPAN" "Parent Span Name"
Metrics
Use otel metric
to send metric data. The following metric types are currently supported:
- Counter
- UpDownCounter
Counter
Counters are metrics that can count only up. By specifying just the counter name, it will be incremented by 1:
otel metric counter my-counter
You can specify a different value to increase by. For example, this will increase the counter by 1024:
otel metric counter total-bytes 1024
Counters support attributes just like spans, using the -a|--attribute
option.
otel metric counter my-counter -a "host.name=localhost"
By default, attributes are strings. You can set them to other types by using one of the following prefixes:
int:
- value will be converted to an integer.float:
- value will be converted to a floating point number.bool:
- value will be converted to a boolean.- Values of
y
,yes
,t
,true
,on
, and1
are converted toTrue
. - Values of
n
,no
,f
,false
,off
, and0
are converted toFalse
. - Values are not case-sensitive.
- Values of
Example:
otel metric counter my-counter \
-a "key1=just a string" \
-a "int:key2=10" \
-a "float:key3=3.14" \
-a "bool:key4=YES"
UpDownCounter
UpDownCounters are metrics that count up or down. If not given a value, the UpDownCounter will increment by one:
otel metric updown queue-length
You can specify a different value to increase by. For example, this will increase the counter by 1024:
otel metric updown my-updowncounter 1024
To decrease the counter number, pass a negative number like so:
otel metric updown queue-length -1
Packaging
This project uses poetry to manage dependencies, build, etc.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file otel_cli-0.3.0.tar.gz
.
File metadata
- Download URL: otel_cli-0.3.0.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.7 Linux/5.19.16-200.fc36.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c94fb4fae66a2b445c9a68df858700ca126340863d3d6ed8dc7bca4572f1092e |
|
MD5 | b44cb4b14bc19b26186d37e0425dd201 |
|
BLAKE2b-256 | 21fd807a8480e1c2ce2bcdd4e7a92246fe39dda0f234509799199255728c0215 |
File details
Details for the file otel_cli-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: otel_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.7 Linux/5.19.16-200.fc36.x86_64
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 684befd0cdeeada856a0ee62823b0c6395ebcecae64182f354ba0912c07e078f |
|
MD5 | 71ced54dbe87defdb3d554ae2a7fb496 |
|
BLAKE2b-256 | 46bd67d46a7e3dcd032eb1c758f08f8187c78676d70230aca6d3392a0054d54d |