API Logging and Gateway Monitoring
API ロギング
"stdout-log" ポリシーが適用され、APIM コンソールの各 API にデプロイされると、API ログは ZCP ロギングリポジトリに保存されます。
API ログの表示方法
- Cloud ZCP コンソールにログイン > [システム管理者] 画面に移動 > [ロギング] メニューをクリック
- Kibana で、右上隅のユーザーアイコンをクリックし、ドロップダウン > テナントの切り替え > カスタムから選択 > apim_tenant
- [Discover] メニュー: API ログデータを検索 (xxxx.apim* インデックスを選択) し、+ フィルターを追加:
- kubernetes.container_name: proxy
- api_id: exists
- クラスターを区別するためのフィルター: kubernetes.namespace_labels.cluster: xxxxxx-prd (オプション)
- [Discover] メニュー: API ログの詳細を確認
{
"_index": "xxxx.apim.xxxxx-prd.apim-xxxx.xx.xx",
"_id": "xxxxxxxxxxxxxx",
"_score": 1,
"_source": {
"@timestamp": "dd mm yyyy hh:mm:ss.sssZ",
"log": "{\"space_name\":\"xxxxxxx\",\"request_uri\":\"/path/to/api\",\"request_method\":\"POST\",\"duration\":xx,\"api_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"response_status\":200,\"api_name\":\"xxxxxx\",\"response_size\":xxx,\"request_size\":xxx,\"start_at\":xxxxxxxxxxxxxxx,\"duration_kong\":0,\"duration_proxy\":xx,\"space_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"}",
"logtag": "F",
"stream": "stdout",
"time": "dd mm yyyy hh:mm:ss.sss+hh:mm",
"topic": "kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log",
"space_name": "xxxxxxx",
"request_uri": "/path/to/api",
"request_method": "POST",
"duration": xx,
"api_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"response_status": 200,
"api_name": "xxxxxx",
"response_size": xxx,
"request_size": xxx,
"start_at": xxxxxxxxxxxxxxx,
"duration_kong": 0,
"duration_proxy": xx,
"space_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"kubernetes": {
"container_name": "xxxx",
"namespace_name": "xxxx",
"pod_name": "xxxx-xxxx-xxxx-xxxx",
"container_image": "xxxxxx",
"container_image_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"pod_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"pod_ip": "xxx.xxx.xxx.xxx",
"host": "xxxxxx",
"labels": {
"app": "xxxxxx",
"app_kubernetes_io/component": "xxxx",
"app_kubernetes_io/instance": "xxxxxx",
"app_kubernetes_io/managed-by": "Helm",
"app_kubernetes_io/name": "xxxx",
"app_kubernetes_io/version": "x.x",
"helm_sh/chart": "xxxx-x.x.x",
"pod-template-hash": "xxxxxxxx",
"security_istio_io/tlsMode": "istio",
"service_istio_io/canonical-name": "xxxx",
"service_istio_io/canonical-revision": "x.x",
"version": "x.x"
},
"master_url": "https://xxx.xxx.xxx.xxx:xxx/api",
"namespace_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"namespace_labels": {
"cloudzcp_io/deploygroup": "xxxxxx",
"cloudzcp_io/deploygroup-cluster": "xxxxxx-prd",
"cloudzcp_io/managed-by": "xxxx",
"cloudzcp_io/project": "xxxx",
"cloudzcp_io/realm": "xxxxxx",
"cloudzdb_io/zdb-system": "true",
"cluster": "xxxxxx-prd",
"istio-injection": "enabled",
"kubernetes_io/metadata_name": "xxxx",
"project": "xxxx",
"realm": "xxxxxx"
}
},
"docker": {
"container_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"tag": "projectPlain.project.kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log"
},
"fields": {
"@timestamp": [
"dd mm yyyy hh:mm:ss.sssZ"
],
"time": [
"dd mm yyyy hh:mm:ss.sssZ"
]
}
}
- [ダッシュボード] メニュー: 環境 (DEV, STG, PRD) に分類された APIM ダッシュボードを確認。
ダッシュボードの説明
- 総 API コール、成功したコールの総数、失敗したコールの総数、および成功/失敗ステータス:
失敗の数には、401 や 499 などの非致命的なエラーが含まれる場合があり、これは実際のアプリケーションからの致命的なエラーではない可能性があります。したがって、ステータスコード (成功/失敗ステータス) も確認することが重要です。
- トップ 5 API コール - 棒グラフ、テーブル:
パフォーマンステスト中に主に呼び出される API のステータスを確認できます。
- トップ 5 API レスポンス遅延:
- 呼び出されたときに遅延が発生する API を表示します。
- ゲートウェイレスポンス遅延: ゲートウェイで発生する遅延。
- バックエンドレスポンス遅延: バックエンドアプリケーションからのレスポンスの遅延。
- API レスポンス遅延: ゲートウェイとバックエンドのレスポンス遅延を組み合わせた合計遅延。
- すべてのレスポンス遅延値はミリ秒 (ms) で測定されるため、100ms の遅延はわずか 0.1 秒であり、特に遅いわけではありません。一般的に、1000ms (1 秒) 以上のレスポンスタイムは遅いと見なされます。
- 失敗ログの確認:
ユーザーは、ステータスコードが 200 でない API コールのログを確認できます。
- Kong ゲートウェイエラーログ:
Kong ゲートウェイで発生するエラーログを確認できます。エラーフィルターとして redis を使用します。
[可視化] メニュー: APIM カスタムチャートを管理できます。
API ゲートウェイモニタリング
- Cloud ZCP コンソールにログイン > [システム管理者] 画面に移動 > [モニタリング] メニューをクリック > [高度なモニタリング] ボタンをクリック
- Grafana > 左上隅のユーザー ID > admin@localhost を選択
- ダッシュボード > ブラウズ > APIM ダッシュボード
API ゲートウェイリソースメトリック
- ホーム > ダッシュボード > APIM ダッシュボード > APIM ゲートウェイ
- クラスター、Kong 名、Kong サービス、Kong ルート
API ゲートウェイリソースメトリック v2
ゲートウェイの詳細な指標を持つバージョン。
- ホーム > ダッシュボード > APIM ダッシュボード > APIM > ゲートウェイ V2
- クラスター、Kong 名、Kong サービス、Kong ルート、デプロイメント、ポッド
APIM ロギング/モニタリングデータ累積方程式サンプルガイド
APIM ロギングデータの量
APIM API ログ:
- 周期: いつでも。
- 単一データ量: 2KB + HTTP ボディサイズ。
- 月間データ収集スケール:
- ボディ付きログ: True に設定されている場合
- 仮定: 平均ボディサイズ Assuming 10KB で 1 分あたり 3000 コール (1 秒あたり 50 コール)
- (2 KB + 10 KB) * 3000 コール * 60 分 * 24 時間 * 30 日 = 1555 GB
- ボディ付きログ: False に設定されている場合
- 仮定: 平均ボディサイズ 0 KB で 1 分あたり 3000 コール (1 秒あたり 50 コール)
- (2 KB + 0 KB) * 3000 コール * 60 分 * 24 時間 * 30 日 = 259 GB
- ボディ付きログ: True に設定されている場合
APIM モニタリングデータの量
Kong GW メトリック (レイテンシ、接続など)
- 周期: 15 秒 (デフォルト)
- 単一データ量: 20KB
- 月間データ収集スケール: 20KB * 4 (1 分あたり 4 回) * 60 分 * 24 時間 * 30 日 = 3.5 GB