AWS DevOps AgentでZabbix MCPサーバーを連携する

AWS

2026.8.18

Topics

はじめに

AWS Summit 2026でも紹介されていたDevOps AgentとZabbix MCPサーバーとの連携を試してみたいと思います。
今回は監視ツールとAIを組み合わせ、自然言語で聞くだけでアラートに関して教えてくれるように設定をしてみます。

また、DevOps Agentを用いた運用自動化はこちらのブログを参考にしていただければと思います!

関連記事
AWS DevOps Agent を用いて障害対応を更に自動化しよう!

前提条件

  • プライベートEC2にZabbix 6.0がDockerで稼働済み
  • 踏み台EC2(パブリックサブネット)経由でプライベートEC2にSSH接続可能
  • NATゲートウェイ経由でインターネット接続可能

全体構成

STEP 1: 必要パッケージのインストール

踏み台からEC2に接続し、後続の作業に必要なパッケージを導入します。

sudo dnf install -y git python3.11 pango
git --version
python3.11 --version

STEP 2: Zabbix MCP Serverのインストール

initMAX/zabbix-mcp-server はZabbix APIをMCPプロトコルで公開するOSSです。インストールスクリプトが用意されているため、簡単に導入できます。

cd ~
git clone https://github.com/initMAX/zabbix-mcp-server.git
cd zabbix-mcp-server
sudo ./deploy/install.sh

STEP 3: Zabbix APIトークンの取得

MCP ServerがZabbix APIを呼ぶために、APIトークンが必要です。3ステップで取得します。

① Adminでログインしてセッショントークンを取得します。

curl -s http://localhost/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
      "username": "Admin",
      "password": "zabbix"
    },
    "id": 1
  }'

返ってきた result の値をコピーします。

② APIトークンを作成します。auth には①で取得した result を指定します。

curl -s http://localhost/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "token.create",
    "params": {
      "name": "zabbix-mcp",
      "userid": "1"
    },
    "auth": "①で取得したresult",
    "id": 2
  }'

返ってきた tokenid をコピーします。

③ APIトークン文字列を生成します。同じく auth には①の result を指定します。

curl -s http://localhost/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "token.generate",
    "params": ["tokenid"],
    "auth": "①で取得したresult",
    "id": 3
  }'

返ってきた token の値をコピーして保存します。

STEP 4: MCP Bearer Tokenの生成

MCP ServerへのアクセスをBearerトークンで保護します。Pythonで安全なランダム文字列を生成します。

python3.11 -c "import secrets; print('zmcp_' + secrets.token_hex(32))"

生成されたトークンをコピーして保存します。

STEP 5: config.tomlの設定

MCP Serverの設定ファイルに、これまで取得した情報を書き込みます。

sudo vi /etc/zabbix-mcp/config.toml

以下の内容を設定します。

[server]
host = "0.0.0.0"
port = 8080
transport = "http"
public_url = "https://CLOUDFLARE_TUNNEL_URL"  ; STEP7で取得後に更新

log_level = "info"
log_file = "/var/log/zabbix-mcp/server.log"

auth_token = "zmcp_STEP4で生成したトークン"  ; Option 1のみ有効化

rate_limit = 300
compact_output = true

[zabbix.production]
url = "http://localhost"
api_token = "STEP3で取得したAPIトークン"
read_only = false
verify_ssl = false

STEP 6: MCP Serverを起動

設定後、サービスを起動してヘルスチェックで動作を確認します。

sudo systemctl start zabbix-mcp-server
sudo systemctl enable zabbix-mcp-server

curl -s http://localhost:8080/health \
  -H "Authorization: Bearer zmcp_XXXXX"

ヘルスチェックで {"status":"ok"} が返ればOKです。

STEP 7: Cloudflare Tunnelのセットアップ

DevOps AgentがMCP Serverに接続するには、インターネット経由でアクセス可能なHTTPSエンドポイントURLが必要です。今回のZabbix MCP ServerはプライベートサブネットのEC2上で動いているため、そのままではDevOps Agentから到達できません。

そこでCloudflare Tunnelを使います。EC2内部からCloudflareのネットワークへアウトバウンドのトンネルを張ることで、インターネット側に公開URLが発行され、DevOps AgentはそのURLを通じてMCP Serverにアクセスできるようになります。セキュリティグループのインバウンドルール変更やElastic IPも不要で、アカウント登録なしで即座に利用できる点が利点です。

EC2内部のMCP Serverをインターネットからアクセスできるよう、Cloudflare Tunnelでトンネルを開設します。

curl -Lo ~/cloudflared \
  https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x ~/cloudflared

nohup ~/cloudflared tunnel \
  --url http://localhost:8080 \
  > /tmp/cloudflared.log 2>&1 &

sleep 5
grep "trycloudflare.com" /tmp/cloudflared.log

ダウンロードしてバックグラウンドで起動し、ログから発行されたURL(https://xxxx-xxxx-xxxx-xxxx.trycloudflare.com)を確認します。

注意: trycloudflare.com のURLはEC2の再起動のたびに変わります。STEP 8でconfig.tomlに反映させる必要があります。

STEP 8: config.tomlのpublic_urlを更新

STEP 7で取得したURLをconfig.tomlに反映し、サービスを再起動します。

sudo sed -i \
  's|public_url = ".*"|public_url = "https://xxxx-xxxx-xxxx-xxxx.trycloudflare.com"|' \
  /etc/zabbix-mcp/config.toml

sudo grep "public_url" /etc/zabbix-mcp/config.toml

sudo systemctl restart zabbix-mcp-server

curl -s https://xxxx-xxxx-xxxx-xxxx.trycloudflare.com/health \
  -H "Authorization: Bearer zmcp_XXXXX"

STEP 7で取得したURLに更新し、再起動後に外部から接続テストします。{"status":"ok"} が返ればOKです。

STEP 9: AWS DevOps Agentを作成後、MCP Serverを登録

DevOps Agentの設定をします。名前と設定言語、各ロールについて設定してください。

AWS DevOps Agentの名前・言語・ロール設定画面

機能を追加から、新しいMCPサーバーの登録を行います。DevOps AgentがZabbix MCP Serverを「ツール」として認識するためです。

AWSコンソール -> DevOps Agent
->「Capability providers」->「MCP servers」
->「Add MCP server」

設定:
- 名前              : zabbix-mcp
- エンドポイントURL : https://xxxx.trycloudflare.com/mcp
- プライベート接続  : チェックなし
- 認証タイプ        : APIキー
- APIキー名         : zabbix-mcp-token
- ヘッダー名        : Authorization
- APIキー値         : Bearer zmcp_XXXXX

DevOps AgentへのMCPサーバー登録設定画面

STEP 10: 動作確認

右上の「ウェブアプリを起動」から起動してください。DevOps Agentのチャット画面で以下を試してみましょう。

「ホスト一覧を表示して」
「現在発生しているアラートを教えて」
「Zabbix serverのCPU使用率の履歴を見せて」

DevOps Agentでホスト一覧を取得している動作確認画面
DevOps AgentでZabbixのアラート情報を取得している動作確認画面

Zabbixのホスト情報やアラート履歴がチャットで返ってくれば連携成功です。

まとめ

今回はDevOps AgentでZabbix MCPを使用する方法を解説しました。様々なMCPの登場によってLLMと既存の運用ツールを接続するパターンは今後ますます増えると思います。今回の構成はその一例として参考になれば幸いです。

Ganon

筋肉で解決するタイプのエンジニア

X (Twitter) をフォローする

テックブログ新着情報の他
AWSやGoogle Cloudに関する
お役立ち情報を配信中!

Recommends

こちらもおすすめ

X (Twitter) をフォローする

テックブログ新着情報の他
AWSやGoogle Cloudに関する
お役立ち情報を配信中!

Special Topics

注目記事はこちら