こんにちは。サイオステクノロジー OSS サポート担当 Y です。
今回は Linux サーバの管理ツールである Cockpit について検証してみました。(※以下の内容は CentOS 7.6/Cockpit 176 にて検証しています。)
■はじめに
Cockpit は、Web UI 上で Linux サーバの管理ができるツールです。こちらのページを見ると、Fedora/RHEL/CentOS/Debian/Ubuntu 等の Linux ディストリビューションに対応している様です。今回は CentOS 7.6 にこの Cockpit をインストールして、動作を検証してみました。
■インストール
まずはインストールです。プロジェクトの HP に記載してある CentOS でのインストール方法に沿ってインストールしてみます。
どうやら、CentOS のリポジトリ (extras) でパッケージが提供されているようですので、以下の様に yum コマンドでパッケージをインストールします。
[root@cockpit-test ~]# yum install -y cockpit Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ty1.mirror.newmediaexpress.com * extras: ty1.mirror.newmediaexpress.com * updates: ty1.mirror.newmediaexpress.com ~(中略)~ Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: cockpit x86_64 176-4.el7.centos extras 47 k Installing for dependencies: cockpit-bridge x86_64 176-4.el7.centos extras 497 k cockpit-system noarch 176-4.el7.centos extras 1.2 M cockpit-ws x86_64 176-4.el7.centos extras 796 k Transaction Summary ======================================================================================================== Install 1 Package (+3 Dependent packages) Total download size: 2.5 M Installed size: 3.6 M ~(中略)~ Running transaction Installing : cockpit-bridge-176-4.el7.centos.x86_64 1/4 Installing : cockpit-system-176-4.el7.centos.noarch 2/4 Installing : cockpit-ws-176-4.el7.centos.x86_64 3/4 Installing : cockpit-176-4.el7.centos.x86_64 4/4 Verifying : cockpit-system-176-4.el7.centos.noarch 1/4 Verifying : cockpit-ws-176-4.el7.centos.x86_64 2/4 Verifying : cockpit-176-4.el7.centos.x86_64 3/4 Verifying : cockpit-bridge-176-4.el7.centos.x86_64 4/4 Installed: cockpit.x86_64 0:176-4.el7.centos Dependency Installed: cockpit-bridge.x86_64 0:176-4.el7.centos cockpit-system.noarch 0:176-4.el7.centos cockpit-ws.x86_64 0:176-4.el7.centos Complete! [root@cockpit-test ~]#
上記の通り、yum コマンド 1つで簡単にインストールすることができました。
次に、サーバ起動時の自動起動設定を実施します。
[root@cockpit-test ~]# systemctl enable --now cockpit.socket Created symlink from /etc/systemd/system/sockets.target.wants/cockpit.socket to /usr/lib/systemd/system/cockpit.socket. [root@cockpit-test ~]#
最後に、Firewalld で Cockpit の通信を許可する設定を実施します。
[root@cockpit-test ~]# firewall-cmd --permanent --zone=public --add-service=cockpit success [root@cockpit-test ~]# [root@cockpit-test ~]# firewall-cmd --reload success [root@cockpit-test ~]#
これで Cockpit のインストール作業は完了です。かなりシンプルな手順でインストールできるようです。
■Web UI への接続
先程紹介したこちらのページを見ると、Cockpit の Web UI は “https://ip-address-of-machine:9090” でアクセスできるようです。
CLI 上で確認してみると、実際に systemd が 9090 port で LISTEN していることが確認できます。
[root@cockpit-test ~]# ss -anp | grep 9090 tcp LISTEN 0 128 :::9090 :::* users:(("systemd",pid=1,fd=98)) [root@cockpit-test ~]#
今回検証で利用しているサーバの IP を確認し、ブラウザからアクセスしてみます。
[root@cockpit-test ~]# ip addr show ens192 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:50:56:b6:88:42 brd ff:ff:ff:ff:ff:ff inet 10.1.1.146/16 brd 10.1.255.255 scope global noprefixroute dynamic ens192 valid_lft 42944sec preferred_lft 42944sec inet6 fe80::d435:c7c0:ab0f:9203/64 scope link noprefixroute valid_lft forever preferred_lft forever [root@cockpit-test ~]#
すると、以下の様なログイン画面が表示されました。
ユーザ/パスワード情報 (OS 上のユーザ/パスワード) を入力してログインすると、以下の様な画面が表示されます。
■Web UI での操作
それでは、実際に Web UI の各画面を見てみます。
ログイン直後に表示されている “システム” タブでは、サーバの基本的な情報や CPU 使用率, Memory 使用量, Disk I/O, Network Traffic 等の情報を参照することが可能です。
また、”電源オプション” でサーバの停止や再起動を実行することも可能です。
“ログ” タブでは、OS のシステムログを参照することが可能であり、プライオリティや期間等の条件でログをフィルタリングすることも可能です。
“ネットワーキング” タブでは、送受信それぞれの Traffic の情報や各インターフェースの IP アドレス、ネットワーク関連のログ等を参照することが可能です。
また、Firewalld や bonding 等の設定を参照/変更することも可能となっています。
“アカウント” タブでは、OS 上のユーザの情報を確認することが可能です。
また、新規ユーザ追加やパスワード変更、ユーザ削除等も実施することができます。
“サービス” タブでは、systemd で管理されているサービスやソケット等 (*.service や *.socket の様な Unit ファイル等) の情報を参照することが可能です。
また、各サービスの停止/再起動/再読み込み等の操作や、サーバ起動時の自動起動有無の設定変更等も実施することが可能です。
“Diagnostic Reports” タブでは、sosreport を取得することが可能です。
“レポートの作成” ボタンを押すと、sosreport の取得が開始されます。
なお、上記レポートの生成画面の状態で CLI 上で確認すると、以下の様に sosreport コマンドが実行されていることが確認できます。
[root@cockpit-test ~]# ps -ef | grep sosrepor[t] root 6949 7561 22 15:27 pts/2 00:00:10 /usr/bin/python /usr/sbin/sosreport --batch [root@cockpit-test ~]#
生成された sosreport は、Web UI から直接ダウンロードすることが可能です。
また、実際の sosreport は以下の様に /var/tmp 配下に出力されているため、こちらから別途取得することも可能です。
[root@cockpit-test ~]# ls -l /var/tmp/sosreport-cockpit-test-2019-08-26-psdxzwk.tar.xz -rw-------. 1 root root 10343760 Aug 26 15:28 /var/tmp/sosreport-cockpit-test-2019-08-26-psdxzwk.tar.xz [root@cockpit-test ~]#
“SELinux” タブでは、SELinux の一時的な有効/無効の設定変更を実施することが可能です。
上記画像の様に “ポリシーの適用” がオンになっている場合は、以下の様に SELinux が “Enforcing” になっています。
[root@cockpit-test ~]# getenforce Enforcing
この “ポリシーの適用” をオフにすると以下の様に SELinux が “Permissive” になりますが、Web UI にも表示されている通り、これは一時的な設定変更 (setenforce 0 コマンド実行と同じ) であるため、永続的な設定変更にはならない (サーバ再起動で設定が元に戻る) ことに注意が必要です。
[root@cockpit-test ~]# getenforce Permissive
また、この “SELinux” タブでは、SELinux の監査ログの内容を参照することや、対処方法 (監査ログに出力されている処理を許可するために必要な設定変更の内容) 等を確認することも可能です。
“カーネルダンプ” タブでは、kdump の有効/無効 (kdump.serivce の起動/停止) や、vmcore ファイルの出力先ディレクトリの確認/設定変更が可能です。
また、”設定テスト” ボタンにて kdump の動作確認 (vmcore を取得可能か否か等) を確認することが可能です。
※実際に kernel が PANIC (サーバが停止) するため、実行には注意が必要です。
この kdump のテストを実行すると、サーバ停止に伴い Cockpit も停止するため、以下の様な画面が表示されます。サーバ起動後に “再接続” ボタンを押すことで再接続することが可能です。(ログイン画面が表示されるため、再度ログインする必要があります。)
テスト実施後には、以下の様に vmcore ファイルが出力されていることが確認できます。
[root@cockpit-test ~]# ls -l /var/crash/ total 0 drwxr-xr-x. 2 root root 44 Aug 26 16:02 127.0.0.1-2019-08-26-16:02:02 [root@cockpit-test ~]# [root@cockpit-test ~]# ls -l /var/crash/127.0.0.1-2019-08-26-16\:02\:02/ total 104628 -rw-------. 1 root root 107027826 Aug 26 16:02 vmcore -rw-r--r--. 1 root root 108402 Aug 26 16:02 vmcore-dmesg.txt [root@cockpit-test ~]#
最後に “端末” タブです。
“端末” タブでは、Web UI 上から端末に接続して CLI 操作 (コマンド実行) が可能です。
Web UI 上では実施できないような操作が必要になった場合であっても、別途ターミナルソフト等で接続する必要は無く、Cockpit の Web UI 上から直接コマンドを実行することが可能です。
■最後に
今回は Linux サーバの管理ツールである Cockpit について検証してみました。
CLI で実施できる操作を全て Web UI (GUI) 上で実施できる訳ではありませんが、基本的なサーバ管理操作は Web UI 上で実施できる印象でした。
また、CLI からでないと操作できないような場合でも、Web UI 上から端末に接続しコマンドを実行することが可能であるため、管理ツールとしての利便性は高いのではないでしょうか。
次回は、Cockpit を利用して複数サーバを管理する方法を検証してみようと思います。