CentOS の最新バージョンである「8.0.1905.」をインストールしてコンソールにログインすると、見慣れないメッセージが表示されます。「Active the Web console with: systemctl enable --now cockpit.socket」というメッセージです。
実はCentOS 8ではウェブブラウザでサーバーを管理するための機能「Cockpit」が利用できるようになっています。CentOS 8のインストール時にアプリケーショングループとして「サーバー」以上を選択していると、「Cockpit」パッケージはインストールされています。
Cockpitが有効になっているサーバーはコンソールにログインすることなく、一般的な操作がブラウザから可能になります。コンソールの操作が必要になる場合にはCockpitからコンソールに接続することもできます。
ウェブのGUIが利用できるといっても、Windowsのようにサーバーの設定を全てGUIで行うことはできません。そのためコマンドでの操作は必要になりますが一般的な運用には十分な機能があります。今後もアップデートにより機能が追加されていくことが予想できますので、ウェブコンソール機能の「Cockpit」をセットアップする手順と利用できる機能を紹介していきたいと思います。
1. Cockpit導入プラットフォームと事前の確認
Cockpitは「CentOS Linux 8」か「Red Hat Enterprise Linux 8」で利用できます。CentOS 8のインストール手順を紹介した、以下の記事の通りにセットアップ済みの環境ならインストール済みのため、cockpitを起動して「有効」にするだけで利用できます。
参考 CentOS 8のインストールと基本的な設定を紹介した記事
-
サーバー構築の基本 CentOS Linux 8をインストールしてベース環境を構築する
こんにちは、ITインフラエンジニアのKomura(@system_kom)です。 Linuxのインストールはサーバー構築の基本です。インフラエンジニアを目指している場合やLinux初心者にはOSのインストールから始めることをオススメします。 ...
-
サーバー構築の基本 CentOS Linux 8のインストール後に設定する12の項目
こんにちは、ITインフラエンジニアのKomura(@system_kom)です。 前回の記事でCentOS Linux 8をインストールする手順を紹介しました。うまくインストールできましたでしょうか。インストールはサーバー構築の基本ですが、 ...
記事内でシステムの詳細な環境を紹介していますが、構成の概要を記載しておきます。
OSのバージョン | CentOS 8.0.1905. |
アプリケーショングループ | サーバー |
システムのIPアドレス | 192.168.241.216/255.255.255.0 |
システムのホスト名 | www |
ファイアウォール | firewalldを利用して設定済み |
SELinux | 無効 |
この設定が行われたCentOS 8のシステムでCockpitを利用できるように設定します。
1-1. Cockpit関連パッケージの確認
Cockpitに関連するパッケージは既に記載していますが、アプリケーショングループとして「サーバー」以上を選択している場合、インストール済みです。Cockpit関連パッケージがインストールされているかの確認は"dnf list installed"コマンドで以下のように確認します。
command
$ dnf list installed | grep cockpit
cockpit.x86_64 185.1-1.el8_0 @BaseOS
cockpit-bridge.x86_64 185.1-1.el8_0 @BaseOS
cockpit-packagekit.noarch 184.1-1.el8 @AppStream
cockpit-storaged.noarch 184.1-1.el8 @AppStream
cockpit-system.noarch 185.1-1.el8_0 @BaseOS
cockpit-ws.x86_64 185.1-1.el8_0 @BaseOS
インストール済みの場合には上記のようにCockpitに関連するパッケージ名が表示されます。もしパッケージ名が表示されない場合には"dnf install"コマンドでパッケージをインストールしてください。以下のように実行します。
command
# dnf -y install cockpit
1-2. Cockpit接続用ファイアウォールの確認
Cockpitへの接続はTCPの9090ポートを利用して行います。Cockpitがインストール済みの環境ではファイアウォールは許可されていますが、念のために確認しておきます。firewalldを利用してファイアウォールを設定している場合、ルールを表示するには"firewall-cmd"コマンドを以下のように実行します。
command
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
表示された「services」項目に「cockpit」が含まれている場合にはファイアウォールの許可は設定済みです。もし「cockpit」が含まれていない場合には以下のように"firewall-cmd"コマンドを実行して、ルールを追加します。
command
# firewall-cmd --permanent --add-service=cockpit
# firewall-cmd --reload
コマンドの実行後に、再度"firewall-cmd --list-all"を実行して「services」項目に「cockpit」が含まれていることを確認してください。
2. ウェブコンソール「Cockpit」サービスの起動と確認
ウェブコンソール用のサービス「Cockpit」はシステムにインストールされていますので、本章ではインストールされているCockpitを有効化する手順を説明します。Cockpitに関連する起動スクリプト「cockpit.socket」もインストール時に用意されています。
2-1. Cockpitサービスの起動
Cockpitサービスを起動するためには"systemctl start"コマンドを実行します。起動スクリプトを指定して、以下のように実行します。
command
# systemctl start cockpit.socket
コマンドを実行してエラーが出力されなければ「Cockpit」サービスは起動しています。
2-2. Cockpitサービスの起動確認
サービスが起動できたら、起動したサービスの状態を確認します。"systemctl status"コマンドを実行することで、起動したサービスの状態について、詳細な情報を取得することができます。以下のように実行します。
command $ systemctl status cockpit.socket ● cockpit.socket - Cockpit Web Service Socket Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; vendor preset: disabled) Active: active (listening) since Thu 2019-10-24 12:30:09 JST; 1min 7s ago Docs: man:cockpit-ws(8) Listen: [::]:9090 (Stream) Process: 7214 ExecStartPost=/bin/ln -snf active.motd /run/cockpit/motd (code=exited, status=0/SUCCESS) Process: 7207 ExecStartPost=/usr/share/cockpit/motd/update-motd localhost (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 11374) Memory: 612.0K CGroup: /system.slice/cockpit.socket 10月 24 12:30:09 www systemd[1]: Starting Cockpit Web Service Socket. 10月 24 12:30:09 www systemd[1]: Listening on Cockpit Web Service Socket.
上記では分かり難いかもしれませんが、丸(●)の部分が正常な起動状態の場合には緑色で表示されます。またサービスの起動状態を表示する「Active」項目に「active (listening)」と表示されていますので、起動されていることが確認できます。
2-3.Cockpit TCPポートの確認
Cockpitサービスは「TCP:9090ポート」を利用します。サービスの起動後に9090ポートが「LISTEN」していることを確認します。オープンしているポート(ソケット)を確認するためには"ss"コマンドを利用します。"ss"コマンドをオプションなしで実行すると、全ての待ち受けTCP/UDPポートが表示されます。表示結果を見やすくするために"-plnt"オプションを付けます。
参考 ssコマンドのオプション
-p | ポート(ソケット)を使用しているプロセスを表示する |
-l | 接続待ち状態のポートだけを表示する |
-n | ポートに対応するサービス名の解決をしない |
-t | TCPポートのみを表示する |
ここでは実行された結果から「cockpit」に関連するLISTENポートだけを抽出するため、パイプ(縦棒| )で"grep"を実行します。
command
# ss -plnt | grep 9090
LISTEN 0 128 *:9090 *:* users:(("systemd",pid=1,fd=50))
上記のように「TCP:9090ポート」がオープンしていることが確認できました。
3. Cockpit自動起動の設定
サーバーの再起動や停止の復旧時に「Cockpit」サービスが自動的に起動するように設定します。サービスの自動起動を設定するには"systemctl enable"コマンドを実行します。以下のように実行します。
command
# systemctl enable cockpit.socket
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.Created symlink /etc/systemd/system/multi-user.
コマンドを実行して「Created symlink...」メッセージが表示されれば、cockpit.socketの自動起動は設定が完了しています。念のために自動起動が設定されたことを確認します。確認は"systemctl is-enabled"コマンドで行います。以下のように実行します。
command
$ systemctl is-enabled cockpit.socket
enabled
「enabled」と表示されれば「cockpit.socket」自動起動の確認は完了です。
4. Cockpitウェブコンソールへの接続
Cockpitサービスを起動したCentOS 8のサーバーにはブラウザで接続できます。本記事ではWindows10クライアントにインストールしたChromeブラウザから「Cockpit」へ接続してみます。
4-1. Cockpitウェブコンソール接続時のエラー
Cockpitへの接続はホスト名かIPアドレスにポート番号の9090を付けたURLでアクセスします。ホスト名での接続はDNSへのレコード登録やhostsファイルによる名前解決の設定が必要になりますので、IPアドレスを利用して接続を行います。
サーバーのIPアドレスが「192.168.241.216」の場合にはURLは以下のようになります。
https://192.168.241.216:9090
このURLをChromeブラウザに入力してサーバーのウェブコンソールに接続します。HTTPS通信を行う際の証明書としてホスト名で生成された自己証明書を利用しているため、「この接続ではプライバシーが保護されません」エラーが表示されます。
「詳細設定」をクリックして表示された「"サーバーのIPアドレス"にアクセスする(安全ではありません)」をクリックします。
ウェブコンソールのログイン画面が表示されます。
4-2. 資格情報の入力
Cockpitへログインするためには資格情報を入力必要があります。Cockpitへのログインには「管理者になることができる一般ユーザー」か「rootユーザー」の情報を利用します。ここでは管理者になることができる一般ユーザーの「testuser」を利用します。
ユーザー名 | testuser |
パスワード | testuserのパスワード |
特権タスクにパスワードを再使用する | チェックを入れる |
「特権タスクにパスワードを再使用する」にチェックを入れることで、一般ユーザーでも管理者権限が必要な操作を行うことができます。ここではチェックを入れます。
全ての項目を入力して「ログイン」をクリックします。
入力した情報が正しい場合にはCockpitの画面が表示されます。
5. Cockpitの基本機能とツール
Cockpitにログインできるとシステムのサマリー画面である「システム」が表示されます。システムの基本的な情報やCPU、メモリ、ディスクの使用率、ネットワークトラフィックなどのリソース状況を確認することができます。
各リソースの状況にはリンクがあり、クリックすることで詳細な状況が表示されます。
左側には接続しているサーバーの名前と利用できるツールへのリンクが表示されています。各ツールの機能を見ていきます。
5-1. Cockpitの機能 ログの確認
左側に表示されている「ログ」をクリックするとOSが出力しているログを確認することができます。
日付と重大度の二つをキーにログを抽出することも可能です。
対象となるログはシステムの基本的なものになりますす。「/var/log/messages」「/var/log/secure」などのログファイルが含まれます。
5-2. ストレージ
システムに接続されているストレージの情報を確認することができます。ディスクのI/Oから使用率、ストレージに関するログなどが表示されます。
LVMの「ボリュームグループ」設定変更
ファイルシステムの確認、「パーティションテーブルの作成」などディスクの操作を行うことも可能です。
ストレージに関連するログの確認もできます。
5-3. ネットワーキング
システムに接続されているネットワークインターフェイスと、インターフェイスに設定した情報が表示できます。
送信と受信量を図るためのネットワークトラフィックも表示されるため、トラフィックに関するトラブルシューティングにも利用できるかと思います。
「ネットワークコネクション名(本環境の場合にはens33)」をクリックすると、ネットワークインターフェースに設定されているIPアドレスと接続の「有効/無効化」設定、トラフィック状況が表示されます。
「ファイアウォール」をクリックすると、システムに設定されているファイアウォールの設定(許可されているサービス)と、ファイアウォールの「オン/オフ」が表示されます。
ネットワークに関するログを確認することもできます。
異常があったときに、このツールでネットワーク周りを確認することで、トラブルシューティングの助けになりそうですね。
5-4. アカウント
OS上に作成されているユーザーの表示と作成、削除ができます。
作成されているユーザーをクリックすると、「パスワードの変更」や「アカウントのロック」といった管理を行うことができます。
5-5. サービス
システムのサービス稼働状況が一覧表示されます。
各サービスをクリックすることで、インストールされているサービスの「起動」「再起動」「停止」とサービス自動起動について「有効」「無効」の設定を行うことができます。サービスのログもここに表示されます。
5-6. Diagnostic Reports
システムの診断を行うツールです。システムの設定と診断情報を収集してレポートを作成する機能になります。「レポートの作成」をクリックすることでシステムのレポートが作成されます。
作成されたレポートはtarでアーカイブされており、ブラウザからダウンロードできます。展開するとシステム全体のレポートが含まれたフォルダになります。内容が多岐に渡るため、解析には時間がかかりそうです。
5-7. SELinux
Linuxのセキュリティ機能である「SELinux」の設定と情報が確認できます。本記事のシステムではSELinuxを無効にしているため、「SELinuxはシステムで無効です」と表示されています。
5-8. アプリケーション
システムにインストールされているアプリケーションが表示されるようです。このツールを開いてもアプリケーションは表示されないため、具体的な利用方法が不明です。
5-9. カーネルダンプ
CentOSにカーネルダンプを出力するための機能、KDUMPがインストールされている場合には「有効」「無効」の切り替えと「設定のテスト」を実行することができます。
「設定のテスト」は実際にカーネルをクラッシュさせて行うため、実行には気を付ける必要があります。
5-10. ソフトウェア更新
システムにインストールされているパッケージの更新と自動的にパッケージを更新する機能「自動アップデート」の「有効」「無効」切り替えができます。
更新を行ってみます。「ログの更新」をクリックするとアップデートの状況が表示されます。
更新が完了するとOSの再起動を推奨する画面が表示されます。「すぐに再起動」をクリックするとOSが即時、再起動されます。
「パッケージ情報」をクリックすると更新されたパッケージのリストが表示されます。
更新されるパッケージが無い場合には「システムは最新の状態です」と表示されます。
5-11. 端末
Cockpitのウェブコンソール経由でシステムのコンソールに接続ができます。通常のコンソールと同じように利用できます。コンソールに接続すると以下のようにシェルが表示されます。
6. まとめ
CockpitはCentOS 8から手軽に利用できるツールです。通常の運用では十分な機能があります。インストールの必要もなく「有効化」とサービスを起動するだけで利用できる手軽さもあって、これからLinuxを触ってみたいというユーザーにもおすすめです。Linuxのコマンド操作が苦手な場合には特に力を発揮します。
その反面、運用については十分に注意する必要があります。第三者がCockpitにログインできてしまうと、管理対象のシステムを停止や再起動を含めて自由に操作・設定できてしまうことから、セキュリティは十分に確保した上での運用をお勧めします。そこさえ注意できればとても便利なツールで、今後のバージョンアップによる機能拡張にも期待が持てます。
Linux管理用のウェブコンソールは「webmin」などもありますが、webminと比較してCockpitはシンプルで利用しやすく、インターフェイスもユーザーフレンドリーです。webminのようにアプリケーションレベルまで設定できるような機能はないため、使い分けることで、Linuxをより便利に利用できる可能性がありますので、是非、利用してみて下さい。