RHEL7やFedoraにはCockpitというWebベースのグラフィカルモニタリングツールが付属している。以下OpenShiftのセットアップで説明してるけど、OpenShift無関係でももちろん利用できる。
OpenShiftをインストールするとMasterにはcockpitもインストールされ、cockpitのKubernetesコンポーネントである程度クラスタの情報が見られるようになる。ただし、全ノードの包括的なモニタリングとかは設定されていないので、それを追加で設定するといい感じになる。
OpenShiftのmasterの初期状態では以下のパッケージがインストールされている。cockpit-ws
がWebインタフェースで、bridge
はcockpit-ws
からのオペレーションを受けるブリッジコンポーネント、system
はCPU利用率などのシステム全般、kubernetes
とdocker
は名前の通りそれらの情報にアクセスしたりできるようにするコンポーネントだ。
$ rpm -qa | grep cockpit cockpit-system-135-4.el7.noarch cockpit-bridge-135-4.el7.x86_64 cockpit-kubernetes-135-4.el7.x86_64 cockpit-ws-135-4.el7.x86_64 cockpit-docker-135-4.el7.x86_64
まずはPCP(Performance Co-Pilot)を入れてpmlogger
サービスを有効化する。cockpit-pcp
を利用すると、過去分のCPU利用率とかもpmlogger
のデータから取得してくれてWeb上でレンダリングしてくれるようになる(遅延フェッチするのでグラフ開いてから反映までちょっと時間がかかる)。
ansible nodes -b -a "yum install pcp -y" ansible nodes -b -a "systemctl start pmcd pmlogger" ansible nodes -b -a "systemctl enable pmcd pmlogger"
全ノードに必要なcockpitのコンポーネントをインストールする。
ansible nodes -b -a "yum install cockpit-system cockpit-bridge cockpit-pcp cockpit-docker -y"
ノードを一覧で見るためのcockpit-ws
のプラグインcockpit-dashboard
を入れて、cockpit
サービスを再起動する。
sudo yum install cockpit-dashboard -y sudo systemctl restart cockpit
9090ポートにブラウザでTLSアクセスするとusername/passwordが聞かれるので、全ノードへ鍵認証sshとパスワードレスsudo(もしくはログインパスワードでsudo)ができるユーザでログインする。内部テスト環境などであれば全部のノードのrootを同じパスワードにしておいてrootで"Reuse my password for privileged tasks"をチェックするという方法もある。
ダッシュボードが開いたら “+” 記号を押してノードを追加していく。結果は/etc/cockpit/machines.d/99-webui.json
というファイルに保存されるっぽいので、数が多い場合は恐らくこれを生成するというアプローチになると思う。
これで全ノードモニタリングできるダッシュボードと、必要であればコンテナの詳細まで全部見ることのできるcockpitがセットアップできる。