Jaeger-influxdb - The repository that contains InfluxDB Storage gRPC plugin for Jaeger

NOTICE: This repository is archived and is no longer maintained. Please use https://github.com/influxdata/influxdb-observability instead.

This is the repository that contains InfluxDB Storage gRPC plugin for Jaeger.

IMPORTANT: This plugin is still under development. We are using it internally already but the way we store data in InfluxDB can change based on what do we learn about the data structure!

The Jaeger community made a big work supporting external gRPC plugin to manage integration with external backend without merge them as part of the Jaeger Tracer. You can see issue #1461.

This storage plugin will support InfluxDB v1 and v2 based on how you configure it you will use the right client.

The plugin uses go/mod to manage its dependencies.

License

The InfluxDB Storage gRPC Plugin for Jaeger is an MIT licensed open source project.

Docker

We provides three docker images that you can use:

  1. quay.io/influxdb/jaeger-all-in-one-influxdb
  2. quay.io/influxdb/jaeger-collector-influxdb
  3. quay.io/influxdb/jaeger-query-influxdb

Compile

In order to compile the plugin you can use go build:

GO111MODULE=on go run -o ./cmd/jaeger-influxdb ./cmd

How it works

  1. You need to checkout and build the last version of Jaeger (for testing purpose you can use the all-in-on).

  2. You also need to build the influxdb-store plugin, clone the repository and use:

go build ./cmd/jaeger-influxdb
  1. You need to start InfluxDB, for this example we use InfluxDB v1. And you need to create a database. In this example the tracing database.

Using the env var SPAN_STORAGE_TYPE=grpc-plugin you can specify the storage type, in this case the grpc-plugin.

When you switch to this particular storage plugin you get two new flags:

  • --grpc-storage-plugin.binary needs to be pointed to the grpc plugin that you compiled just above.
  • --grpc-storage-plugin.configuration-file needs to be pointed to a configuration file for the plugin. In our case there is a configuration file that works with InfluxDB v1 inside the repository ./config-example-v1.yaml. You can use that one as test.

This is how the command looks like:

$ SPAN_STORAGE_TYPE=grpc-plugin jager-all-in-one-linux \
    --grpc-storage-plugin.binary .jaeger-influxdb \
    --grpc-storage-plugin.configuration-file ./config-example-v1.yaml

{"level":"info","ts":1557495654.945533,"caller":"flags/service.go:113","msg":"Mounting metrics handler on admin server","route":"/metrics"}
{"level":"info","ts":1557495654.9456794,"caller":"flags/admin.go:108","msg":"Mounting health check on admin server","route":"/"}
{"level":"info","ts":1557495654.945724,"caller":"flags/admin.go:114","msg":"Starting admin HTTP server","http-port":14269}
{"level":"info","ts":1557495654.9457393,"caller":"flags/admin.go:100","msg":"Admin server started","http-port":14269,"health-status":"unavailable"}
{"level":"info","ts":1557495654.9527798,"caller":"grpc/factory.go:67","msg":"External plugin storage configuration","configuration":{"PluginBinary":"/home/gianarb/git/jaeger-store/jaeger-influxdb","PluginConfigurationFile":"./config-example-v1.yaml"}}

Now you can visit http://localhost:16686/. By default Jaeger traces itself. So you should be able to see some traces and you can have a look at the raw data in influxdb via cli:

$ influx
Connected to http://localhost:8086 version 1.7.1
InfluxDB shell version: 1.7.0~n201807090800
> use tracing
Using database tracing
> select * from span limit 5
name: span
time                duration flags operation_name                     process_tag_keys                       service_name span_id          tag:client-uuid    tag:component tag:hostname tag:http.method tag:http.status_code tag:http.url                                                                                                                tag:internal.span.format tag:ip          tag:jaeger.version tag:sampler.param tag:sampler.type tag:span.kind trace_id
----                -------- ----- --------------                     ----------------                       ------------ -------          ---------------    ------------- ------------ --------------- -------------------- ------------                                                                                                                ------------------------ ------          ------------------ ----------------- ---------------- ------------- --------
1557496661049626345 9010000  1     /api/traces                        jaeger.version,hostname,ip,client-uuid jaeger-query 1ab4fba76c4045f  s:3868643cf6b2b994 s:net/http    s:gianarb    s:GET           i:200                s:/api/traces?end=1557495664841000&limit=20&lookback=1h&maxDuration&minDuration&service=jaeger-query&start=1557492064841000 s:proto                  s:192.168.1.170 s:Go-2.15.1dev     b:t               s:const          s:server      1ab4fba76c4045f
1557496661061678565 4647000  1     /api/services                      jaeger.version,hostname,ip,client-uuid jaeger-query 75c7fc23fca70294 s:3868643cf6b2b994 s:net/http    s:gianarb    s:GET           i:200                s:/api/services                                                                                                             s:proto                  s:192.168.1.170 s:Go-2.15.1dev     b:t               s:const          s:server      75c7fc23fca70294
1557496661069655449 3081000  1     /api/services/{service}/operations jaeger.version,hostname,ip,client-uuid jaeger-query 41ad7ffe0f792295 s:3868643cf6b2b994 s:net/http    s:gianarb    s:GET           i:200                s:/api/services/jaeger-query/operations                                                                                     s:proto                  s:192.168.1.170 s:Go-2.15.1dev     b:t               s:const          s:server      41ad7ffe0f792295
1557496662064505047 3155000  1     /api/services                      jaeger.version,hostname,ip,client-uuid jaeger-query 7d0202924093a54d s:3868643cf6b2b994 s:net/http    s:gianarb    s:GET           i:200                s:/api/services                                                                                                             s:proto                  s:192.168.1.170 s:Go-2.15.1dev     b:t               s:const          s:server      7d0202924093a54d
1557496662067663425 2893000  1     /api/services/{service}/operations jaeger.version,hostname,ip,client-uuid jaeger-query 524f8d6ffce9132d s:3868643cf6b2b994 s:net/http    s:gianarb    s:GET           i:200                s:/api/services/jaeger-query/operations                                                                                     s:proto                  s:192.168.1.170 s:Go-2.15.1dev     b:t               s:const          s:server      524f8d6ffce9132d
Owner
Rohan
if(brain!=empty){ keepCoding(); } else{ orderCoffee()
Rohan
Similar Resources

Kubectl Locality Plugin - A plugin to get the locality of pods

Kubectl Locality Plugin - A plugin to get the locality of pods

Nov 18, 2021

This repo contains example on how to consume secrets from Google Secret Manager from GKE

GKE Secret Manager. Environment setup This repo contains examples of how to consume secrets from Google Secret Manager (GSM) from Google Kubernetes En

Dec 5, 2022

This repo contains the metadata of EdgeX snaps

edgex-snap-metadata This repo contains the metadata of EdgeX snaps along with utility scripts to generate dummy snaps that can used to update the meta

Dec 6, 2021

A demo repository that shows CI/CD integration using DroneCI + ArgoCD + Kubernetes.

A demo repository that shows CI/CD integration using DroneCI + ArgoCD + Kubernetes.

CI/CD Demo This is the demo repo for my blog post. This tutorial shows how to build CI/CD pipeline with DroneCI and ArgoCD. In this demo, we use Drone

Oct 18, 2022

A template repository to quickly scaffold a Kubewarden policy written with Go language

go-policy-template This is a template repository that can be used to to quickly scaffold a Kubewarden policy written with Go language. Don't forget to

Sep 7, 2022

ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.

ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it with target clusters.

ArgoCD Interlace ArgoCD is widely used for enabling CD GitOps. ArgoCD internally builds manifest from source data in Git repository, and auto-sync it

Dec 14, 2022

Synchronise a directory's contents with a git repository.

git-volume-reloader Synchronise a directory's contents with a git repository. Synchronisation is triggered by a webhook sent by the git service provid

Sep 16, 2022

Helmsman repository management tool

Richman A tool to manage helmsman specification toml files. Install go get -u github.com/kronostechnologies/richman # OR go install Usage Update char

Oct 7, 2021

A tool that allows you to manage Kubernetes manifests for your services in a Git repository

kuberpult Readme for users About Kuberpult is a tool that allows you to manage Kubernetes manifests for your services in a Git repository and manage t

Dec 16, 2022
The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Jan 23, 2022
This repository contains Prowjob configurations for Amazon EKS Anywhere.

Amazon EKS Anywhere Prow Jobs This repository contains Prowjob configuration for the Amazon EKS Anywhere project, which includes the eks-anywhere and

Dec 19, 2022
Golang-tutorials - This repository contains golang tutorials right from basic to advanced.

Golang-tutorials This repository contains golang tutorials right from basic to advanced. Go is a statically typed, compiled programming language desig

Jan 3, 2022
A seed repository that contains a Go project that accepts input via a REST API and saves data to an Oracle database.

rest-oracle-go-seed A seed repository that contains a Go project that accepts input via a REST API and saves data to an Oracle database. Why Oracle? T

Apr 18, 2022
Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using HPE Smart Storage Administrator tool

hpessa-exporter Overview Openshift's hpessa-exporter allows users to export SMART information of local storage devices as Prometheus metrics, by using

Jan 17, 2022
k6 extension for InfluxDB v2

xk6-output-influxdb k6 extension for InfluxDB v2, it adds the support for the latest v2 version and the compatibility API for v1.8+. Why is this outpu

Dec 26, 2022
Crossplane provider for InfluxDB Cloud

provider-template provider-template is a minimal Crossplane Provider that is meant to be used as a template for implementing new Providers. It comes w

Jan 10, 2022
Download your Fitbit weight history and connect to InfluxDB and Grafana

WemonFit Weight monitoring for Fitbit, using InfluxDB and Grafana Generating a new certificate openssl req -new -newkey rsa:2048 -nodes -keyout lo

Oct 22, 2022
Scrapes tibber API and write to influxdb.

tibber-influxdb This will write data points to influxdb based on consumption and currentPrice. The points are written to influxdb with the timestamp f

Apr 28, 2022
Quick start repository for creating a Terraform provider using terraform-plugin-framework

Terraform Provider Scaffolding (Terraform Plugin Framework) This template repository is built on the Terraform Plugin Framework. The template reposito

Dec 15, 2022