Codex CLI用 自作プロキシ 運用編 〜監視とメトリクス収集(Prometheus/Grafana連携)〜
1. はじめに
これまでの記事では、Codex CLI用自作プロキシの実装や拡張(ストリーミング対応・リトライ戦略)について解説しました。本記事では運用フェーズに焦点を当て、監視とメトリクス収集 をテーマに、PrometheusとGrafanaを活用した具体的な方法を紹介します。
2. なぜ監視とメトリクスが必要か
- 安定稼働: リクエスト数・レスポンス時間・エラー率を把握
- ボトルネック検知: OllamaやOpenAI APIへの呼び出しが遅延していないか可視化
- キャパシティプランニング: 将来的なスケールアウトの根拠
- 障害対応: 異常値を早期に検知し、アラートを飛ばす
3. Prometheusでのメトリクス収集
ライブラリ導入
Node.js/TypeScriptであれば prom-client
を利用します。
pnpm add prom-client
server.ts にメトリクスエンドポイントを追加
import client from 'prom-client'
import { Hono } from 'hono'
const app = new Hono()
// メトリクス登録
const collectDefaultMetrics = client.collectDefaultMetrics
collectDefaultMetrics()
// カスタムメトリクス
export const httpRequestDuration = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelNames: ['method', 'route', 'status_code'],
})
// メトリクス公開エンドポイント
app.get('/metrics', (c) => c.text(client.register.metrics()))
これで Prometheus サーバーから http://proxy:8787/metrics
をスクレイプ可能になります。
4. リクエストごとの計測
middlewares.ts
にてリクエスト時間を測定し、Histogramに記録します。
import { httpRequestDuration } from './server'
export const metricsMiddleware = async (c: any, next: any) => {
const end = httpRequestDuration.startTimer()
await next()
end({
method: c.req.method,
route: c.req.path,
status_code: c.res.status
})
}
これにより、リクエストの応答時間がPrometheusに記録されます。
5. Prometheus設定例
Prometheusの prometheus.yml
にターゲットを追加します。
scrape_configs:
- job_name: 'codex-proxy'
static_configs:
- targets: ['localhost:8787']
6. Grafanaでの可視化
ダッシュボード項目例
-
リクエスト数の推移:
rate(http_request_duration_seconds_count[5m])
-
平均レスポンス時間:
rate(http_request_duration_seconds_sum[5m]) / rate(http_request_duration_seconds_count[5m])
-
エラー率:
sum(rate(http_request_duration_seconds_count{status_code!~"2.."}[5m]))
アラート設定例
- エラー率が5%以上でSlack通知
- レイテンシが3秒を超えたらPagerDutyに通知
7. 図解:監視の全体像
8. まとめ
運用段階で監視とメトリクス収集を組み込むことで、Codex CLI用自作プロキシの信頼性と安定性が大幅に向上します。
- Prometheusでメトリクスを収集
- Grafanaで可視化とアラートを設定
次回は、マルチテナント対応とアクセス制御 をテーマに、複数チームやプロジェクトで安全に利用する方法を解説します。
関連記事一覧(シリーズ全体)
本シリーズは OpenAI Codex CLI を「任意のプロバイダー」で利用するために
自作プロキシを実装・拡張・運用していく流れを段階的に解説したものです。
最初はOllamaでのgpt-oss利用から始まり、最終的にはエンタープライズ運用を意識した
マルチテナント対応やアクセス制御までカバーしています。
-
OpenAI Codex CLIで任意のプロバイダーを利用する方法 〜Ollamaでgpt-ossを使う〜
― Codex CLIに「Ollama」を接続し、OSSモデルを利用する最初のステップ。 -
Codex CLI用 自作プロキシの詳細実装編
― CLIとプロバイダー間をつなぐ「自作プロキシ」の構成・設計・コード例を徹底解説。 -
Codex CLI用 自作プロキシ拡張編 〜ストリーミング対応とリトライ戦略〜
― stream:true による逐次出力、エラーリカバリ戦略など実運用で必要となる拡張を追加。 -
Codex CLI用 自作プロキシ 運用編 〜監視とメトリクス収集(Prometheus/Grafana連携)〜
― 運用段階で不可欠なメトリクス収集や可視化を導入し、利用状況をリアルタイムで監視。 -
Codex CLI用 自作プロキシ 運用編 〜マルチテナント対応とアクセス制御〜
― 複数利用者やチームでの共有を見据え、テナント分離・アクセス権限管理の仕組みを導入。
Discussion