All Projects â†’ instana â†’ go-sensor

instana / go-sensor

Licence: MIT license
🚀 Go Distributed Tracing & Metrics Sensor for Instana

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-sensor

Zipkin Go Opentracing
OpenTracing Bridge for Zipkin Go
Stars: ✭ 472 (+424.44%)
Mutual labels:  instrumentation, tracing, trace, opentracing, distributed-tracing
Brave Opentracing
Bridge between OpenTracing and Brave
Stars: ✭ 64 (-28.89%)
Mutual labels:  instrumentation, tracing, opentracing, distributed-tracing
ruby-sensor
💎 Ruby Distributed Tracing & Metrics Sensor for Instana
Stars: ✭ 23 (-74.44%)
Mutual labels:  instrumentation, tracing, opentracing, distributed-tracing
Opencensus Web
A stats collection and distributed tracing framework
Stars: ✭ 168 (+86.67%)
Mutual labels:  instrumentation, tracing, trace, distributed-tracing
Jaeger Ui
Web UI for Jaeger
Stars: ✭ 639 (+610%)
Mutual labels:  tracing, trace, opentracing, distributed-tracing
zipkin-ruby-opentracing
OpenTracing Tracer implementation for Zipkin in Ruby
Stars: ✭ 15 (-83.33%)
Mutual labels:  instrumentation, tracing, trace, opentracing
Molten
php probe for zipkin and opentracing
Stars: ✭ 740 (+722.22%)
Mutual labels:  instrumentation, tracing, trace, opentracing
zipkin-cpp-opentracing
OpenTracing Tracer implementation for Zipkin in C++
Stars: ✭ 46 (-48.89%)
Mutual labels:  instrumentation, tracing, trace, opentracing
Opencensus Node
A stats collection and distributed tracing framework
Stars: ✭ 249 (+176.67%)
Mutual labels:  instrumentation, tracing, trace, distributed-tracing
Zipkin Go
Zipkin tracer library for go
Stars: ✭ 435 (+383.33%)
Mutual labels:  instrumentation, tracing, trace, distributed-tracing
nodejs
Node.js in-process collectors for Instana
Stars: ✭ 66 (-26.67%)
Mutual labels:  tracing, opentracing, instana, distributed-tracing
Spring Cloud Sleuth
Distributed tracing for spring cloud
Stars: ✭ 1,531 (+1601.11%)
Mutual labels:  instrumentation, tracing, distributed-tracing
Opentracing Auto
Out of the box distributed tracing for Node.js applications with OpenTracing.
Stars: ✭ 110 (+22.22%)
Mutual labels:  instrumentation, opentracing, distributed-tracing
java-jaxrs
OpenTracing Java JAX-RS instrumentation
Stars: ✭ 37 (-58.89%)
Mutual labels:  instrumentation, tracing, opentracing
Java Specialagent
Automatic instrumentation for 3rd-party libraries in Java applications with OpenTracing.
Stars: ✭ 156 (+73.33%)
Mutual labels:  instrumentation, tracing, opentracing
Caliper
Caliper is an instrumentation and performance profiling library
Stars: ✭ 162 (+80%)
Mutual labels:  instrumentation, trace, performance-monitoring
uptrace
Open source APM: OpenTelemetry traces, metrics, and logs
Stars: ✭ 1,187 (+1218.89%)
Mutual labels:  tracing, performance-monitoring, distributed-tracing
dropwizard-zipkin
Dropwizard Zipkin Bundle
Stars: ✭ 48 (-46.67%)
Mutual labels:  instrumentation, tracing, distributed-tracing
nginx-opentracing
Instrument nginx for OpenTracing.
Stars: ✭ 21 (-76.67%)
Mutual labels:  instrumentation, tracing, opentracing
easeagent
An agent component for the Java system
Stars: ✭ 437 (+385.56%)
Mutual labels:  tracing, opentracing, distributed-tracing

Instana Go Collector

Instana, an IBM company

Build Status PkgGoDev OpenTracing Go Report Card

The Go Collector is a runtime metrics collector, code execution tracer and profiler for applications and services written in Go. This module is a part of Instana APM solution.

The Go Collector requires Go version 1.9 or greater.

Installation

To add Instana Go Collector to your service run:

$ go get github.com/instana/go-sensor

You might also consider installing supplemental modules that provide instrumentation for most popular 3rd-party packages.

Please refer to Instana Go Collector documentation for further details on how to activate Go Collector and use it to instrument your application code.

Configuration

The Go Collector accepts both configuration from within the application code and via environment variables. The values provided via enironment variables take precedence. In case is no specific configuration provided, the values returned by instana.DefaultOptions() will be used.

Please refer to Go Collector Configuration page for detailed instructions. There is also the Go Collector How To page that covers the most common configuration use cases.

Usage

In order to trace the code execution, a few minor changes to your app's source code is needed. Please check the examples section and the Go Collector How To guide to learn about common instrumentation patterns.

Features

Runtime metrics collection

Once initialized, the Go Collector starts automatically collecting and sending the following runtime metrics to Instana in background:

  • Memory usage
  • Heap usage
  • GC activity
  • Goroutines

Code execution tracing

Instana Go Collector provides an API to instrument function and method calls from within the application code to trace its execution.

The core github.com/instana/go-sensor package is shipped with instrumentation wrappers for the standard library, including HTTP client and server, as well as SQL database drivers compatible with database/sql. There are also supplemental instrumentation modules provide code wrappers to instrument the most popular 3rd-party libraries.

Please check the examples section and the Go Collector How To guide to learn about common instrumentation patterns.

OpenTracing

Instana Go Collector provides an interface compatible with github.com/opentracing/opentracing-go and thus can be used as a global tracer. However, the recommended approach is to use the Instana wrapper packages/functions provided in the library. They set up a lot of semantic information which helps Instana get the best picture of the application possible. Sending proper tags is especially important when it comes to correlating calls to infrastructure and since they are strings mostly, there is a large room for making a mistake.

The Go Collector will remap OpenTracing HTTP headers into Instana headers, so parallel use with some other OpenTracing model is not possible. The Instana tracer is based on the OpenTracing Go basictracer with necessary modifications to map to the Instana tracing model.

Trace continuation and propagation

Instana Go Collector ensures that application trace context will continued and propagated beyond the service boundaries using various methods, depending on the technology being used. Alongside with Instana-specific HTTP headers or message attributes, a number of open standards are supported, such as W3C Trace Context and OpenTelemetry.

W3C Trace Context & OpenTelemetry

The instrumentation wrappers provided with Go Collector automatically inject and extract trace context provided via W3C Trace Context HTTP headers.

Continuous profiling

Instana AutoProfileâ„¢ generates and reports process profiles to Instana. Unlike development-time and on-demand profilers, where a user must manually initiate profiling, AutoProfileâ„¢ automatically schedules and continuously performs profiling appropriate for critical production environments.

Please refer to the Instana Go Collector docs to learn how to activate and use continuous profiling for your applications and services.

Sending custom events

The Go Collector, be it instantiated explicitly or implicitly through the tracer, provides a simple wrapper API to send events to Instana as described in its documentation.

To learn more, see the Events API document in this repository.

Examples

Following examples are included in the example folder:

  • Greeter - an instrumented HTTP server that queries a database
  • Doubler - an instrumented Kafka processor, that consumes and produces messages
  • Event - Demonstrates usage of the Events API
  • Autoprofile - Demonstrates usage of the AutoProfileâ„¢
  • OpenTracing - an example of usage of Instana tracer in an app instrumented with OpenTracing
  • gRPC - an example of usage of Instana tracer in an app instrumented with gRPC
  • Gin - an example of usage of Instana tracer instrumenting a Gin application
  • httprouter - an example of usage of Instana tracer instrumenting a github.com/julienschmidt/httprouter router

For more examples please consult the godoc and the Go Collector How To page.

Filing Issues

If something is not working as expected or you have a question, instead of opening an issue in this repository, please open a ticket at Instana Support portal instead.

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].