RHEL用MCPサーバーで実現!GeminiからSSH接続してログ解析を「爆速化」してみた

コンピュータ
スポンサーリンク

RHEL対応のMCPサーバーが登場したと聞き、さっそく試してみました。結論から言うと、Windows上のGemini CLIからリモートの Red Hat Enterprise Linux (RHEL) 9.7 へ繋いでみたら、単なる「ツール」を超えて、頼れる「相棒」が爆誕してしまいました。

今回は、OS情報の取得から /var/log/messages のログ解析まで、AIにいい感じに「丸投げ」して楽をする方法を解説します。

スポンサーリンク

これができると、どれだけ便利か(導入のメリット)

実際に触ってみて感じた、メリットは以下の4点です。

自律的なトラブルシューティング:
認証エラーやホスト名解決エラーといった「接続以前のトラブル」も、AI自ら原因を特定して修正案を出してくれます。

コンソール切り替えの手間がゼロ:
ブラウザとターミナルを往復せず、チャット画面1枚で調査から実行まで完結します。

ログの「読み込み」と「分析」を同時実行:
膨大なログの中から、AIが「何が異常か」を即座に判断。人間は最終確認に集中できます。

日本語での意思疎通:
英語の複雑なエラーメッセージも、その場で日本語解説&対策提示までセットで行われます。

システム構成

今回の検証環境は、以下の通りです。

コンポーネント内容
ClientWindows 11 (Gemini CLI / MCP Client)
Remote HostRed Hat Enterprise Linux 9.7
ConnectionSSH (Public Key Authentication)
ProtocolMCP (Model Context Protocol) を介したツール実行

導入・設定の手順

基本は、こちらのガイドに沿って導入しております。クライアント側の設定(Gemini CLI)で苦労したため、メモを残しておきます。なお、検証となるためrootユーザでテストしております。

SSHの準備

パスワード入力を省くため、公開鍵認証を設定します。
PowerShellから鍵を生成し、rootユーザでノーパスでログインできるようにしておきます。

Gemini MCPの設定

Gemini CLIのmcp設定はこちらの記事でまとめております。RHEL MCP向けのsettings.jsonは、マニュアルを参考にリモート接続用の設定を自分の環境に合わせて追加します(今回は直接SSHで対象サーバにログインするように設定しております)。

MCPへの命令(プロンプト)

「x.x.x.xにSSH接続し、OSの詳細情報、ディスク情報、メモリ情報を教えて」と伝えるだけです。そうすると、「こういったコマンド実行するけど、いいよね?」、と質問がくるので、エンターを押します。

│ Action Required                                                                                                                                                                           │
│                                                                                                                                                                                           │
│ ?  Shell ssh x.x.x.x "cat /etc/os-release; echo '--- Kernel ---'; uname -a; echo ''; echo '--- Disk Usage ---'; df -h; echo ''; echo '--- Memory Usage ---'; free -m" [curre… │
│                                                                                                                                                                                           │
│ ssh x.x.x.x "cat /etc/os-release; echo '--- Kernel ---'; uname -a; echo ''; echo '--- Disk Usage ---'; df -h; echo ''; echo '--- Memory Usage ---'; free -m"                  │
│ Allow execution of: 'ssh'?                                                                                                                                                                │
│                                                                                                                                                                                           │
│ ● 1. Allow once                                                                                                                                                                           │
│   2. Allow for this session                                                                                                                                                               │
│   3. No, suggest changes (esc)

その結果、OS情報や、メモリ情報が、以下のように結果が表示されます。

プロンプトもいい加減ですので、再度実行すると微妙に体裁が変わって表示されましたが、十分な結果です。

│ Action Required                                                                                                                                                                           │
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓  Shell ssh x.x.x.x "cat /etc/os-release; echo '--- Kernel ---'; uname -a; echo ''; echo '--- Disk Usage ---'; df -h; echo ''; echo '--- Memory Usage ---'; free -m" [c… │
│                                                                                                                                                                                       │
│ ... first 27 lines hidden (Ctrl+O to show) ...                                                                                                                                        │
│ /dev/mapper/rhel-root    70G   11G   60G   16% /                                                                                                                                      │
│ /dev/sda2               960M  443M  518M   47% /boot                                                                                                                                  │
│ /dev/mapper/rhel-home   225G  1.7G  223G    1% /home                                                                                                                                  │
│ /dev/sda1               599M  7.4M  592M    2% /boot/efi                                                                                                                              │
│ tmpfs                   366M  104K  366M    1% /run/user/0                                                                                                                            │
│                                                                                                                                                                                       │
│ --- Memory Usage ---                                                                                                                                                                  │
│                total        used        free      shared  buff/cache   available                                                                                                      │
│ Mem:           11535        2158        1764          40        7970        9377                                                                                                      │
│ Swap:           4039           0        4039                                                                                                                                          │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ x.x.x.xのOS、ディスク、メモリの詳細は以下の通りです。

  1. OS詳細
   * ディストリビューション: Red Hat Enterprise Linux 9.7 (Plow)
   * カーネル: 5.14.0-570.12.1.el9_6.x86_64

  2. ディスク情報 (df -h)
  主要なパーティションの使用状況です。
   * ルート (/): 70GB中 11GB使用 (空き 60GB / 16%)
   * ホーム (/home): 225GB中 1.7GB使用 (空き 223GB / 1%)
   * ブート (/boot): 960MB中 443MB使用 (空き 518MB / 47%)

  3. メモリ情報 (free -m)
   * 物理メモリ (Mem): 合計 11,535MB (約11GB)
       * 使用中: 2,158MB
       * 空き: 1,764MB
       * 利用可能 (available): 9,377MB
   * スワップ (Swap): 合計 4,039MB / 未使用 (0MB)

  OSは最新のRHEL 9.7が動作しており、リソース(ディスク、メモリ共に)には十分な余裕がある状態です。

ログ解析を依頼してみる

それでは、実際の運用イメージに沿って、本格的に使ってみます。下記内容のプロンプトで問い合わせてみました。

あなたは熟練のLinuxシステム管理者です。以下の手順に従って、リモートサーバー(x.x.x.x)のログ診断を実施し、運用上のリスクを報告してください。

1. データ収集:

今日の日付($(date '+%b %d'))の /var/log/messages から、Error, Critical, Failed, Warning, Fatal およびシステム異常(OOM-Killer, Segment fault, Disk I/O error等)を示唆するキーワードを含むログを抽出してください。

2. 深刻度判定:

抽出したログを分析し、「即時対応が必要」「経過観察が必要」「設定不備」の3段階で重要度を分類してください。

3. 出力形式:
各事象について、以下のフォーマットで出力してください。

■ [重要度] 事象のタイトル
【Raw Log (生ログ)】

(ここに該当する生ログの内容を出力)
【日本語解説と分析】

原因: なぜこのログが発生したのか、技術的な背景を説明してください。

影響: 運用上、どのようなリスク(サービス停止、セキュリティ、リソース枯渇等)があるか解説してください。

推奨対応: 解決するための具体的なコマンドや設定変更の手順を提示してください。

実行すると、messagesから指示した文字列等をgrepで抽出しているようです。

上記のようなやりとりで、こういったのはどうしますか? など質問もされるので、適宜回答しながら進めた結果、推奨対応まで含め数十秒で表示してくれました。

いかがでしょうか?
簡易的に動作確認した限り、十分に活用できるよう内容です。

まとめ

これまでは、重い腰を上げてターミナルを開き、コマンドを叩いて、英語のログと格闘するのが当たり前でしたが、これからは 「画面越しの相棒と対話しながら、スマートに問題を紐解いていく」。そんな、少しだけ余裕のある風景が日常になりそうですね。

タイトルとURLをコピーしました