Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johanhaleby/kubetail
Bash script to tail Kubernetes logs from multiple pods at the same time
https://github.com/johanhaleby/kubetail
bash kubernetes pod tail
Last synced: about 3 hours ago
JSON representation
Bash script to tail Kubernetes logs from multiple pods at the same time
- Host: GitHub
- URL: https://github.com/johanhaleby/kubetail
- Owner: johanhaleby
- License: apache-2.0
- Created: 2015-11-11T12:21:29.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-11-28T06:59:57.000Z (15 days ago)
- Last Synced: 2024-12-06T04:00:08.230Z (7 days ago)
- Topics: bash, kubernetes, pod, tail
- Language: Shell
- Homepage:
- Size: 144 KB
- Stars: 3,356
- Watchers: 34
- Forks: 290
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - johanhaleby/kubetail - Bash script to tail Kubernetes logs from multiple pods at the same time (Shell)
- links - kubetail
- awesome-k8s-resources - Kubetail - Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream. (Tools and Libraries / Command Line Tools)
- awesome-sysadmin-tools - kubetail - Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream (Kubernetes / Kubernetes tools)
- awesome-ops - johanhaleby/kubetail - 2.0|3326|2015-11-11|2024-02-26 | 可以同时监控 Kubernetes 多个 pods 日志的 Bash 脚本。 | (K8S-Tools)
- k8s_awesome_document - Kubetail - --Kubetail是一个小型的bash脚本,它允许您将多个pod的日志聚合到一个流中。最初的Kubetail版本没有过滤或突出显示功能,但在Github上有一个额外的Kubetail分叉。这可以使用多尾工具形成和执行日志着色。 (🏗相关开源项目 / 监控工具)
- awesome-k8s-resources - Kubetail - 聚合多个Pod的日志到一个流中。 (Uncategorized / Uncategorized)
- awesome-k8s-resources - Kubetail - 聚合多个Pod的日志到一个流中。 (Uncategorized / Uncategorized)
README
# Kubetail
Bash script that enables you to aggregate (tail/follow) logs from multiple pods into one stream.
This is the same as running "kubectl logs -f " but for multiple pods.## Installation
Just download the [kubetail](https://raw.githubusercontent.com/johanhaleby/kubetail/master/kubetail) file (or any of the [releases](https://github.com/johanhaleby/kubetail/releases)) and you're good to go.
### Homebrew
You can also install kubetail using [brew](https://brew.sh/):
$ brew install johanhaleby/kubetail/kubetail
It's also possible to install kubetail abbreviated to `kt` by using the `--with-short-names` suffix:
$ brew install johanhaleby/kubetail/kubetail --with-short-names
Note that you may need to run `compinit` for zsh to pick-up the changes in competition after having upgraded from the non abbreviated installation.
Use `brew install --HEAD johanhaleby/kubetail/kubetail` to install the latest (unreleased) version.
### ASDF
You can install kubetail using the [asdf](https://github.com/asdf-vm/asdf) version manager.
```
asdf plugin-add kubetail https://github.com/janpieper/asdf-kubetail.git
asdf install kubetail
```To find out the available versions to install, you can run the following command:
```
asdf list-all kubetail
```### ZSH plugin
If you're using a ZSH plugin manager, you can install `kubetail` as a plugin.
#### Antigen
If you're using [Antigen](https://github.com/zsh-users/antigen):
1. Add `antigen bundle johanhaleby/kubetail` to your `.zshrc` where you've listed your other plugins.
2. Close and reopen your Terminal/iTerm window to **refresh context** and use the plugin. Alternatively, you can run `antigen bundle johanhaleby/kubetail` in a running shell to have `antigen` load the new plugin.#### oh-my-zsh
If you're using [oh-my-zsh](github.com/robbyrussell/oh-my-zsh):
1. In the command line, change to _oh-my-zsh_'s custom plugin directory :
`cd ~/.oh-my-zsh/custom/plugins/`
2. Clone the repository into a new `kubetail` directory:
`git clone https://github.com/johanhaleby/kubetail.git kubetail`
3. Edit your `~/.zshrc` and add `kubetail` – same as clone directory – to the list of plugins to enable:
`plugins=( ... kubetail )`
4. Then, restart your terminal application to **refresh context** and use the plugin. Alternatively, you can source your current shell configuration:
`source ~/.zshrc`
#### zgen
If you're using [zgen](https://github.com/tarjoilija/zgen):
1. Add `zgen load johanhaleby/kubetail` to your `.zshrc` along with your other `zgen load` commands.
2. `zgen reset && zgen save`### Completion
The easiest option is to install kubetail from homebrew to dynamically display the pods names on `$ kubetail `. Alternatively install any of the [completion scripts](completion/) (bash/zsh/fish) manually. For example:
* On Ubuntu, download the [kubetail.bash](https://raw.githubusercontent.com/johanhaleby/kubetail/master/completion/kubetail.bash) script and execute it in your `~/.bash_completion` file `source $HOME/kubetail/completion/kubetail.bash`.
* On Mac with zsh copy the [kubetail.zsh](https://raw.githubusercontent.com/johanhaleby/kubetail/master/completion/kubetail.zsh) script to `/usr/local/share/zsh/site-functions/_kubetail`.
* On Mac with fish copy the [kubetail.fish](https://raw.githubusercontent.com/johanhaleby/kubetail/master/completion/kubetail.fish) script to `~/.config/fish/completions/`.Don't forget to restart your terminal afterwards.
## Usage
First find the names of all your pods:
$ kubectl get pods
This will return a list looking something like this:
```bash
NAME READY STATUS RESTARTS AGE
app1-v1-aba8y 1/1 Running 0 1d
app1-v1-gc4st 1/1 Running 0 1d
app1-v1-m8acl 1/1 Running 0 6d
app1-v1-s20d0 1/1 Running 0 1d
app2-v31-9pbpn 1/1 Running 0 1d
app2-v31-q74wg 1/1 Running 0 1d
my-demo-v5-0fa8o 1/1 Running 0 3h
my-demo-v5-yhren 1/1 Running 0 2h
```To tail the logs of the two "app2" pods in one go simply do:
$ kubetail app2
To tail only a specific container from multiple pods specify the container like this:
$ kubetail app2 -c container1
You can repeat `-c` to tail multiple specific containers:
$ kubetail app2 -c container1 -c container2
To tail multiple applications at the same time seperate them by comma:
$ kubetail app1,app2
For advanced matching you can use regular expressions:
$ kubetail "^app1|.*my-demo.*" --regex
To tail logs within a specific namespace, make sure to append the namespace flag *after* you have provided values for containers and applications:$ kubetail app2 -c container1 -n namespace1
Supply `-h` for help and additional options:
$ kubetail -h
## Colors
By using the `-k` argument you can specify how kubetail makes use of colors (only applicable when tailing multiple pods).
| Value | Description |
|----------|---------------|
| pod | Only the pod name is colorized but the logged text is using the terminal default color |
| line | The entire line is colorized (default) |
| false | Don't colorize the output at all |
Example:$ kubetail app2 -k false
If you find that some colors are difficult to see then they can be skipped by supplying the color index either to the `-z` flag or by setting the `KUBETAIL_SKIP_COLORS` environment variable (either choice could be comma seperated). To find the color index you'd like to skip more easily, set the `-i` flag to `true` (`-i true`) or set the `KUBETAIL_SHOW_COLOR_INDEX` environment variable to `true` (`KUBETAIL_SHOW_COLOR_INDEX=true`). This will print the color index as a prefix to the pod name (e.g. `[3:my-pod-12341] some log` where `3` is the index of the color). This is also helpful if you suffer from color blindness since the index will always be printed with the default terminal color.
## Filtering / Highlighting etckubetail itself doesn't have filtering or highlighting capabilities built-in. If you're on MacOSX I recommend using [iTerm2](https://www.iterm2.com/) which allows for continuous highlighting of search terms, good scrolling capabilities and multitab arrangements. Another useful feature of iTerm2 is the "timeline" (`cmd` + `shift` + `e`) which lets you display a timeline in your own local timezone next to the logs (that are typically in UTC).
If you're not using iTerm2 or think that kubetail is lacking in features there's a [fork](https://github.com/aks/kubetail) of kubetail made by [Alan Stebbens](https://github.com/aks) that allows for richer configuration and uses [multitail](https://www.vanheusden.com/multitail/) and [bash-lib](https://github.com/aks/bash-lib). Alan has been kind enough to provide a pull request but my current thinking is that I'd like kubetail to stay simple and small and not use any dependencies.
## Environment
kubetail can take default option values from environment variables matching the option name.
KUBETAIL_PREVIOUS
KUBETAIL_SINCE
KUBETAIL_NAMESPACE
KUBETAIL_FOLLOW
KUBETAIL_PREFIX
KUBETAIL_LINE_BUFFERED
KUBETAIL_COLORED_OUTPUT
KUBETAIL_TIMESTAMPS
KUBETAIL_JQ_SELECTOR
KUBETAIL_SKIP_COLORS
KUBETAIL_TAIL
KUBETAIL_SHOW_COLOR_INDEX## More
Pull requests are very welcome!
See also: http://code.haleby.se/2015/11/13/tail-logs-from-multiple-pods-simultaneously-in-kubernetes/