Cockpit (Linux サーバ管理ツール) について検証してみた

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは。サイオステクノロジー 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 ~]# 

すると、以下の様なログイン画面が表示されました。

001-01_cockpit_login

ユーザ/パスワード情報 (OS 上のユーザ/パスワード) を入力してログインすると、以下の様な画面が表示されます。

002-01_cockpit_after_login

■Web UI での操作

それでは、実際に Web UI の各画面を見てみます。

ログイン直後に表示されている “システム” タブでは、サーバの基本的な情報や CPU 使用率, Memory 使用量, Disk I/O, Network Traffic 等の情報を参照することが可能です。

また、”電源オプション” でサーバの停止や再起動を実行することも可能です。

002-02_cockpit_system

“ログ” タブでは、OS のシステムログを参照することが可能であり、プライオリティや期間等の条件でログをフィルタリングすることも可能です。

003-01_cockpit_log

“ネットワーキング” タブでは、送受信それぞれの Traffic の情報や各インターフェースの IP アドレス、ネットワーク関連のログ等を参照することが可能です。

また、Firewalld や bonding 等の設定を参照/変更することも可能となっています。

004-01_cockpit_network

“アカウント” タブでは、OS 上のユーザの情報を確認することが可能です。

005-01_cockpit_account

また、新規ユーザ追加やパスワード変更、ユーザ削除等も実施することができます。

005-02_cockpit_useradd

005-03_cockpit_useradd_done

005-04_cockpit_user_detail

“サービス” タブでは、systemd で管理されているサービスやソケット等 (*.service や *.socket の様な Unit ファイル等) の情報を参照することが可能です。

006-01_cockpit_service

また、各サービスの停止/再起動/再読み込み等の操作や、サーバ起動時の自動起動有無の設定変更等も実施することが可能です。

006-02_cockpit_service_unit_file

“Diagnostic Reports” タブでは、sosreport を取得することが可能です。

007-01_cockpit_diagnostic_report

“レポートの作成” ボタンを押すと、sosreport の取得が開始されます。

007-02_cockpit_sos

なお、上記レポートの生成画面の状態で 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 から直接ダウンロードすることが可能です。

007-03_cockpit_sos_done

また、実際の 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 の一時的な有効/無効の設定変更を実施することが可能です。

008-01_cockpit_selinux

上記画像の様に “ポリシーの適用” がオンになっている場合は、以下の様に SELinux が “Enforcing” になっています。

[root@cockpit-test ~]# getenforce 
Enforcing

この “ポリシーの適用” をオフにすると以下の様に SELinux が “Permissive” になりますが、Web UI にも表示されている通り、これは一時的な設定変更 (setenforce 0 コマンド実行と同じ) であるため、永続的な設定変更にはならない (サーバ再起動で設定が元に戻る) ことに注意が必要です。

008-02_cockpit_selinux_off

[root@cockpit-test ~]# getenforce 
Permissive

また、この “SELinux” タブでは、SELinux の監査ログの内容を参照することや、対処方法 (監査ログに出力されている処理を許可するために必要な設定変更の内容) 等を確認することも可能です。

008-03_cockpit_selinux_log

“カーネルダンプ” タブでは、kdump の有効/無効 (kdump.serivce の起動/停止) や、vmcore ファイルの出力先ディレクトリの確認/設定変更が可能です。

009-01_cockpit_kdump

また、”設定テスト” ボタンにて kdump の動作確認 (vmcore を取得可能か否か等) を確認することが可能です。

※実際に kernel が PANIC (サーバが停止) するため、実行には注意が必要です。

009-02_cockpit_kdump_test_run

この kdump のテストを実行すると、サーバ停止に伴い Cockpit も停止するため、以下の様な画面が表示されます。サーバ起動後に “再接続” ボタンを押すことで再接続することが可能です。(ログイン画面が表示されるため、再度ログインする必要があります。)

009-03_cockpit_kdump_after_run

009-04_cockpit_kdump_after_run_login

テスト実施後には、以下の様に 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 上から直接コマンドを実行することが可能です。

010-01_cockpit_terminal

■最後に

今回は Linux サーバの管理ツールである Cockpit について検証してみました。

CLI で実施できる操作を全て Web UI (GUI) 上で実施できる訳ではありませんが、基本的なサーバ管理操作は Web UI 上で実施できる印象でした。

また、CLI からでないと操作できないような場合でも、Web UI 上から端末に接続しコマンドを実行することが可能であるため、管理ツールとしての利便性は高いのではないでしょうか。

次回は、Cockpit を利用して複数サーバを管理する方法を検証してみようと思います。

アバター画像
About サイオステクノロジーの中の人 41 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

3人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる