All Projects β†’ lightstep β†’ otel-launcher-go

lightstep / otel-launcher-go

Licence: Apache-2.0 license
Launcher, a Lightstep Distro for OpenTelemetry Go πŸš€

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to otel-launcher-go

workit
Extensible worker for Node.js that works with both Zeebe and Camunda BPM platforms powered by TypeScript
Stars: ✭ 51 (-37.8%)
Mutual labels:  opentelemetry
Datav
πŸ“Šhttps://datav.io is a modern APM, provide observability for your business, application and infrastructure. It's also a lightweight alternative to Grafana.
Stars: ✭ 2,757 (+3262.2%)
Mutual labels:  opentelemetry
opentelemetry-tracing-demo
Example about how to use OpenTelemetry for tracing when we have a series of distributed applications communicating between them
Stars: ✭ 27 (-67.07%)
Mutual labels:  opentelemetry
otel-launcher-node
Launcher, a Lightstep Distro for OpenTelemetry Node.js πŸš€
Stars: ✭ 20 (-75.61%)
Mutual labels:  opentelemetry
Gf
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
Stars: ✭ 6,501 (+7828.05%)
Mutual labels:  opentelemetry
aws-o11y-recipes
recipes for observability solutions at AWS
Stars: ✭ 110 (+34.15%)
Mutual labels:  opentelemetry
splunk-otel-js-web
Splunk distribution of Open Telemetry for browser environment.
Stars: ✭ 23 (-71.95%)
Mutual labels:  opentelemetry
aws-otel-java-instrumentation
AWS Distro for OpenTelemetry Java Instrumentation Library
Stars: ✭ 41 (-50%)
Mutual labels:  opentelemetry
Opentelemetry Specification
Specifications for OpenTelemetry
Stars: ✭ 2,242 (+2634.15%)
Mutual labels:  opentelemetry
orb
Orb is a dynamic network observability platform
Stars: ✭ 437 (+432.93%)
Mutual labels:  opentelemetry
pulsar-tracing
Tracing instrumentation for Apache Pulsar clients.
Stars: ✭ 13 (-84.15%)
Mutual labels:  opentelemetry
Discovery
β˜€οΈ Nepxion Discovery is a solution for Spring Cloud with blue green, gray, route, limitation, circuit breaker, degrade, isolation, tracing, dye, failover θ“η»Ώγ€η°εΊ¦γ€θ·―η”±γ€ι™ζ΅γ€η†”ζ–­γ€ι™ηΊ§γ€ιš”η¦»γ€θΏ½θΈͺγ€ζ΅ι‡ζŸ“θ‰²γ€ζ•…ιšœθ½¬η§»
Stars: ✭ 4,658 (+5580.49%)
Mutual labels:  opentelemetry
opentelemetry-erlang-api
Erlang/Elixir OpenTelemetry API
Stars: ✭ 61 (-25.61%)
Mutual labels:  opentelemetry
hubble-otel
Hubble adaptor for OpenTelemetry
Stars: ✭ 29 (-64.63%)
Mutual labels:  opentelemetry
loggie
A lightweight, cloud-native data transfer agent and aggregator
Stars: ✭ 844 (+929.27%)
Mutual labels:  opentelemetry
actix-web-opentelemetry
OpenTelemetry integration for Actix Web
Stars: ✭ 45 (-45.12%)
Mutual labels:  opentelemetry
aws-otel-lambda
AWS Distro for OpenTelemetry - AWS Lambda
Stars: ✭ 94 (+14.63%)
Mutual labels:  opentelemetry
opentelemetry-tide
πŸ”­πŸŒŠ OpenTelemetry integration for Tide
Stars: ✭ 18 (-78.05%)
Mutual labels:  opentelemetry
opentelemetry-prometheus-sidecar
The OpenTelemetry Prometheus sidecar runs alongside the Prometheus Server and exports your metrics data to an OpenTelemetry Protocol endpoint.
Stars: ✭ 13 (-84.15%)
Mutual labels:  opentelemetry
FastAPI-template
Feature rich robust FastAPI template.
Stars: ✭ 660 (+704.88%)
Mutual labels:  opentelemetry

build status Docs Go Report Card

Launcher, a Lightstep Distro for OpenTelemetry πŸš€

What is Launcher?

Launcher is a configuration layer that chooses default values for configuration options that many OpenTelemetry users want. It provides a single function in each language to simplify discovery of the options and components available to users. The goal of Launcher is to help users that aren't familiar with OpenTelemetry quickly ramp up on what they need to get going and instrument.

Getting started

go get github.com/lightstep/otel-launcher-go/launcher

Configure

Minimal setup

import "github.com/lightstep/otel-launcher-go/launcher"

func main() {
    otel := launcher.ConfigureOpentelemetry(
        launcher.WithServiceName("service-name"),
        launcher.WithAccessToken("access-token"),
    )
    defer otel.Shutdown()
}

For non-lightstep providers, you can set headers directly instead.

import "github.com/lightstep/otel-launcher-go/launcher"

func main() {
    otel := launcher.ConfigureOpentelemetry(
        launcher.WithServiceName("service-name"),
        launcher.WithHeaders(map[string]string{
            "service-auth-key": "value",
            "service-useful-field": "testing",
        }),
    )
    defer otel.Shutdown()
}

Additional options

Configuration Options

Config Option Env Variable Required Default
WithServiceName LS_SERVICE_NAME y -
WithServiceVersion LS_SERVICE_VERSION n unknown
WithHeaders OTEL_EXPORTER_OTLP_HEADERS n {}
WithSpanExporterEndpoint OTEL_EXPORTER_OTLP_SPAN_ENDPOINT n ingest.lightstep.com:443
WithSpanExporterInsecure OTEL_EXPORTER_OTLP_SPAN_INSECURE n false
WithMetricExporterEndpoint OTEL_EXPORTER_OTLP_METRIC_ENDPOINT n ingest.lightstep.com:443
WithMetricExporterInsecure OTEL_EXPORTER_OTLP_METRIC_INSECURE n false
WithMetricExporterTemporalityPreference OTEL_EXPORTER_OTLP_METRIC_TEMPORALITY_PREFERENCE n cumulative
WithAccessToken LS_ACCESS_TOKEN n -
WithLogLevel OTEL_LOG_LEVEL n info
WithPropagators OTEL_PROPAGATORS n b3
WithResourceAttributes OTEL_RESOURCE_ATTRIBUTES n -
WithMetricReportingPeriod OTEL_EXPORTER_OTLP_METRIC_PERIOD n 30s
WithMetricsEnabled LS_METRICS_ENABLED n true
WithMetricsBuiltinsEnabled LS_METRICS_BUILTINS_ENABLED n true
WithMetricsBuiltinLibraries LS_METRICS_BUILTIN_LIBRARIES n all:stable
WithLightstepMetricsSDK LS_METRICS_SDK n true

Principles behind Launcher

100% interoperability with OpenTelemetry

One of the key principles behind putting together Launcher is to make lives of OpenTelemetry users easier, this means that there is no special configuration that requires users to install Launcher in order to use OpenTelemetry. It also means that any users of Launcher can leverage the flexibility of configuring OpenTelemetry as they need.

Validation

Another decision we made with launcher is to provide end users with a layer of validation of their configuration. This provides us the ability to give feedback to our users faster, so they can start collecting telemetry sooner.

Start using it today in Go, Java, Javascript and Python and let us know what you think!

OpenTelemetry Metrics support

Builtin metrics libraries

The Launcher optionally starts selected libraries of builtin instrumentation unless explicitly disabled. Use WithMetricsBuiltinsEnabled(false) or set LS_METRICS_BUILTINS_ENABLED=false to disable all builtin metrics instrumentation.

The set of builtin metrics libraries can be configured explicitly. Due to the evolving nature of OpenTelemetry, the metrics produced in these libraries may vary. Use WithMetricsBuiltinLibraries(...) or set LS_METRICS_BUILTIN_LIBRARIES=... to configure which builtin libraries are used. The argument is a comma-separated list of short library names, optionally short_name:version to select a specific version. When no version is specified, the "stable" instrumentation version is selected.

In Launcher version 1.11.0, the default builtin libraries changed to more closely-track the OpenTelemetry metrics specification. The default setting ("all:stable") selects three libraries, described below:

Short name Metrics produced
host system.cpu.time, system.memory.usage, system.memory.utilization, system.network.io
cputime process.cpu.time, process.uptime, process.runtime.go.gc.cpu.time
runtime process.runtime.go.* generated from runtime/metrics

The available instrumentation library and versions are listed below:

Short name Version Instrumentation
all stable same as cputime:stable,host:stable,runtime:stable
cputime stable ./lightstep/instrumentation/cputime
cputime prestable none
runtime stable ./lightstep/instrumentation/runtime
runtime prestable opentelemetry-go-contrib/instrumentation/runtime
host stable ./lightstep/instrumentation/host
host prestable opentelemetry-go-contrib/instrumentation/host

When running inside a container where host metrics are already being collected (e.g., using the OpenTelemetry Collector hostmetrics receiver), users may wish to configure only "cputime" and "runtime" instrumentation.

Note that the "cputime" library is a placeholder for metrics that overlap with or that we expect to be produced in future versions of the "runtime" instrumentation. For example, we expect the Go-1.20 runtime/metrics package to include GC and user CPU time metrics. See the documentation in each of the instrumentation packages for more details.

To configure the behavior in Launcher versions 1.10.x and prior, use WithMetricsBuiltinLibraries("all:prestable") or set LS_METRICS_BUILTIN_LIBRARIES=all:prestable.

Lightstep Metrics SDK

NOTE: The Lightstep Metrics SDK is enabled by default.

The Launcher contains an alternative to the OTel-Go community Metrics SDK being maintained by Lightstep as a way to quickly validate newer OpenTelemetry features, such as the OpenTelemetry exponential histogram.

The OTel-Go community SDK is not enabled by default. This option will return when the OTel-Go community SDK reaches a stable release.

To select the OTel-Go community Metrics SDK, use WithLightstepMetricsSDK(false) or set LS_METRICS_SDK=false.

The differences between the OpenTelemetry Metrics SDK specification and the alternative SDK are documented in its README.

Metrics Temporality settings

OpenTelemetry metrics SDKs give the user control over "temporality", which is the selection of "delta" or "cumulative" policies for aggregating Counter and Histogram instruments. These settings determine both memory usage and reliability of metrics reporting.

Delta temporality requires less memory than cumulative temporality for synchronous instruments, while Cumulative requires less memory than delta temporality for asynchronous instruments. When reporting is intermittent, cumulative series will average out the missing reports, whereas delta series will have gaps.

Note that Lightstep considers a change of temporality to be a breaking change. Once a temporality preference has been set, the setting has to be maintained. The temporality preference is configured by calling WithMetricExporterTemporalityPreference() or using the OTEL_EXPORTER_OTLP_METRIC_TEMPORALITY_PREFERENCE environment variable.

The launcher supports a "stateless" temporality preference. This selection configures the ideal behavior for Lightstep by mixing temporality setings.

The 1.x launcher release series configures the "cumulative" temporality preference by default. The next major release of launcher will configure the "stateless" temporality preference.

Lightstep users are recommended to select either the "cumulative" or "stateless" preference. The OpenTelemetry-specified "delta" temporality preference is not recommended for Lightstep users.


Made with :heart: @ Lightstep

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].