ktail is a tool to easily tail Kubernetes logs.
Clone or download
Latest commit c8006f8 Jun 11, 2018

README.md

ktail is a tool to tail Kubernetes logs. It's like kubectl logs, but with a bunch of features to make it more convenient.

Detects pods and containers as they come and go. If you run ktail foo and later start a pod or container named foo, then it will be picked up automatically. kubectl only works on a running pod/container.

Tails multiple pods and containers at the same time, based on names and labels. kubectl can only tail a single pod and container. ktail will match the pattern or patterns you specify against both the pod name and the container name.

All containers are tailed by default, not just a specific one. With kubectl, you have to use -c. With ktail, just do ktail foo and all its containers are automatically tailed.

Recovers from failure. ktail will keep retrying forever. kubectl just gives up.

Installation

Homebrew

$ brew tap atombender/ktail
$ brew install atombender/ktail/ktail

Binary installation

Precompiled binaries for Windows, macOS, Linux (x64 and ARM) are available on the GitHub release page.

Linux

$ curl -L https://github.com/atombender/ktail/releases/download/v0.7.0/ktail-linux-amd64 -o ktail
$ chmod +x ktail
$ sudo mv ./ktail /usr/local/bin/ktail

macOS

$ curl -L https://github.com/atombender/ktail/releases/download/v0.7.0/ktail-darwin-amd64 -o ktail
$ chmod +x ktail
$ sudo mv ./ktail /usr/local/bin/ktail

Windows

Download from GitHub and add the binary to your PATH.

From source

This requires Glide and Go >= 1.7.

$ mkdir -p $GOPATH/src/github.com/atombender
$ cd $GOPATH/src/github.com/atombender
$ git clone https://github.com/atombender/ktail
$ cd ktail
$ glide install --strip-vendor

Usage

Tailing based on label:

$ ktail -l app=myapp

This will tail all containers in all pods matching the label app=myapp. As new pods are created, it will also automatically tail those, too.

It's also possible to filter on pod/container name. The following will match all containers whose pod name or container name contains the substring foo:

$ ktail foo

The arguments are regular expressions, so this is possible:

$ ktail '^foo'

If no filters are specified, all pods in the current namespace are tailed.

To abort tailing, hit Ctrl+C.

Options

Run ktail -h for usage.

Templating

ktail has a basic output format. To override, you can use a simple Go template. For example:

$ ktail -t "{{.Container.Name}} {{.Message}}"

The following variables are available:

  • Timestamp: The time of the log event.
  • Message: The log message.
  • Pod: The pod object. It has properties such as Name, Namspace, Status, etc.
  • Container: The container object. It properties such as Name.

Acknowledgements

Some setup code was borrowed from k8stail.

License

MIT license. See LICENSE file.