Google Cloud Platform VPCフローログ

VPCフローログでは仮想プライベートクラウド(VPC)内のネットワークインターフェースからのIPトラフィックまでの情報を取得できます。
このドキュメントでは、GCPからVPCフローログを収集し、Site24x7アプリケーションログに転送する方法を紹介します。

監視に必要な条件

ログインユーザーにプロジェクトのオーナーレベル権限が必要です。
必要な権限は具体的に次のとおりです。

  • Pub/Subトピックの作成と権限の設定
  • ログルーターの作成と更新
  • データフロージョブの作成

既存サブネットのVPCフローログの有効化

既存サブネットのVPCフローログを有効化する方法は次のとおりです。
詳細はGoogle公式ドキュメントをご確認ください。

  1. GCPコンソールでVPCネットワークページに移動します。
  2. 更新を行うサブネットを選択し、[FLOW LOGS]をクリックします。
  3. 収集間隔とサンプルレートを調整し、ログとコストの管理を行います。
    例として、サンプルレートに「100%」、収集間隔に「5秒」を指定した場合、すべてのエントリが記録され、最も高いコストとなります。
  4. [保存]をクリックします。

GCP VPCフローログのベストプラクティス

収集間隔

ネットワーク接続問題のトラブルシュートやセキュリティ的脅威を検出するために、弊社では5秒の収集間隔を推奨しています。
ネットワークパフォーマンスの分析やネットワークコストの最適化にのみ使用する場合は、1、5、10分への設定を推奨します。

サンプリングレート

100%(全てのログ)に設定してください。
これによりSite24x7がすべてのネットワークトラフィックを収集できるようになります。

GCPからのログ転送

GCPからのログを転送するための設定手順は、こちらのページをご確認ください。
Log Routing Sink作成時に、次のコマンドを実行してください。

gcloud logging sinks create SINK_NAME pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_NAME --log-filter='resource.type="gce_subnetwork"'

サンプルログ


{
    "insertId": "2s85kofd71z0y",
    "jsonPayload": {
        "reporter": "SRC",
        "src_gke_details": {
            "pod": {
                "pod_name": "packageserver-df86dcdd-qlpnz",
                "pod_namespace": "olm"
            },
            "cluster": {
                "cluster_name": "redis-test",
                "cluster_location": "us-central1-a"
            },
            "service": [
                {
                    "service_name": "packageserver-service",
                    "service_namespace": "olm"
                }
            ]
        },
        "src_instance": {
            "zone": "us-central1-a",
            "region": "us-central1",
            "project_id": "zylker-a76a7ass",
            "vm_name": "gke-redis-test-default-pool-2f152eb2-53hc"
        },
        "dest_vpc": {
            "project_id": "zylker-a76a7ass",
            "vpc_name": "default",
            "subnetwork_name": "default"
        },
        "src_vpc": {
            "vpc_name": "default",
            "project_id": "zylker-a76a7ass",
            "subnetwork_name": "default"
        },
        "dest_instance": {
            "region": "us-central1",
            "vm_name": "gke-redis-test-default-pool-2f152eb2-x642",
            "project_id": "zylker-a76a7ass",
            "zone": "us-central1-a"
        },
        "dest_gke_details": {
            "pod": {
                "pod_namespace": "kube-system",
                "pod_name": "konnectivity-agent-777f7f84d6-57fgj"
            },
            "cluster": {
                "cluster_name": "redis-test",
                "cluster_location": "us-central1-a"
            }
        },
        "packets_sent": "8",
        "end_time": "2023-10-11T05:25:47.962287597Z",
        "bytes_sent": "1448",
        "start_time": "2023-10-11T05:25:47.958517575Z",
        "connection": {
            "dest_ip": "10.10.0.10",
            "protocol": 6,
            "dest_port": 11111,
            "src_ip": "10.10.0.10",
            "src_port": 1111
        }
    },
    "resource": {
        "type": "gce_subnetwork",
        "labels": {
            "subnetwork_name": "default",
            "project_id": "zylker-a76a7ass",
            "location": "us-central1-a",
            "subnetwork_id": "12345678901"
        }
    },
    "timestamp": "2023-10-11T05:25:52.288729877Z",
    "logName": "projects/zylker-a76a7ass
logs/compute.googleapis.com%2Fvpc_flows",
 "
receiveTimestamp": "2023-10-11T05:25:52.288729877Z"
}

VPCフローログダッシュボード

GCP VPCフローログダッシュボードで表示できるメトリックは次のとおりです。

  • 転送済みバイトの合計
  • 平均転送済みバイト
  • 送信済みパケットの合計
  • 平均送信済みパケット
  • 最大レイテンシー
  • 平均レイテンシー
  • トラフィックごとのトップ送信元VM
  • 送信元アドレスロケーション
  • 送信元IPからの送信済みバイトの合計
  • サブネットワークごとのトラフィック
  • 時間単位のプロトコルごとのVPCフロー
  • 送信パケット経過時間
  • 送信元および宛先IPアドレスごとのバイト転送
  • 宛先経過時間の平均レイテンシー
  • 宛先アドレスロケーション
  • VPCフローごとのトップ外部宛先ポート
  • VPCフローごとのトップ外部IP
  • トラフィックごとのトップ宛先IP

関連ガイド