Help us understand the problem. What is going on with this article?

ローカルクラスタ実行中のKubernetesのログをscreenでいい感じにモニタリングする

More than 1 year has passed since last update.

はじめに

Kubernetesをソースコードからビルドしてローカル環境にkubernetes clusterを構築する」で構築した環境では、/tmp以下に各種サービスのログが出力されています。これらのログをいちいちtail -fするのが面倒なのと、色付けされていないため高速に流れていくログでは何が問題なのかが直観的で分からないため、OpenStackのdevstack風に、ログをscreenに表示して色付けする方法を試してみました。

公式でいい方法があればうれしいのですが、少し探した限りでは見つからず断念。

Logs:
  /tmp/kube-apiserver.log
  /tmp/kube-controller-manager.log
  /tmp/kube-proxy.log
  /tmp/kube-scheduler.log
  /tmp/kubelet.log

パッケージのインストールとスクリプトの配置

ログの色付けには、cczeというツールを使います。予め定義されているキーワードと配色、例えばERRORは赤色で表示などの設定を使ってログをカラーで表示してくれます。

% wget https://dl.fedoraproject.org/pub/epel/7Server/x86_64/c/ccze-0.2.1-11.el7.x86_64.rpm
% rpm -ivh ccze-0.2.1-11.el7.x86_64.rpm

あと、screenパッケージもない場合は追加が必要です。

sreenを起動するための設定ファイル。stuff行末尾の^Mは、ctrl+v ctrl +mで入力出来ます。

% cat k8s-screenrc
sessionname k8s-debug
hardstatus alwayslastline '%{= .} %-Lw%{= .}%> %n%f %t*%{= .}%+Lw%< %-=%{g}(%{d}%H/%l%{g})'
setenv PROMPT_COMMAND /bin/true
screen -t shell bash
screen -t kube-apiserver bash
stuff "sudo tail -f /tmp/kube-apiserver.log | ccze -A^M"
screen -t kubelet bash
stuff "sudo tail -f /tmp/kubelet.log | ccze -A^M"
screen -t kube-controller-manage bash
stuff "sudo tail -f /tmp/kube-controller-manager.log | ccze -A^M"
screen -t kube-proxy bash
stuff "sudo tail -f /tmp/kube-proxy.log | ccze -A^M"
screen -t kube-scheduler bash
stuff "sudo tail -f /tmp/kube-scheduler.log | ccze -A^M"

screenを起動するためのスクリプトです。screenセッションがあれば既存のものを、なければ新規に作ります。(ベースは、devstackのrejoin.shです。)

% cat k8s-screen.sh
#! /usr/bin/env bash

TOP_DIR=`dirname $0`
SCREEN_NAME="k8s-debug"
SCREEN_FILE="k8s-screenrc"

SCREENRC=$TOP_DIR/$SCREEN_FILE
# if screenrc exists, run screen
if [[ -e $SCREENRC ]]; then
    if screen -ls | egrep -q "[0-9]+.${SCREEN_NAME}"; then
        echo "Attaching to already started screen session.."
        exec screen -r $SCREEN_NAME
    fi
    exec screen -c $SCREENRC
fi

echo "Couldn't find $SCREENRC file;"
exit 1

k8s-screen.sh実行結果

本当はE0xxx行を強調するなどできればいいのですが、最低限エラーに気づけるようになったのでよしとします。

k8s-debug.png

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away