Skip to content

Latest commit

 

History

History
193 lines (123 loc) · 8.41 KB

README.md

File metadata and controls

193 lines (123 loc) · 8.41 KB

Kubetail

Kubetail is a web dashboard for Kubernetes logs that lets you view multiple log streams simultaneously, in real-time (runs on desktop or in cluster)

demo-light-thumbnail

Demo: https://www.kubetail.com/demo

slack Artifact Hub

Introduction

Viewing application logs in a containerized environment can be challenging. Typically, an application consists of several services, each deployed across multiple containers which are load balanced to ensure an even consumption of resources. Although viewing individual container logs is easy using tools such as kubectl or the Kubernetes Dashboard, simultaneously monitoring logs from all the containers that constitute an application is more difficult. This is made even more difficult by the ephemeral nature of containers, which constantly cycle in and out of existence.

Kubetail solves this problem by providing an easy-to-use, web-based interface that allows you to view all the logs for a set of Kubernetes workloads (e.g. Deployment, CronJob, StatefulSet) simultaneously, in real-time. Under the hood, it uses your cluster's Kubernetes API to monitor your workloads and detect when a new workload container gets created or an old one deleted. Kubetail will then add messages from the new container to your viewing stream or update its UI to reflect that an old container will no longer produce messages. This allows you to follow your application logs easily as user requests move from one ephemeral container to another across services. Kubetail can also help you to debug application issues by allowing you to filter your logs by node properties such as availability zone, CPU architecture or node ID. This can be useful to find problems that are specific to a given environment that an application instance is running in.

The main entry point for Kubetail is a CLI tool called kubetail that you can use to run a web dashboard locally on your desktop. The web dashboard will make requests to your Kubernetes API using the current cluster specified in your local kube config file. In addition, you can run the web dashboard inside your cluster if you want to enable cluster users to use it without installing the CLI tool. Internally, Kubetail uses your Kubernetes API to request logs, so your log messages always stay in your possession and Kubetail is private by default. Most of Kubetail is written in Go and the web interface is written in Typescript/React.

Our goal is to build a powerful cloud-native logging platform designed from the ground up for a containerized environment and this project is a work-in-progress. If you notice a bug or have a suggestion please create a GitHub Issue or send us an email ([email protected])!

Features

  • Clean, easy-to-use interface
  • View log messages in real-time
  • Filter logs by:
    • Workload (e.g. Deployment, CronJob, StatefulSet)
    • Absolute or relative time range
    • Node properties (e.g. availability zone, CPU architecture, node ID)
  • Handles ephemeral container events automatically
  • Uses your Kubernetes API to retrieve log messages so data never leaves your possession (private by default)
  • Web dashboard can be installed on desktop or in cluster

Quickstart (Desktop)

First, install the Kubetail CLI tool (kubetail) via homebrew (or the latest release binaries):

brew install kubetail

Next, start the web dashboard using the serve subcommand:

kubetail serve

This command will open http://localhost:7500/ in your default browser. To view the logs for a different cluster just change your kubectl context. Have fun viewing your Kubernetes logs in realtime!

Quickstart (Cluster)

Option 1: Helm

First, add the Kubetail org's chart repository, then install the "kubetail" chart:

helm repo add kubetail https://kubetail-org.github.io/helm-charts/
helm install kubetail kubetail/kubetail --namespace kubetail-system --create-namespace

For more information on how to configure the helm chart, see the chart's values.yaml file.

To access the web dashboard you can expose it as an ingress using the chart or you can use your usual access methods such as kubectl port-forward:

kubectl port-forward -n kubetail-system svc/kubetail-server 7500:7500

Visit http://localhost:7500. Have fun viewing your Kubernetes logs in realtime!

Option 2: YAML Manifest

First, create a namespace for the Kubetail resources:

kubectl create namespace kubetail-system

Next, choose your authentication mode (cluster or token) and apply the latest manifest file:

# For cluster-based authentication use kubetail-clusterauth.yaml:
kubectl apply -f https://github.com/kubetail-org/helm-charts/releases/latest/download/kubetail-clusterauth.yaml

# For token-based authentication use kubetail-tokenauth.yaml:
kubectl apply -f https://github.com/kubetail-org/helm-charts/releases/latest/download/kubetail-tokenauth.yaml

To access the web dashboard you can use your usual access methods such as kubectl port-forward:

kubectl port-forward -n kubetail-system svc/kubetail-server 7500:7500

Visit http://localhost:7500. Have fun viewing your Kubernetes logs in realtime!

Option 3: Glasskube

To install Kubetail using Glasskube, you can select "Kubetail" from the "ClusterPackages" tab in the Glasskube GUI then click "install" or you can run the following command:

glasskube install kubetail

Once Kubetail is installed you can use it by clicking "open" in the Glasskube GUI or by using the open command:

glasskube open kubetail

Have fun viewing your Kubernetes logs in realtime!

Documentation

Visit the Kubetail documentation

Development

Repository Structure

This monorepo contains:

Setting up the Development Environment

  1. Create a Kubernetes dev cluster that works with Tilt:
ctlptl apply -f hack/ctlptl/minikube.yaml
  1. Start the dev environment:
tilt up
  1. Run the Dashboard UI locally:
cd dashboard-ui
pnpm install
pnpm dev

Now access the dashboard at http://localhost:5173.

Build

CLI Tool

To build the Kubetail CLI tool executable (kubetail), run the following command:

make

When the build process finishes you can find the executable in the local bin/ directory.

Backend Server

To build a docker image for a production deployment of the backend server, run the following command:

docker build -f build/package/Dockerfile.server -t kubetail-server:latest .

Backend Agent

To build a docker image for a production deployment of the backend agent, run the following command:

docker build -f build/package/Dockerfile.agent -t kubetail-agent:latest .

Get Involved

We're building a cloud-native logging platform and would love your contributions! Here's how you can help:

  • UI/UX design
  • React frontend development
  • Reporting issues and suggesting features

Reach us at [email protected], or join our Discord server or Slack channel.