플로우 로그 오브젝트 보기
플로우 로그는 특정 시간 창 내의 두 가지 가상 네트워크 인터페이스 카드(vNIC) 간 연결로 고유하게 식별되는 네트워크 트래픽의 요약입니다. 플로우 로그는 방화벽이 (관련 보안 그룹 또는 네트워크 ACL을) 승인하거나 거부하는 트래픽에 대해 설명하지만, 둘 다를 설명하지는 않습니다. 여기에는 헤더 정보와 페이로드 통계가 포함되어 있습니다.
플로우 로그는 약 5분 간격으로 IBM Cloud® Object Storage 에 주기적으로 기록됩니다. 플로우 로그는 플로우 로그 콜렉터가 100KB 플로우에 도달하는 경우 더 자주 공개됩니다.
현재 플로우 로그는 TCP(Transmission Control Protocol) 및 UDP(User Datagram Protocol) 트래픽을 수집하지만 ICMP(Internet Control Message Protocol) 트래픽은 수집하지 않습니다.
각 플로우 로그 오브젝트에는 별도의 플로우 로그가 있습니다. 플로우 로그를 보거나 분석하려면 IBM Analytics Engine을 사용하세요. 자세한 내용은 IBM Analytics Engine 시작하기 튜토리얼을 참조하세요.
IBM Cloud Data Engine 사용이 중단되었으며 더 이상 지원되지 않습니다. 현재 Data Engine 의 기존 인스턴스를 사용 중인 경우, 해당 워크로드를 로 마이그레이션하는 IBM Analytics Engine 것이 권장됩니다.
플로우 로그 데이터 형식
플로우 로그 트래픽 요약에는 다음 정보가 포함되어 있습니다.
- 각 RX(수신) 및 TX(전송)별 바이트/패킷 수
- 연결이 시간 창에서 시작 또는 중지되는지 여부
플로우 로그가 제한된 시간 창에서 네트워크 트래픽을 반영하므로 연결이 장기 실행되면 다중 플로우가 생성될 수 있습니다. vNIC로 처리되는 모든 연결의 경우 플로우 로그가 시간 순서에 따라 생성됩니다(실패를 포함하지 않음). 이러한 흐름 로그들은 하나 이상의 Object Storage 객체에 나타납니다.
플로우 로그의 initiator_ip가 vNIC에 도달한 첫 번째 연결의 패킷에 표시되는 source_ip로 정의됩니다. 구현 레벨에서 일반적으로 이 패킷은 새 연결이 연결 테이블에 추가되도록 합니다. 마찬가지로, 플로우 로그의 target_ip는 해당 동일한 패킷의 dest_ip 필드로 설정됩니다.
연결 시작기 vNIC와 연결 대상 vNIC가 플로우 로그를 사용하는 경우, 시작기 및 대상 IP와 포트 필드는 두 개의 vNIC의 플로우 로그에서 동일합니다.
예시: 웹 서버에 HTTP 요청을 보내는 클라이언트를 생각해 보십시오. 클라이언트 측 vNIC에 있는 이 HTTP 요청의 플로우 로그에는 initiator_ip로서의 클라이언트 IP 주소가 있습니다. 서버 측 vNIC의 해당 플로우 로그에는 동일한 initiator_ip가 있습니다.
플로우 로그의 start_time 및 end_time은 다음을 반영합니다.
- 캡처 시간 - 데이터 경로 요소가 트래픽 카운터를 조회한 시간입니다.
- 데이터 경로 시간 - 데이터 경로 요소에서 자체적으로 유지보수되는 시간입니다.
플로우 로그가 플로우 로그 start_time과 end_time 간의 모든 트래픽을(예를 들어, 데이터 경로의) 반영하지 않을 수 있습니다. 즉, vNIC에서 캡처 창의 끝으로 보내고 받은 패킷은 나중에 start_time 범위의 플로우 로그에만 적용될 수 있습니다.
플로우 로그는 연결상의 실제 트래픽을 반영합니다: 캡처 창에서 연결에 트래픽이 발생하지 않으면, 해당 창에 대한 네트워크 객체( Object Storage )에 플로우 로그가 나타나지 않습니다. 즉, 연결에 대한 흐름 로그 시퀀스가 연속되지 않은 여러 개의 연결 객체( Object Storage ) 시퀀스로 매핑될 수 있음을 의미합니다.
오브젝트 내의 플로우 로그 배열은 특정 순서로 정렬될 필요가 없습니다.
관련 트래픽:
- 특정 플로우 로그에는 거부되거나 허용된 트래픽(둘 다는 아님)을 요약합니다.
- 연결에 대한 플로우 로그의 시퀀스에서는 허용된 플로우 로그와 거부된 플로우 로그 창 사이에 시간 창이 겹칠 수 있습니다.
- 기존 연결과 연관되지 않은 거부된 패킷입니다(예를 들어, 보안 그룹 또는 네트워크 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(국제 표준시(UTC))의 날짜 및 시간 문자열이며directory의 첫 번째 오브젝트가 작성된 시간으로 정의됩니다.{sequence-number}은(는) 8자로 표현되는 채워지지 않은 필드(%08d)인 스트림 내 오브젝트의 실행 카운터입니다.{all|ingress|egress}흐름이 포함하는 트래픽 유형을 보여줍니다.{xxxx}는 네 자리 형식으로 된 연도입니다.{yy}는 앞에 0이 포함된 두 자리 수의 월입니다.{zz}는 앞에 0이 포함된 두 자리 수의 날짜입니다.{hh}는 앞에 0이 포함된 형식의 시간입니다(예: 00 - 24).
경로에서 안전하지 않은 URL 문자의 인스턴스가 URL 인코딩됩니다.
플로우 로그의 Object Storage 객체는 단일 유효한 JSON 객체를 포함합니다. Object Storage 객체가 .gz 압축되었습니다.
다음 표에 명시된 객체 헤더 필드는 Object Storage 객체 메타데이터에 기록됩니다.
플로우 로그 객체 헤더 필드 ( Object Storage S 객체당)
| 필드 | 유형 | 설명 |
|---|---|---|
version |
문자열 | Semantic 버전입니다. |
collector_crn |
문자열 | 플로우 로그 콜렉터의 CRN(Cloud Resource Name)입니다. |
attached_endpoint_type |
문자열 | 현재 유일한 값은 vnic입니다. |
network_interface_id |
문자열 | vNIC CRN이 없으므로 vnic ID입니다. |
instance_crn |
문자열 | 네트워크 인터페이스가 연결되는 인스턴스의 CRN입니다. |
vpc_crn |
문자열 | 플로우 로그 콜렉터가 멤버인 VPC의 CRN입니다. |
capture_start_time |
문자열 | RFC 3339 날짜 및 시간(협정 세계시(UTC))입니다. |
capture_end_time |
문자열 | RFC 3339 날짜 및 시간(협정 세계시(UTC))입니다. |
state |
문자열 | 플로우 로그 콜렉터의 작동 상태를 나타냅니다. OK은(는) 오류 없이 데이터가 수집 및 전달되고 있음을 의미합니다. skip data은(는) 이 콜렉션 간격 동안 손실된 데이터를 나타냅니다(예: 거부된 SYN 패킷의 높은 비율로 인해). |
number_of_flow_logs |
uin32 | flow_logs 배열에 있는 요소 수입니다. 이 숫자는 매우 변동성이 크기 때문에, 해당 객체를 먼저 다운로드할 필요 없이 단일 Object Storage 객체에 포함된 플로우 로그 수를 빠르게 참조하는 데 유용합니다. |
flow_logs |
JSON 오브젝트의 배열 | 비어 있는 배열일 수 있으며, no traffic을 표시합니다. |
플로우 로그 필드
| 필드 | 유형 | 설명 |
|---|---|---|
start_time |
문자열 | 플로우 로그의 첫 번째 바이트가 캡처되고 데이터 경로에서 표시되는 경우(RFC 3339 날짜 및 시간 - 협정 세계시(UTC)) |
end_time |
문자열 | 플로우 로그의 마지막 바이트가 캡처되고 데이터 경로에서 표시되는 경우(RFC 3339 날짜 및 시간 - 협정 세계시(UTC)) |
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 | IANA(Internet Assigned Numbers Authority) 프로토콜 번호(TCP 또는 UDP)입니다. |
ether_type |
문자열 | 현재 IPv4는 유일한 값입니다. |
was_initiated |
bool | 이 플로우 로그에서 시작된 연결입니다. |
was_terminated |
bool | 종료된 연결입니다(예: 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와 비교하여 방향 필드를 찾을 수 있습니다. 그러나 필드는 조회에 유용합니다.
플로우 로그 오브젝트 예
{
"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 파일이 표시되어야 합니다.
데이터가 캡처되고 있는지 확인하려면 파일 중 하나를 다운로드하여 내용을 확인하여 트래픽이 캡처되고 있는지 확인하세요.