CodexからVictoriaMetricsのメトリクスを取得してみた

CodexからVictoriaMetricsのメトリクスを取得してみた
はじめに
こんにちは、新井です。
今回は mcp-victoriametrics を使って、CodexからVictoriaMetricsに蓄積されたメトリクスを取得し、サーバーの状態を分析してレポートを作成するところまで試してみたいと思います。
普段、サーバーやアプリケーションの状態を確認する際には、Grafanaのダッシュボードを確認したり、PromQLやMetricsQLを使って必要なメトリクスを取得したりすることが多いと思います。
ただ、実際の運用では単純にメトリクスを確認するだけではなく、
- 直近1週間でCPU使用率が高かった時間帯を確認する
- メモリ使用量に普段と異なる傾向がないか確認する
- 複数のメトリクスからサーバー全体の状態を確認する
- 取得した情報をもとに週次レポートを作成する
といった作業を行うこともあると思います。
そこで今回は、VictoriaMetricsとcodexをMCP経由で接続し、自然言語で指示することでVictoriaMetricsのメトリクスを取得・分析できる環境を作ってみたいと思います。
構成

各種サーバ
- Application Server
- NGINX
- NGINX Exporter
- Node Exporter
- Monitor Server
- Node Exporter
- VictoriaMetrics
- VictoriaMetrics MCP Server(mcp-victoriametrics)
- Grafana
構築手順
terraformファイルなどは下記リポジトリにまとめています。
https://github.com/grasys-arai/blog-mcp-victoriametrics
terraform
下記ファイルを作成し、必要な設定を追加する
vim terraform/terraform.tfvars
project_id = PROJECT_ID
name_prefix = PREFIX_NAME
allowed_ssh_ranges = [
ALLOW_IP
]
# Optional overrides:
# region = "asia-northeast1"
# zone = "asia-northeast1-a"設定できたら、applyする
terraform plan
terraform applyansible
terraform反映後に作成された各種VMの外部/内部IPを設定する
vim ansible/inventories/production/hosts.yml
---
all:
vars:
ansible_user: YOUR_SSH_USERNAME
ansible_ssh_private_key_file: /PATH/TO/YOUR_SSH_PRIVATE_KEY
children:
app:
hosts:
app01:
ansible_host: YOUR_APP_SERVER_PUBLIC_IP
monitor:
hosts:
monitor01:
ansible_host: YOUR_MONITOR_SERVER_PUBLIC_IP
internal_ip: YOUR_MONITOR_SERVER_INTERNAL_IP各vmへssh接続できるように、known_hostsへ追加しておく
ssh-keyscan -H YOUR_APP_SERVER_PUBLIC_IP >> ~/.ssh/known_hosts
ssh-keyscan -H YOUR_MONITOR_SERVER_PUBLIC_IP >> ~/.ssh/known_hostsssh agentへ登録する
eval "$(ssh-agent -s)" && ssh-add --apple-use-keychain ~/.ssh/google_compute_engineansibleでssh接続できるか確認する
ansible all -m ansible.builtin.ping問題なければansibleを流す
ansible-playbook site.yml確認方法
- 各サーバの設定が完了できているか確認する
ansible-playbook verify.yml- grafanaへアクセスできるか確認する
http://MONITOR_IP:3000 (user: admin, password: admin)
- mcp serverへアクセスし、200が返るか確認する
curl -D - http://MONITOR_IP:8081/mcp
HTTP/1.1 200 OK
Cache-Control: no-cache
Connection: keep-alive
Content-Type: text/event-stream
Date: Mon, 28 Sep 2026 02:41:56 GMT
Transfer-Encoding: chunkedCodexにMCP Serverを連携する
- mcp serverを登録する
codex mcp add mcp-victoriametrics --url http://MONITOR_IP:8081/mcp- 登録したmcp serverを確認する
codex mcp list- codexから呼び出してみる
mcp-victoriametricsを使用し直近1時間のサーバー状態を確認して、CPU・メモリ・ネットワークなどに問題がなかったか分析し、レポートを作成してください実際の表示例

まとめ
codexからmcp-victoriametrics経由でvictoriametrics上のメトリクスを取得し、レポート作成する方法を試しました。
便利ではあるもののトークン数の削減や根拠の明示、複数サービスに跨った場合など、実際に運用する場合は考慮することがまだありそうです。
今回は試していませんが、grafana alertとgemini enterprise等を使用して、アラート発報を起点にレポートを作成させ、slackへ通知するなどより実運用に向けた構成も試してみたいと思いました。

