nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

Webベースのグラフィカルモニタリングツールcockpitをセットアップする

RHEL7やFedoraにはCockpitというWebベースのグラフィカルモニタリングツールが付属している。以下OpenShiftのセットアップで説明してるけど、OpenShift無関係でももちろん利用できる。

f:id:nekop:20170511154615p:plain

OpenShiftをインストールするとMasterにはcockpitもインストールされ、cockpitのKubernetesコンポーネントである程度クラスタの情報が見られるようになる。ただし、全ノードの包括的なモニタリングとかは設定されていないので、それを追加で設定するといい感じになる。

OpenShiftのmasterの初期状態では以下のパッケージがインストールされている。cockpit-wsがWebインタフェースで、bridgecockpit-wsからのオペレーションを受けるブリッジコンポーネントsystemはCPU利用率などのシステム全般、kubernetesdockerは名前の通りそれらの情報にアクセスしたりできるようにするコンポーネントだ。

$ 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がセットアップできる。