ログと指標

ロギング

Cloud NAT ロギングを使用すると、NAT 接続とエラーをログに記録できます。Cloud NAT ロギングを有効にすると、次のシナリオごとに 1 つのログエントリを生成できます。

  • NAT を使用するネットワーク接続が作成された。
  • NAT に使用可能なポートがないことが原因でパケットが破棄された。

両方の種類のイベントをログに記録するか、一方の種類のイベントのみをログに記録するかを選択できます。

作成されたログは Cloud Logging に送信されます。

仕様

Cloud NAT ロギングには、次の仕様が適用されます。

  • Cloud NAT ロギングでは、TCP トラフィックと UDP トラフィックのみが処理されます。

  • Cloud NAT ロギングでは、廃棄された下り(外向き)の TCP パケットと UDP パケットのみがログに記録されます。廃棄された受信パケットはログに記録されません。たとえば、外向きのリクエストに対する内向きのレスポンスがなんらかの理由で廃棄された場合、エラーはログに記録されません。

各 VM インスタンスが単位時間あたりに生成できるのは、一定数のログエントリのみであり、この数は vCPU の数に比例します。VM は vCPU あたり 1 秒間に 50~100 件のログエントリを生成できます。

  • このレートのしきい値は、ログに記録できるイベント数に影響します。一部のイベントが除外されている場合でも、それらのイベントは発生したことによって、記録できるログエントリ数にカウントされます。ログをエラーのみに制限する、またはネットワーク アドレス変換接続のみに制限することによって、表示されるログエントリの数が増加するとは限りません。たとえば、成功した接続のみをログに記録するように選択した場合、過剰な接続試行の失敗と NAT エラーが発生している期間については、接続ログエントリの成功数が制限されることに変わりありません。

  • Cloud NAT ロギングでは、すべてのパケットがログに記録されるわけではありません。VM のレートしきい値に達していなくても、一部の条件によってログからイベントが省略される場合があります。Cloud NAT ロギングでのエントリの有無に基づいて判断する必要がありますが、エントリが存在しないことは、イベントが発生しなかったことを意味するものではありません。

ロギングを構成する

Cloud NAT ロギングを構成する手順は次のとおりです。

ロギングを有効にする

ロギングが有効になっている場合、収集されたすべてのログはデフォルトで Cloud Logging に送信されます。特定のログのみが送信されるように、フィルタリングできます。

NAT ゲートウェイを作成または編集する際にもこれらの値を指定できます。以下の手順では、既存の NAT ゲートウェイのロギングを有効にする方法を示します。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [詳細構成] をクリックします。

  5. [ロギング] セクションで、次のいずれかを選択します。

    • ロギングなし: ロギングを無効にする。
    • 変換とエラー: すべてのログを Logging に送信する。
    • 変換のみ: 接続が作成された場合にのみログを送信する。破棄されたパケットはログに記録されません。
    • エラーのみ: 使用可能なポートが存在しないためパケットが破棄された場合にログを送信する。新しい接続はログに記録されません。
  6. [保存] をクリックします。

gcloud

gcloud compute routers nats update コマンドを使用します。

次のコマンドにより、既存の NAT ゲートウェイのロギングが有効にされます。

各コマンドで、次の対象を置き換えます。

  • NAT_GATEWAY: NAT ゲートウェイの名前
  • ROUTER_NAME: NAT ゲートウェイをホストする Cloud Router の名前
  • REGION: Cloud Router のリージョン

ネットワーク アドレス変換イベントとエラーをログに記録するには、次のようにします。

gcloud compute routers nats update NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION \
    --enable-logging

ネットワーク アドレス変換イベントのみをログに記録するには、次のようにします。

gcloud compute routers nats update NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION \
    --enable-logging \
    --log-filter=TRANSLATIONS_ONLY

エラーのみをログに記録するには、次のようにします。

gcloud compute routers nats update NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION \
    --enable-logging \
    --log-filter=ERRORS_ONLY

ログフィルタをクリアする

フィルタが設定されている場合は、フィルタを解除できます。ログフィルタを解除すると、ロギングが有効になっていれば、ネットワーク アドレス変換イベントとエラーの両方がログに記録されます。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [詳細構成] をクリックします。

  5. [ロギング] セクションで、[変換とエラー] を選択します。

  6. [保存] をクリックします。

gcloud

gcloud compute routers nats update コマンドを使用します。次のコマンドの --log-filter=ALL フラグにより、すべてのログを受け入れるようにログフィルタが設定されます。

gcloud compute routers nats update NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION \
    --log-filter=ALL

次のように置き換えます。

  • NAT_GATEWAY: NAT ゲートウェイの名前
  • ROUTER_NAME: NAT ゲートウェイをホストする Cloud Router の名前
  • REGION: Cloud Router のリージョン

ロギングを無効にする

ロギングを無効にする方法は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [詳細構成] をクリックします。

  5. [ロギング] セクションで、[ロギングなし] を選択します。

  6. [保存] をクリックします。

gcloud

gcloud compute routers nats update コマンドを使用します。

gcloud compute routers nats update NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION \
    --no-enable-logging

次のように置き換えます。

  • NAT_GATEWAY: NAT ゲートウェイの名前
  • ROUTER_NAME: NAT ゲートウェイをホストする Cloud Router の名前
  • REGION: Cloud Router のリージョン

ロギングのステータスを確認する

ロギングのステータスを確認する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. NAT ゲートウェイをクリックします。

  3. [編集] をクリックします。

  4. [詳細構成] をクリックします。

  5. [ロギング] セクションで選択内容を確認します。

gcloud

gcloud compute routers nats describe NAT_GATEWAY \
    --router=ROUTER_NAME \
    --region=REGION

以下を置き換えます。

  • NAT_GATEWAY: NAT ゲートウェイの名前
  • ROUTER_NAME: NAT ゲートウェイをホストする Cloud Router の名前
  • REGION: Cloud Router のリージョン

ログを表示する

NAT ログを表示する方法は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

    • すべての NAT ログを表示するには、[ログ名] メニューで [Cloud NAT ゲートウェイ] を選択します。
    • 1 つのリージョンのログのみを表示するには、[ログ名] メニューで [Cloud NAT ゲートウェイ] を選択し、カーソルを右にスライドしてリージョンを選択します。
    • 1 つのゲートウェイのログのみを表示するには、[ログ名] メニューで [Cloud NAT ゲートウェイ] を選択し、カーソルを右にスライドしてリージョンを選択します。再度カーソルを右にスライドして 1 つのゲートウェイを選択します。

または、クエリエディタに次の式を入力します。

resource.type="nat_gateway"
logName="projects/{#project_id}/logs/compute.googleapis.com%2Fnat_flows"

gcloud

gcloud logging read 'resource.type=nat_gateway' \
    --limit=10 \
    --format=json

ここで

  • resource.type=nat_gateway: NAT ゲートウェイへの出力を制限する。
  • --limit=10: 出力を 10 件のエントリに制限する。異なる値を入力して、エントリの数を増減する、または完全に省略して連続したログを表示することもできます。
  • --format=json: JSON 形式で出力を表示する。

その他のオプションについては、ログエントリの読み取りをご覧ください。

リソースログのログベースの指標のエクスポートを構成できます。

ログの内容

Cloud NAT ログエントリには、NAT トラフィックのモニタリングとデバッグに有用な情報が含まれています。ログエントリには次のタイプの情報が含まれています。

  • 重大度、プロジェクト ID、プロジェクト番号、タイムスタンプなど、ほとんどの Google Cloud ログに一般的に示される情報。
  • Cloud NAT に関する特定の情報。一部のログフィールドに含まれるエントリは、それら自体が複数のフィールドです。これらのエントリとフィールドの説明を次の表に示します。

ログのフィールド

フィールド 意味
connection オブジェクト(NatIpConnection 送信元 VM の IP アドレスとポート、NAT の送信元 IP アドレスとポート、宛先 IP アドレスとポート、この接続の IP アドレス プロトコルを記述する 7 タプル。
allocation_status enum この接続が正常に割り当てられたか破棄されたかを示します。OK または DROPPED のいずれかです。
gateway_identifiers オブジェクト(NatGateway 接続に使用された NAT ゲートウェイの構成。
endpoint オブジェクト(InstanceDetails VM インスタンスの詳細。共有 VPC 構成では、project_id はサービス プロジェクトに対応します。
vpc オブジェクト(VpcDetails Virtual Private Cloud(VPC)ネットワークの詳細。共有 VPC 構成では、project_id はホスト プロジェクトの詳細に対応します。
destination オブジェクト(DestinationDetails 接続の宛先の詳細。

NatIpConnection フィールドの形式

フィールド タイプ 説明
src_ip 文字列 送信元 IP アドレス
src_port int32 送信元ポート
nat_ip 文字列 NAT IP アドレス
nat_port int32 NAT 割り当てポート
dest_ip 文字列 宛先 IP アドレス1
dest_port int32 宛先ポート
protocol int32 IANA プロトコル番号
1 NAT64 の場合、このフィールドには宛先の IPv4 埋め込み IPv6 アドレスが入力されます。

NatGateway フィールドの形式

フィールド タイプ 説明
gateway_name 文字列 NAT ゲートウェイの名前
router_name 文字列 NAT ゲートウェイに関連付けられた Cloud Router
region 文字列 Cloud Router のリージョン

InstanceDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 VM を含むプロジェクトの ID
vm_name 文字列 VM のインスタンス名
region 文字列 VM のリージョン
zone 文字列 VM のゾーン

VpcDetails フィールドの形式

フィールド タイプ 説明
project_id 文字列 ネットワークを含むプロジェクトの ID
vpc_name 文字列 VM が動作しているネットワーク
subnetwork_name 文字列 VM が動作しているサブネット

DestinationDetails フィールドの形式

フィールド タイプ 説明
geo_location オブジェクト(GeographicDetails 接続先が Google Cloud外部であった場合、このフィールドには使用可能な位置情報メタデータが入ります。
instance オブジェクト(InstanceDetails 接続の宛先が送信元と同じプロジェクト内のインスタンスである場合、このフィールドには VM インスタンスの詳細が入力されます。
vpc オブジェクト(VpcDetails 接続先が送信元と同じプロジェクト内にある場合、このフィールドには宛先の VPC ネットワークの詳細が入力されます。宛先がクロス プロジェクト VPC ネットワークの場合、このフィールドには空白が表示されます。

GeographicDetails フィールドの形式

フィールド タイプ 説明
continent 文字列 外部エンドポイントが存在する大陸
country 文字列 外部エンドポイントの国
region 文字列 外部エンドポイントのリージョン
city 文字列 外部エンドポイントの都市
asn 文字列 このエンドポイントが属する外部ネットワークの自律システム番号(ASN)

例 1: 共有 VPC ネットワーク内の VM インスタンスからフランスに存在する外部サーバーに向かう NAT を介した TCP 接続の記録。

{
insertId: "1the8juf6vab1t"
jsonPayload: {
       connection: {
            Src_ip: "10.0.0.1"
            Src_port: 45047
            Nat_ip: "203.0.113.17"
            Nat_port: 34889
            dest_ip : "198.51.100.142"
            Dest_port: 80
            Protocol: "tcp"
       }
       allocation_status: "OK"
       Gateway_identifiers: {
             Gateway_name: "my-nat-1"
             router_name: "my-router-1"
             Region: "europe-west1"
       }
       Endpoint: {
             Project_id: "service-project-1"
             Vm_name: "vm-1"
             Region: "europe-west1"
             Zone: "europe-west1-b"
       }
       Vpc: {
             Project_id: "host-project"
             Vpc_name: "network-1"
             Subnetwork_name: "subnetwork-1"
       }
       Destination: {
             Geo_location: {
                   Continent: "Europe"
                   Country: "France"
                   Region: "Nouvelle-Aquitaine"
                   City: "Bordeaux"
             }
       }
}
logName: "projects/host-project/logs/compute.googleapis.com%2Fnat_flows"
receiveTimestamp: "2018-06-28T10:46:08.123456789Z"
resource: {
      labels: {
            region: "europe-west1-d"
            project_id: "host-project"
            router_id: "987654321123456"
            gateway_name: "my-nat-1"
      }
      type: "nat_gateway"
}
labels: {
      nat.googleapis.com/instance_name: "vm-1"
      nat.googleapis.com/instance_zone: "europe-west1-b"
      nat.googleapis.com/nat_ip: "203.0.113.17"
      nat.googleapis.com/network_name: "network-1"
      nat.googleapis.com/router_name: "my-router-1"
      nat.googleapis.com/subnetwork_name: "subnetwork-1"
}
timestamp: "2018-06-28T10:46:00.602240572Z"
}

例 2: 使用可能なポートがないことにより廃棄されたパケットの記録。送信元の VM は、同じプロジェクト内の別の VM の外部 IP アドレスに送信しようとしていました。

{
insertId: "1the8juf6vab1l"
jsonPayload: {
       connection: {
            Src_ip: "10.0.128.1"
            Src_port: 45047
            dest_ip : "192.0.2.87"
            Dest_port: 80
            Protocol: "tcp"
       }
       allocation_status: "DROPPED"
       Gateway_identifiers: {
             Gateway_name: "my-nat-2"
             Cloud_router: "my-router-1"
             Region: "europe-west1"
       }
       Endpoint: {
             Project_id: "service-project-1"
             Vm_name: "vm-1"
             Region: "europe-west1"
             Zone: "europe-west1-b"
       }
       Vpc: {
             Project_id: "host-project"
             Vpc_name: "network-1"
             Subnetwork_name: "subnetwork-1"
       }
       Destination: {
             Instance: {
                   Project_id: "service-project-1"
                   Vm_name: "vm-2"
                   Region: "asia-east1"
                   Zone: "asia-east1-b"
             }
       }
}
logName: "projects/host-project/logs/compute.googleapis.com%2Fnat_flows"
receiveTimestamp: "2018-06-28T10:46:09.123456789Z"
resource: {
       labels: {
              region: "europe-west1-d"
              project_id: "host-project"
              router_id: "987654321123456"
              gateway_name: "my-nat-2"
       }
       type: "nat_gateway"
}
timestamp: "2018-06-28T10:46:01.602240572Z"
}

Cloud NAT ロギングの料金

ロギングの料金をご覧ください。

モニタリング

Cloud NAT は、NAT ゲートウェイの使用状況を把握できるようにする重要な指標を Cloud Monitoring に送信します。

指標は自動的に Cloud Monitoring に送信されます。カスタム ダッシュボードを作成して、アラートをセットアップし、指標をクエリできます。

必要な Identity and Access Management(IAM)のロールは次のとおりです。

  • 異なるプロジェクトで定義された VM と NAT ゲートウェイを使用する共有 VPC ユーザーの場合、VM レベルの指標にアクセスするには、各 VM のプロジェクトに対する roles/monitoring.viewer IAM ロールが必要です。

  • NAT ゲートウェイ リソースの場合、ゲートウェイの指標にアクセスするには、ゲートウェイを含むプロジェクトに対する roles/monitoring.viewer IAM ロールが必要です。

事前定義のダッシュボードを表示する

Cloud NAT には、ゲートウェイ内のアクティビティを表示する事前定義された一連のダッシュボードが用意されています。

  • オープン接続
  • NAT で処理された外向きデータ(レート)
  • NAT で処理された内向きデータ(レート)
  • ポートの使用状況
  • NAT 割り当てエラー
  • 破棄された送信パケット率
  • 破棄された受信パケット率

特定のゲートウェイの詳細ページで事前定義のダッシュボードを表示する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[Cloud NAT] ページに移動します。

    [Cloud NAT] に移動

  2. 既存のゲートウェイをクリックします。

  3. [モニタリング] タブをクリックします。

  4. スクロールして、すべてのダッシュボードを表示します。ページ上部のコントロールを使用して、ビューを 1 時間から 30 日間に変更します。グラフ上のポイントにカーソルを合わせると、その特定の時間の詳細が表示されます。

カスタム ダッシュボードを定義する

VM インスタンスの指標または NAT ゲートウェイの指標を表示するカスタム ダッシュボードを作成するには、次の手順を行います。

コンソール

  1. Google Cloud コンソールで [ ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] となっている結果を選択します。

  2. [ダッシュボードを作成] をクリックします。
  3. 省略可: ダッシュボードのタイトルを、わかりやすいダッシュボード名に更新します。
  4. [ウィジェットを追加] をクリックしてから [指標] を選択します。
  5. [指標] メニューを開き、フィルタバーに「Cloud NAT Gateway」または「VM Instance」と入力してから、サブメニューを使用して特定のリソースタイプと指標を選択します。
    1. [有効なリソース] メニューで、[Cloud NAT ゲートウェイ] または [VM インスタンス] を選択します。
    2. [有効な指標カテゴリ] メニューで、[NAT] を選択します。
    3. [有効な指標] メニューで、表示する指標を選択します。
    4. [適用] をクリックします。
  6. 時系列を結合します。
    • すべての時系列を表示するには、[集計] 要素で最初のメニューを [未集計] に設定し、2 つ目のメニューを [なし] に設定します。
    • 時系列を結合するには、[集計] 要素で、最初のメニューを使用して関数を選択し、2 つ目のメニューを使用してラベルを選択します。2 つ目のメニューが [なし] に設定されている場合、グラフには 1 つの時系列が表示されます。

      たとえば、ゾーンでグループ化した後の時系列の平均値を表示するには、最初のメニューを [平均] に、2 つ目のメニューを [ゾーン] に設定します。

    時系列の結合については、グラフ化されたデータの表示方法を選択するをご覧ください。

  7. ダッシュボードに追加するウィジェットごとに、[ウィジェットを追加] をクリックし、ダイアログの項目を入力してから [適用] を選択します。

    ウィジェットを追加する詳細については、以下のページをご覧ください。

アラート ポリシーを定義する

指標ベースのアラート ポリシーを作成する手順は次のとおりです。

コンソール

アラート ポリシーを作成して指標の値をモニタリングすると、指標が条件に違反した場合に通知できます。

  1. Google Cloud コンソールで、 [アラート] ページに移動します。