フロー・ログ・オブジェクトの表示
フロー・ログとは、特定の時間枠に、2 つの仮想ネットワーク・インターフェース・カード (vNIC) の間の接続で一意的に識別されたネットワーク・トラフィックの要約です。 1 件のフロー・ログには、ファイアウォール (関連するセキュリティー・グループまたはネットワーク ACL) で許可されたトラフィックか、拒否されたトラフィックのどちらか一方だけ (両方ではない) が表されます。 ヘッダー情報とペイロード統計が含まれています。
フローログは、約5分ごとに IBM Cloud® Object Storage に定期的に書き込まれます。 フロー・ログ・コレクターが 100 KB のフローに達すると、フロー・ログが発行される頻度が上がります。
現在、フロー・ログは、伝送制御プロトコル (TCP) とユーザー・データグラム・プロトコル (UDP) のトラフィックを収集しますが、Internet Control Message Protocol (ICMP) トラフィックは収集しません。
各フロー・ログ・オブジェクトには、個別のフロー・ログが含まれています。 フロー・ログを表示または分析するには、IBM Analytics Engine を使用します。 詳細については、IBM Analytics Engine Getting started tutoral を参照してください。
IBM Cloud Data Engineは、2025年1月19日以降、減価償却され、サポートされなくなります。 現在、 Data Engine の既存のインスタンスをご利用の場合は、ワークロードを移行することをお勧めします。 IBM Analytics Engine。
フロー・ログのデータ・フォーマット
フロー・ログのトラフィックの要約には、以下の情報が含まれています。
- バイト/パケット数。RX (受信) と TX (送信) に分けて表されます。
- 時間枠内に接続が開始または停止したかどうか。
1 件のフロー・ログに表されるネットワーク・トラフィックは時間枠が限られているので、長時間実行される接続では、複数のフロー・ログが発行される可能性があります。 vNIC で処理された接続ごとに、時間順の一連のフロー・ログが発行されます (失敗を除く)。 これらのフローログは、1つ以上の Object Storage オブジェクトに表示されます。
フロー・ログの initiator_ip
は、vNIC に達した接続の最初のパケットに含まれていた source_ip
として定義されます。 実装レベルでは、通常、このパケットにより、新しい接続が接続テーブルに追加されます。 同様に、フロー・ログの target_ip
には、この同じパケットの dest_ip
フィールドが設定されます。
接続イニシエーターの vNIC と接続ターゲットの vNIC の両方でフロー・ログが有効な場合は、イニシエーターおよびターゲットの IP とポートのフィールドは、両方の vNIC のフロー・ログで同じになります。
例: HTTP 要求を Web サーバーに送信するクライアントについて考えてみます。 クライアント・サイドの vNIC では、この HTTP 要求に関するフロー・ログの initiator_ip
は、クライアントの IP アドレスになります。 サーバー・サイドの vNIC の対応するフロー・ログの initiator_ip
も同じです。
フロー・ログの start_time
と end_time
は以下を表しています。
- キャプチャー時間 - データ・パス・エレメントでトラフィックのカウンターが照会された時刻。
- データ・パス時間 - データ・パス・エレメント自体に保持されていた時刻。
フロー・ログの start_time
と end_time
の間の (データ・パスなどの) すべてのトラフィックがフロー・ログに表されるわけではありません。 言い換えると、キャプチャー時間枠の終わり頃に vNIC で送受信されたパケットは、それより後の start_time
の時間枠のフロー・ログにしか表されない可能性があります。
フローログは実際の接続上のトラフィックを反映します。キャプチャウィンドウで接続上のトラフィックが発生しない場合、そのウィンドウの Object Storage オブジェクトにはフローログは表示されません。 つまり、ある接続のフローログのシーケンスが、連続していない Object Storage オブジェクトのシーケンスにマッピングされる可能性があるということです。
1 つのオブジェクト内のフロー・ログの配列は、特定の順序でソートする必要はありません。
拒否されたトラフィック:
- 特定の 1 つのフロー・ログには、拒否されたトラフィックか許可されたトラフィックのどちらかが要約されます。両方が要約されることはありません。
- 1 つの接続についての一連のフロー・ログでは、許可されたフロー・ログと拒否されたフロー・ログの間で時間枠がオーバーラップしている場合があります。
- 拒否されたパケットのうち、既存の接続に関連付けられないもの (セキュリティー・グループやネットワーク ACL で接続の開始が拒否された場合など)
- 既存の接続で拒否されたパケット (TCP 状態マシンと一致しないトラフィックや、接続中にネットワーク ACL ルールが変更したトラフィックなど)
- 拒否されたパケットは、着信か発信かによって別々のフロー・ログに書き込まれます。
フローのパケットがセキュリティー・グループまたはネットワーク ACL ルールによってブロックされた場合、そのフローには拒否されたというタグが付けられます。
フロー・ログ・オブジェクトの形式
フローログは、ユーザーが指定した Object Storage バケットに、以下の命名規則に従って書き込まれます
ibm_vpc_flowlogs_v1/account={account}/region={region}/vpc-id={vpc-id}/subnet-id={subnet-id}/endpoint-type=vnics/instance-id={vsi-id}/vnic-id={vnic-id}/record-type={all|ingress|egress}/year={xxxx}/month={yy}/day={zz}/hour={hh}/stream-id={stream-id}/{sequence-number}.gz
ここで、
{stream-id}
は、ISO 8601 形式の日時文字列yyyymmddThhmmssZ
(協定世界時) であり、directory
内の最初のオブジェクトが作成された時刻として定義されます。{sequence-number}
は、このストリームのオブジェクトの実行中のカウンターであり、ゼロで埋められた 8 文字のフィールド (%08d
) として表されます。{all|ingress|egress}
フローに含まれるトラフィックの種類を示します。{xxxx}
は、4 桁の形式の年です。{yy}
は、ゼロで始まる形式の 2 桁の月です。{zz}
は、ゼロで始まる形式の 2 桁の日です。{hh}
は、ゼロで始まる形式の時間 (例えば 00 から 24 まで) です。
URL セーフでない文字がパスに含まれている場合は、URL エンコードが行われます。
フローログの Object Storage オブジェクトには、有効なJSONオブジェクトが1つ含まれています。 Object Storage オブジェクトは .gz
圧縮されています。
以下の表で指定されているオブジェクトヘッダーフィールドは、 Object Storage オブジェクトのメタデータに書き込まれます。
フローログのオブジェクトヘッダーフィールド( Object Storage Sオブジェクトごと)
フィールド | タイプ | 説明 |
---|---|---|
version |
ストリング | セマンティックのバージョン。 |
collector_crn |
ストリング | フロー・ログ・コレクターのクラウド・リソース名 (CRN)。 |
attached_endpoint_type |
ストリング | 現在、値は vnic のみです。 |
network_interface_id |
ストリング | vNIC の CRN はないので vnic の ID。 |
instance_crn |
ストリング | ネットワーク・インターフェースが取り付けられているインスタンスの CRN。 |
vpc_crn |
ストリング | フロー・ログ・コレクターがメンバーとして属している VPC の CRN。 |
capture_start_time |
ストリング | RFC 3339 日時 (協定世界時) |
capture_end_time |
ストリング | RFC 3339 日時 (協定世界時) |
state |
ストリング | フロー・ログ・コレクターの動作状態を示します。OK は、エラーなしでデータが収集および送信されていることを意味します。skip data は、この収集間隔中に (SYN パケットが拒否された割合が高いなどの理由で) データ損失が発生していたことを示します。 |
number_of_flow_logs |
uin32 | flow_logs 配列の要素数。 この数値は大きく変動するため、 Object Storage オブジェクトを最初にダウンロードすることなく、そのオブジェクトに含まれるフローログの数を素早く参照するのに便利です。 |
flow_logs |
JSON オブジェクトの配列 | 空の配列である場合は、no traffic ことを示しています。 |
フロー・ログのフィールド
フィールド | タイプ | 説明 |
---|---|---|
start_time |
ストリング | フロー・ログの最初のバイトがデータ・パスでキャプチャーおよび確認された時刻 (RFC 3339 日時 - 協定世界時)。 |
end_time |
ストリング | フロー・ログの最後のバイトがデータ・パスでキャプチャーおよび確認された時刻 (RFC 3339 日時 - 協定世界時)。 |
connection_start_time |
ストリング | フロー・ログの_接続_の最初のバイトがデータ・パスでキャプチャーおよび確認された時刻 (RFC 3339 日時 - 協定世界時)。 |
direction |
ストリング | 値は、インバウンドの場合は I で、アウトバウンドの場合は O です。 接続の最初のパケットが vNIC で_受信_されたものであった場合、方向は I です。 最初のパケットが vNIC から_送信_されたものであった場合は、方向は O です。 |
action |
ストリング | 値は accepted (このフローで要約されたトラフィックが許可された) または rejected (トラフィックが拒否された) です。 |
initiator_ip |
ストリング | (IPv4 アドレス) この接続で vNIC が処理した最初のパケットに含まれていた送信元 IP。 direction=="outbound" であった場合は、この vNIC に関連付けられているプライベート IP になります。 |
target_ip |
ストリング | (IPv4 アドレス) この接続で vNIC が処理した最初のパケットに含まれていた宛先 IP。 direction=="inbound" であった場合は、この vNIC に関連付けられているプライベート IP になります。 |
initiator_port |
uint16 | この接続でこの vNIC が処理した最初のパケットに含まれていた TCP/UDP 送信元ポート。 |
target_port |
uint16 | この接続でこの vNIC が処理した最初のパケットに含まれていた TCP/UDP 宛先ポート。 |
transport_protocol |
uint8 | Internet Assigned Numbers Authority (IANA) プロトコル番号 (TCP または UDP)。 |
ether_type |
ストリング | 現在、値は IPv4 のみです。 |
was_initiated |
ブール | このフロー・ログで接続が開始された。 |
was_terminated |
ブール | 接続が終了された (timeout/RST/Final-FIN など)。 |
bytes_from_initiator |
uint64 | このフロー・ログの時間枠で、接続を使用してイニシエーターからターゲットに送信されたバイト数。 |
packets_from_initiator |
uint64 | このフロー・ログの時間枠で、接続を使用してイニシエーターからターゲットに送信されたパケット数。 |
bytes_from_target |
uint64 | このフロー・ログの時間枠で、接続を使用してターゲットからイニシエーターに送信されたバイト数。 |
packets_from_target |
uint64 | このフロー・ログの時間枠で、接続を使用してターゲットからイニシエーターに送信されたパケット数。 |
cumulative_bytes_from_initiator |
uint64 | 接続が開始されてから、イニシエーターからターゲットに送信されたバイト数。 |
cumulative_packets_from_initiator |
uint64 | 接続が開始されてから、イニシエーターからターゲットに送信されたパケット数。 |
cumulative_bytes_from_target |
uint64 | 接続が開始されてから、ターゲットからイニシエーターに送信されたバイト数。 |
cumulative_packets_from_target |
uint64 | 接続が開始されてから、ターゲットからイニシエーターに送信されたパケット数。 |
ほとんどの場合、vNIC のプライベート IP を送信元 IP と宛先 IP と比較することで方向のフィールドはわかります。 しかし、このフィールドは照会に便利です。
フロー・ログ・オブジェクトの例
{
"version": "0.0.1",
"collector_crn": "crn",
"attached_endpoint_type": "vnic",
"network_interface_id": "crn",
"instance_crn": "crn",
"vpc_crn": "crn"
"capture_end_time": "2008-09-15T15:53:00Z",
"capture_start_time": "2008-09-15T15:00:00Z",
"state": "ok",
"number_of_flow_logs" : 1,
"flow_logs": [
{
"start_time": "2008-09-15T15:53:00",
"end_time": "2008-09-15T15:40:00",
"direction": "O",
"action": "accepted",
"initiator_ip": "1.2.3.4",
"initiator_port": 20033,
"target_ip": "5.6.7.8",
"target_port": 80,
"transport_protocol": 6,
"ether_type": "IPv4",
"was_initiated": true,
"was_terminated": false,
"bytes_from_initiator": 12000,
"packets_from_initiator": 2212,
"bytes_from_target": 323232,
"packets_from_target": 3232
"cumulative_packets_from_initiator": 2212,
"cumulative_packets_from_target": 3232,
"cumulative_bytes_from_target": 323232,
"cumulative_bytes_from_initiator": 12000,
}
],
}
Object Storage バケットから生成されたフロー・ログ・ファイルの表示
IBM Cloud Object Storageのライト(無料)料金プランを使用している場合、Object Storageバケットから生成されたフローログオブジェクトファイルに直接アクセスして、ファイルが正常に作成され、オブジェクトが生成されていることを確認することができます。
Object Storage バケットから生成されたフロー・ログ・ファイルを表示するには、以下の手順を実行します。
-
フロー・ログがキャプチャーされていることを確認するには、 Object Storage バケットを確認します。
-
フォルダー内をナビゲートして、モニターを構成した VPC またはリソースを見つけます。
-
リソースをドリルダウンして、モニターしているネットワーク・リソースを見つけます。
正しく構成されている場合は、ログ・エントリーごとに複数の gzip ファイルが表示されます。
データがキャプチャされていることを確認するには、いずれかのファイルをダウンロードしてその内容を表示し、トラフィックがキャプチャされていることを確認する。