/Galvr

Galvr is a metric collection and visualization dashboard for Kubernetes clusters.

Primary LanguageTypeScriptMIT LicenseMIT

Galvr

Sections

About

Galvr is a communication metric visualization dashboard for Kubernetes clusters. It is built on the OpenTelemetry observability framework and takes advantage of the metric aggregation processing done by OpenTelemtry instrumentation. It can work with any cluster using instrumentation that exports metrics with the OTLP specification. Galvr is intended to be used alongside the Jaeger distributed tracing platform; in fact, it was created to be a sibling product meant for metrics instead of traces. Galvr consists of two services: a metric collector backend, and a metric visualization frontend. Currently, the two services must be used together, but future development may allow a la carte use.

Galvr is an unopinionated tool, so it works with Kubernetes clusters of any microservice configuration. It simply provides the user with a list of instrumented services and allows them to view whatever metrics they wish. Choosing a Service

Galvr can also handle any metric it receives as long as the metric object follows OTLP specifications. This means it will visualize any histogram, sum, or gauge data type.
Different Metric Visualizations

Quick Start

This guide assumes you have a Kubernetes cluster up and running.

1. Install cert-manager, which is required for the Otel (and Jaeger) operators:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml
2. Install the openTelemetry operator:
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
3. Start the openTelemetry collector (you can use a different configuration file as long as it exports metric data to metricendpoint:3000 with the OTLP/HTTP protocol):
kubectl apply -f https://github.com/oslabs-beta/Galvr/releases/download/latest/otelCol.yaml
a. If your services are not already instrumented, openTelemetry has a number of autoinstrumentation options (https://opentelemetry.io/docs/kubernetes/operator/automatic/). Autoinstrumentation for services written in Node.js can be added to your cluster with:
kubectl apply -f https://github.com/oslabs-beta/Galvr/releases/download/latest/otelNode.yaml
b. If you would like to use Jaeger for request tracing (recommended), replace the default openTelemetry collector with:
kubectl apply -f https://github.com/oslabs-beta/Galvr/releases/download/latest/otelCol-jaeger.yaml
c. and start up the Jaeger collector, as well as a basic all-in-one Jaeger instance:
kubectl create namespace observability
kubectl create -f https://github.com/jaegertracing/jaeger-operator/releases/download/v1.45.0/jaeger-operator.yaml -n observability
kubectl apply -f https://github.com/oslabs-beta/Galvr/releases/download/latest/jaeger.yaml
d. For the Jaeger client to be available outside the cluster, you made need to port forward it:
kubectl port-forward services/jaeger-query 16686:16686
4. Finally, start Galvr! The client will be available at local port 30003.
kubectl apply -f https://github.com/oslabs-beta/Galvr/releases/download/latest/galvr.yml

Demo

If you do not have already have a microservice application with which to test Galvr but would like to, we encourage you to try it with the OpenTelemetry Demo application. Instructions for setup can be found in the demo/otel folder.

License

Distributed under the MIT License. See LICENSE.txt for more information.

Contribute

We welcome contributions to Galvr from the open source community. Feel free to open an issue or submit a pull request! If you are submitting changes to the codebase, we request that you fork the repository and create a new branch with your changes before submitting a pull request.

Authors

Daniel Jaworski GitHub | LinkedIn
Sam Blackburn GitHub | LinkedIn
Sharon Chen GitHub | LinkedIn
Yi Sun GitHub | LinkedIn