Cockpitのインストールと使用ガイド:WebインターフェースによるLinuxサーバーの集中管理

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

午前2時の呼び出し

午前2時、PagerDutyのアラートでスマホが鳴り響いています。本番サーバーのCPU負荷が98%に達し、ユーザーからはページの読み込みに10秒かかると苦情が来ています。寝ぼけ眼で複雑な journalctl クエリを実行したり、ラグのあるSSH接続と格闘したりするのは、スプーンで手術をするようなものです。これこそが、私がCockpitを頼りにしている理由です。

Cockpitは、サーバーの「魂」を覗くための軽量なブラウザベースの窓のようなものだと考えてください。システムAPIと直接対話し、余計なことはしません。systemdソケットを使用するため、ログインしていない時のリソース消費はほぼゼロ(RAM 10〜15MB程度)です。過去数年にわたり数十台のVPSインスタンスを管理してきましたが、コマンドを1つも打たずに暴走プロセスを特定する最も速い方法だと確信しています。

はじめに:5分でセットアップ

主要なLinuxディストリビューションの多くは、デフォルトのリポジトリにすでにCockpitを含んでいます。コーヒーを淹れ終わる前に、ダッシュボードを稼働させることができます。

1. インストール

UbuntuやDebianベースのシステムでは、以下を実行します:

sudo apt update
sudo apt install cockpit -y

AlmaLinux、Rocky、FedoraなどのRHELベースのディストリビューションの場合:

sudo dnf install cockpit -y

2. サービスの起動

Cockpitは、実際に必要になるまで休止状態です。ソケットを有効にして、着信接続をリッスンできるようにします:

sudo systemctl enable --now cockpit.socket

3. ファイアウォールの設定

Cockpitはデフォルトでポート9090をリッスンします。そのトラフィックを許可する必要があります。

# UFW (Ubuntu/Debian) の場合
sudo ufw allow 9090/tcp

# Firewalld (RHEL/CentOS) の場合
sudo firewall-cmd --permanent --add-service=cockpit
sudo firewall-cmd --reload

完了したら、ブラウザで https://your-server-ip:9090 にアクセスします。標準のLinux認証情報を使用してログインします。特別なWebユーザーアカウントを作成する必要はありません。

インターフェースの紹介

UIは驚くほどクリーンです。重厚なコントロールパネルは独自の仕組みを導入しがちですが、Cockpitは独自のレイヤーを追加することなく、既存のLinux内部をシンプルに可視化します。

素早いステータスチェック

「概要(Overview)」タブでは、CPU、メモリ、ネットワークI/Oのライブグラフが表示されます。先ほど述べた午前2時のトラブルの際、これらのグラフは4GBのスワップを消費していたバックアップスクリプトを即座に特定しました。推測する必要はなく、データは赤と白ではっきりと示されていました。

頭を悩ませないログのトラブルシューティング

「ログ(Logs)」セクションは、実質的に journalctl の高速なGUIです。「エラー」や「致命的」といった重要度でワンクリックでフィルタリングできます。Nginxが502エラーを吐いた場合、ターミナルで5万行のテキストファイルをスクロールすることなく、特定のタイムスタンプとスタックトレースを見つけることができます。

ストレージとネットワークの管理

「ストレージ(Storage)」タブは非常に強力です。ディスクの読み取り/書き込み速度(100%のディスクI/Oボトルネックを特定するのに不可欠)を監視し、RAIDアレイを管理できます。ネットワークについては、インターフェースごとのリアルタイムの帯域幅を確認できます。物理リンクが切れたりブリッジが誤動作したりした場合、視覚的なインジケーターによって問題が明白になります。

マルチサーバー管理

Cockpitのあまり知られていない優れた機能の一つは、一つの画面から複数のサーバーを管理できることです。複雑な管理ノードは不要で、1つの「マスター」インスタンスがあれば十分です。

リモートホストの追加

まず、リモートマシンに cockpit がインストールされていることを確認します。メインのダッシュボードで、ホスト切り替えドロップダウンをクリックし、「新しいホストを追加(Add new host)」を選択します。IPアドレスを入力すると、CockpitはSSHを使用して接続をブリッジします。これにより、Webサーバーからデータベースサーバーへ数秒で移動でき、サイト全体のダウン時にログを関連付けて調査するのに最適です。

本物のWebターミナル

時にはCLIが必要なこともあります。Cockpitには、ポート22をブロックし443/9090を許可している企業ファイアウォール内にいても機能する、完全対話型のターミナルが含まれています。これは制限されたエミュレータではなく完全なシェルであるため、エイリアスやスクリプトも期待通りに動作します。

本番環境での教訓

ライブサーバーでWebベースの管理ツールを実行するには、セキュリティ第一の考え方が必要です。私がインスタンスをロックダウンする方法を以下に紹介します。

デフォルトポートの変更

ボットは常にポート9090をスキャンしています。ログのノイズと自動攻撃を減らすために、Cockpitを9999のような非標準ポートに移動しましょう。systemdのドロップインファイルを作成します:

sudo mkdir -p /etc/systemd/system/cockpit.socket.d/
sudo nano /etc/systemd/system/cockpit.socket.d/listen.conf

以下を貼り付けて、デフォルト設定をクリアし、新しいポートを設定します:

[Socket]
ListenStream=
ListenStream=9999

デーモンをリロードしてソケットを再起動し、変更を適用します:

sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket

ファイアウォールの強化

Cockpitを全世界に公開したままにしてはいけません。ファイアウォールを使用して、自宅やオフィスの特定のIPアドレスにアクセスを制限しましょう。UFWユーザーの場合、コマンドは簡単です:

sudo ufw allow from 1.2.3.4 to any port 9090

賢いソフトウェアアップデート

Cockpitの「ソフトウェア更新(Software Updates)」モジュールは、保留中の更新を確認するのに最適ですが、むやみに「すべて更新」をクリックしてはいけません。10台以上の本番サーバーを管理してきた私の経験則では、まず変更ログを確認することです。UIを使用して重要なパッチを特定し、統合ターミナルを使用してリスクの高いパッケージに対してターゲットを絞った更新を実行しましょう。

Cockpitは、CLIの生のパワーと現代的なUIの利便性の架け橋となります。ターミナルを完全に置き換えるものではありませんが、深夜のトラブルシューティングを大幅に楽にしてくれるはずです。今日、テスト用のVMを立ち上げて、ワークフローがどう変わるか試してみてください。

Share: