API監視の重要性
APIは現代のアプリケーションの生命線です。APIの障害・性能劣化はユーザー体験と売上に直接影響します。適切な監視・アラート体制を構築することで、問題を早期発見して被害を最小化できます。
監視すべき主要メトリクス
- 可用性(Uptime):APIが正常に応答している割合
- レスポンスタイム:p50・p95・p99のパーセンタイル値
- エラーレート:4xx・5xxエラーの割合
- スループット:単位時間あたりのリクエスト数(RPS)
- SSL証明書有効期限:期限切れによる障害を事前に防ぐ
Postmanでのモニタリング設定
// Postmanテストスクリプトの例
pm.test("ステータスコードが200", () => {
pm.response.to.have.status(200);
});
pm.test("レスポンスタイムが500ms以内", () => {
pm.expect(pm.response.responseTime).to.be.below(500);
});
pm.test("レスポンスボディにデータが含まれる", () => {
const json = pm.response.json();
pm.expect(json.data).to.be.an('array');
pm.expect(json.data.length).to.be.greaterThan(0);
});
pm.test("必須フィールドが存在する", () => {
const json = pm.response.json();
pm.expect(json).to.have.property('id');
pm.expect(json).to.have.property('name');
pm.expect(json).to.have.property('updatedAt');
});
Datadog APMの設定(Node.js)
// Datadogトレーシングの設定
const tracer = require('dd-trace').init({
service: 'my-api',
env: process.env.NODE_ENV,
version: process.env.APP_VERSION,
sampleRate: 1.0
});
// カスタムメトリクスの送信
const dogstatsd = require('hot-shots');
const statsd = new dogstatsd.StatsD();
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
statsd.histogram('api.response_time', duration, [
`endpoint:${req.path}`,
`method:${req.method}`,
`status:${res.statusCode}`
]);
statsd.increment('api.request_count', 1, [
`endpoint:${req.path}`,
`status_class:${Math.floor(res.statusCode / 100)}xx`
]);
});
next();
});
PagerDutyアラートの設定
// 障害時にPagerDutyにアラートを送信
const createPagerDutyAlert = async (incident) => {
await fetch('https://events.pagerduty.com/v2/enqueue', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Token token=${process.env.PAGERDUTY_KEY}`
},
body: JSON.stringify({
routing_key: process.env.PAGERDUTY_INTEGRATION_KEY,
event_action: 'trigger',
payload: {
summary: `API障害検知: ${incident.endpoint} - ${incident.error}`,
severity: 'critical',
source: 'api-monitor',
custom_details: {
error_rate: incident.errorRate,
affected_requests: incident.count
}
}
})
});
};
SLO管理のベストプラクティス
- 可用性SLO:99.9%(月あたり約43分のダウンタイム許容)
- レイテンシSLO:p95が300ms以内
- エラーレートSLO:0.1%以内
- エラーバジェット:SLOを超えた場合に機能開発より信頼性向上を優先
まとめ
API監視はプロダクションの健全性を保つための必須投資です。Postmanで機能テストとモニタリングを自動化し、DatadogでAPMメトリクスを可視化し、PagerDutyで障害時の迅速な通知を実現するスタックが多くの企業で採用されています。SLOを明確に設定してエラーバジェットを管理することで、信頼性と機能開発のバランスをとった運用が可能になります。