API分析比較:Tyk vs Kong vs Moesif でAPI使用状況を可視化・監視する
オープンソースラボ編集部 ・ 2026年6月14日
API分析比較:Tyk vs Kong vs Moesif でAPI使用状況を可視化・監視する
マイクロサービス・パブリックAPI・内部APIを本番運用する際、どのエンドポイントが遅いか・どのクライアントがエラーを出しているか・APIコストを誰が消費しているかをリアルタイムで把握するAPI分析・ゲートウェイツールが必要です。Tyk(OSS APIゲートウェイ・分析内蔵)・Kong(OSS APIゲートウェイ・Plugin型)・Moesif(専門API分析SaaS)の3つが主要ツールです。
API分析ツールを使う理由
- SLA管理: レイテンシ・エラー率をリアルタイム監視してSLOを達成
- コスト配賦: クライアントID・プランごとのAPIコール数・帯域を計測して課金に活用
- セキュリティ: 異常なリクエストパターン(レートリミット超過・スキャン攻撃)を検知
- デバッグ: 特定リクエストの全ヘッダー・ボディ・レスポンスをトレース
主要ツールの概要
Tyk
2014年公開、Go製のOSSです。GitHubスター9k+。セルフホストAPIゲートウェイ・デベロッパーポータル・ダッシュボード・Pumpが一体となったAPI管理プラットフォームです。PumpコンポーネントがリクエストデータをElasticsearch・MongoDB・InfluxDB等に送ってリアルタイム分析を提供します。
# docker-compose.yml: Tyk Stack(Gateway + Dashboard + Pump + Redis + MongoDB)
version: "3.8"
services:
tyk-gateway:
image: docker.tyk.io/tyk-gateway/tyk-gateway:v5.3
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./tyk/tyk.conf:/opt/tyk-gateway/tyk.conf
- ./tyk/apps:/opt/tyk-gateway/apps
- ./tyk/middleware:/opt/tyk-gateway/middleware
depends_on: [redis]
environment:
TYK_GW_STORAGE_HOST: redis
tyk-pump:
image: docker.tyk.io/tyk-pump/tyk-pump:v1.9
restart: unless-stopped
volumes:
- ./tyk/pump.conf:/opt/tyk-pump/pump.conf
depends_on: [redis, mongodb]
tyk-dashboard:
image: docker.tyk.io/tyk-dashboard/tyk-dashboard:v5.3
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./tyk/tyk_analytics.conf:/opt/tyk-dashboard/tyk_analytics.conf
depends_on: [mongodb, redis]
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
mongodb:
image: mongo:7
volumes:
- mongo_data:/data/db
volumes:
redis_data:
mongo_data:
# Tyk Dashboard API: 分析データをPythonで取得
import requests
import json
from datetime import datetime, timedelta
TYK_DASHBOARD_URL = 'http://localhost:3000'
AUTH_CODE = 'your-dashboard-auth-code'
headers = {'Authorization': AUTH_CODE}
def get_api_activity(api_id: str, days: int = 7) -> dict:
'''指定APIの使用量サマリーを取得'''
params = {
'p': -1,
'date': (datetime.now() - timedelta(days=days)).strftime('%Y-%m-%d'),
}
resp = requests.get(
f'{TYK_DASHBOARD_URL}/api/activity/apis/{api_id}',
headers=headers,
params=params,
)
return resp.json()
def get_endpoint_usage(api_id: str, endpoint: str) -> dict:
'''特定エンドポイントのメトリクス取得'''
resp = requests.get(
f'{TYK_DASHBOARD_URL}/api/activity/apis/{api_id}/endpoint/{endpoint}',
headers=headers,
)
return resp.json()
def get_error_breakdown() -> dict:
'''エラーコード別の統計取得'''
resp = requests.get(
f'{TYK_DASHBOARD_URL}/api/activity/errors',
headers=headers,
)
return resp.json()
# 高エラー率のAPIを検出してSlackに通知
def monitor_api_health():
import requests as slack_req
health_data = get_error_breakdown()
for api in health_data.get('data', []):
error_rate = api['error'] / max(api['total'], 1)
if error_rate > 0.05: # エラー率5%超
slack_req.post(
'https://hooks.slack.com/services/YOUR/WEBHOOK/URL',
json={'text': f'⚠️ API {api["api_name"]} エラー率: {error_rate:.1%}'}
)
Kong
2015年公開、Lua/Go製のOSSです。GitHubスター39k+。最もPlugin生態系が充実したAPIゲートウェイで、File Log・HTTP Log・StatsD・Prometheusなどのプラグインでリクエストデータを各種バックエンドに転送できます。
# Kong + Konga(UI)+ Prometheus + Grafana
version: "3.8"
services:
kong:
image: kong:3.7
restart: unless-stopped
environment:
KONG_DATABASE: 'off' # DBレスモード
KONG_DECLARATIVE_CONFIG: /etc/kong/kong.yml
KONG_ADMIN_LISTEN: '0.0.0.0:8001'
KONG_PROXY_LISTEN: '0.0.0.0:8000'
KONG_PLUGINS: bundled,prometheus
ports:
- "8000:8000"
- "8001:8001"
volumes:
- ./kong/kong.yml:/etc/kong/kong.yml
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: admin
# kong.yml: 宣言的設定(DBレスモード)
_format_version: "3.0"
services:
- name: user-api
url: http://user-service:8080
plugins:
- name: prometheus # Prometheusメトリクス
config:
per_consumer: true
status_code_metrics: true
latency_metrics: true
bandwidth_metrics: true
- name: rate-limiting
config:
minute: 1000
policy: local
- name: http-log
config:
http_endpoint: http://log-collector:8888/logs
routes:
- name: users-route
paths: [/api/users]
methods: [GET, POST, PUT, DELETE]
機能比較表
| 比較項目 | Tyk | Kong | Moesif |
|---|---|---|---|
| セルフホスト | ✅ | ✅ | △(有料) |
| 分析ダッシュボード | ✅ | △(Grafana連携) | ✅ 最充実 |
| Plugin数 | 中 | ✅ 最多 | N/A |
| ユーザー行動分析 | △ | ❌ | ✅ |
| 無料枠 | OSS無制限 | OSS無制限 | 35万コール/月 |
API分析はDevOpsカテゴリ/categories/devopsのPrometheus・Grafanaと組み合わせてKongのメトリクスをリアルタイムダッシュボードで監視します。LLM Toolsカテゴリ/categories/llm-toolsのClaude API・OpenAI APIを内部ゲートウェイに通すことでLLM API費用の部門別集計・コスト配賦を実現します。
FAQ
Q. Kong + PrometheusのGrafanaダッシュボードを設定するには?
A. KongのPrometheusプラグインを有効化してGrafana公式ダッシュボード(ID: 7424)をインポートします。手順: ①Kongのkong.ymlまたはAdmin APIでPrometheusプラグインを有効化②prometheus.ymlでKong scrape設定: - job_name: kong; static_configs: [{targets: ['kong:8001']}]③Grafana→Dashboards→Import→ID「7424」を入力してPrometheusデータソースを選択。主要パネル: リクエストレート(req/s)・P99レイテンシ・HTTP 5xx エラー率・アクティブコネクション数。アラート: Grafana Alertingで「P99 > 500ms」「エラー率 > 1%」のルールを設定してPagerDuty・Slackに通知します。
Q. APIゲートウェイでJWT認証を設定するには?
A. KongのJWTプラグインまたはTykのJWT認証ポリシーで設定します。Kong JWT設定: ①kong.ymlでJWTプラグインを追加: plugins: - name: jwt; config: {secret_is_base64: false, claims_to_verify: [exp]}②コンシューマーを作成→JWTクレデンシャル(ISS・秘密鍵)を発行③クライアントはAuthorizationヘッダーにBearer <JWT>を付けてリクエスト。Tyk JWT設定: ①APIのAuthentication MethodをJWT(RSA or HMAC)に設定②JWK URL(JWKSエンドポイント)を設定してAuth0・Keycloakと統合③Policy IDをJWTのカスタムクレームで指定してレートリミットポリシーを動的に割り当て。
Q. API分析でどんなメトリクスを監視すべきですか?
A. RED Method(Rate・Errors・Duration)とUSE Method(Utilization・Saturation・Errors)が基本です。必須メトリクス: ①リクエストレート(RPS): 正常時と異常時のベースラインを把握②エラー率(4xx/5xx): 1%超でアラート・5%超でインシデント対応③P99レイテンシ: 99パーセンタイルの応答時間(SLOで200ms以下等を設定)④可用性: アップタイムの月次集計(99.9% = 月8.7時間ダウン許容)。高度なメトリクス: ⑤コンシューマー別のAPI使用量(課金・プラン管理)⑥エンドポイント別エラー率(問題のあるAPIを特定)⑦地域別レイテンシ(CDN最適化に活用)。
Q. Tyk PumpをElasticsearchに接続するには?
A. pump.confでElasticsearchバックエンドを設定します。設定例: {"pumps": {"elasticsearch": {"type": "elasticsearch", "meta": {"index_name": "tyk-analytics", "elasticsearch_url": "http://elasticsearch:9200", "enable_sniffing": false}}}}}。インデックスにはtimestamp・api_id・api_name・path・status_code・request_time・response_size等のフィールドが自動生成されます。Kibanaダッシュボード: ①Kibana→Discover→tyk-analytics-*インデックスパターンを作成②Lens/VisualizationでAPIレイテンシのヒストグラム・エラー率の折れ線グラフを作成③KibanaアラートでElasticsearchクエリをトリガーにSlack通知を設定。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| セルフホスト統合管理・デベロッパーポータル | Tyk |
| Plugin豊富・Prometheus連携・K8s対応 | Kong |
| ユーザー行動分析・LLM API費用追跡 | Moesif |