Azure 가상 네트워크(VNet) 흐름 로그를 사용하면 가상 네트워크를 통해 흐르는 IP 트래픽에 대한 정보를 로그할 수 있습니다. 뉴렐릭 VNet 흐름 로그 전달자를 사용하면 성능 분석 및 네트워크 연결 문제 진단, 해결을 위해 이러한 로그를 뉴렐릭으로 자동 전달할 수 있습니다.
작동 원리
VNet 흐름 로그 전달자는 이벤트 기반 Azure Function App입니다:

Event Grid → Event Hub: 플로우 로그 스토리지 계정의 Event Grid 구독은 PT1H.json blob에서
BlobCreated이벤트를 수신 대기하고 이를 Event Hub로 직접 전달합니다. 구독은 파일별 시간순 정렬을 보장하기 위해 blob 경로(이벤트 주체)를 파티션 키로 사용합니다. 별도의 릴레이 함수는 없습니다.VNetFlowLogsConsumer: 다음을 통해 각 blob 이벤트를 처리하는 Event Hub 트리거 함수입니다:
- Azure Table Storage에서 커서를 읽어 이미 처리된 항목을 확인합니다.
- PT1H.json blob에서 새로 추가된 블록만 다운로드합니다(델타 읽기).
- VNet 플로우 로그 레코드(플로우 튜플)를 구조화된 로그 항목으로 구문 분석합니다.
- 로그 API를 통해 구문 분석된 레코드를 뉴렐릭으로 전송합니다.
- 성공적으로 전달되면 업데이트된 커서를 커밋합니다.
VNetFlowLogsCleanup: Azure Table Storage에서 오래된 커서 항목을 주기적으로 제거하는 타이머 트리거 함수입니다(기본적으로 매일 03:00 UTC).
이 아키텍처는 효율적이고 점진적인 처리를 보장합니다 ― 새로운 데이터만 읽고 전달하여 이미 확인된 레코드의 중복 처리를 방지합니다.
전제 조건
New Relic 전제 조건
뉴렐릭에서 다음이 필요합니다:
- New Relic 계정. 하나가 없습니까? 무료 가입! 신용 카드가 필요하지 않습니다.
- 뉴렐릭 .
Azure 전제 조건
Azure에는 다음이 필요합니다:
- 타겟 가상 네트워크에서 VNet 흐름 로그가 활성화된 Azure 구독. VNet 흐름 로그 활성화에 대한 Microsoft의 문서를 참조하세요.
- VNet 흐름 로그가 기록되는 스토리지 계정(PT1H.json blob).
- 이벤트 전달을 위한 Event Hub 네임스페이스 및 Event Hub(ARM/Bicep 템플릿을 통해 자동으로 생성할 수 있음).
- Function App 런타임 및 커서 테이블 스토리지를 위한 Azure Storage 계정입니다(ARM/Bicep 템플릿에서 자동으로 생성할 수 있음).
VNet 흐름 로그 전달자 배포
ARM/Bicep 템플릿을 사용하거나(권장) 수동으로 VNet Flow 로그 전달자를 배포할 수 있습니다.
뉴렐릭 VNet 흐름 로그 ARM 템플릿 및 Bicep 템플릿 은 모든 필수 리소스의 자동화된 배포를 제공합니다.
템플릿은 자동으로 다음을 수행합니다:
이벤트 허브 네임스페이스, 이벤트 허브 및 소비자 그룹을 생성합니다
VNet 흐름 로그 기능이 있는 함수 앱(Flex 소비 계획, Node.js 22)을 배포합니다.
함수 앱 런타임 및 커서 추적을 위한 스토리지 계정을 생성합니다
PT1H.json blob 생성 이벤트를 이벤트 허브로 직접 라우팅하는 이벤트 그리드 시스템 주제 및 구독을 생성합니다.
필요한 역할 할당이 있는 관리형 ID를 할당합니다.
필요한 모든 애플리케이션 설정 구성
VNet 통합 및 프라이빗 엔드포인트를 사용하여 프라이빗 네트워킹을 선택적으로 활성화합니다.
이 단계를 따르세요:
one.newrelic.com > Integrations & Agents 으)로 이동합니다.
Collections 아래에서 Logging을(를) 선택한 다음 Microsoft Azure VNet Flow Logs 타일을 클릭합니다.
Select an account 드롭다운 메뉴에서 로그를 보낼 계정을 선택하고 Continue을(를) 클릭합니다.
Enter your license key 단계에서 Create a new key을(를) 클릭하고, Copy key 을(를) 클릭하여 안전한 곳에 저장한 다음 Continue을(를) 클릭합니다.
Deploy to Azure을 클릭합니다. ARM 템플릿이 로드된 새 탭이 Azure에서 열립니다.
배포를 위해 Resource group 및 Region 을(를) 선택합니다. 생성된 구성 요소를 실수로 삭제하지 않도록 새 리소스 그룹을 사용하는 것이 좋습니다.
New Relic license key 필드에 이전에 복사한 라이선스 키를 붙여넣습니다.
뉴렐릭 엔드포인트 가 계정(US, EU 또는 JP)에 해당하는 것으로 설정되어 있는지 확인합니다.
(선택 사항) VNet Flow 로그가 저장된 Source Storage Account Name 을(를) 입력하세요. 이 배포와 동일한 리소스 그룹에 있어야 합니다. 새 소스 스토리지 계정을 자동으로 생성하려면 비워 두세요.
(선택 사항) VNet 통합 및 프라이빗 엔드포인트를 사용하여 프라이빗 네트워킹 모드를 활성화하려면 Disable Public Access To Storage Account 을(를) 선택합니다.
(선택 사항) 고급 설정 구성:
- New Relic Tags: 세미콜론으로 구분된 태그(포맷:
key1:value1;key2:value2) - Max Retries: 최대 전송 재시도 횟수(기본값: 3)
- Retry Interval: 재시도 간격(밀리초)(기본값: 2000)
- Function Log Level: Function App 로그의 세부 정보 표시 수준 ―
Trace,Debug,Information,Warning또는Error(기본값:Information) - Max Event Batch Size: 일괄 처리당 처리되는 최대 Event Hub 이벤트 수(기본값: 10)
- Min Event Batch Size: 일괄 처리당 최소 Event Hub 이벤트 수(기본값: 5)
- Max Wait Time: 처리하기 전에 트리거가 배치를 채우기 위해 대기하는 최대 시간,
hh:mm:ss(기본값:00:00:30) - Event Hub Scaling Mode:
Basic(처리량 단위 1개, 파티션 4개, 자동 확장 없음 ― 중저 트래픽) 또는Enterprise(최대 40개의 처리량 단위로 자동 확장, 파티션 32개 ― 대용량 처리량 볼륨)(기본값:Basic)
- New Relic Tags: 세미콜론으로 구분된 태그(포맷:
Review + create을(를) 클릭하고 설정을 검토한 후 Create을(를) 클릭합니다.
뉴렐릭으로 돌아가서 Create log partition 단계에서 Create partition을(를) 클릭합니다. 이렇게 하면
Log_VNET_Flows_Azure데이터 파티션(규칙:instrumentation.name = 'vnet-app', STANDARD 보존)이 생성되어 VNet Flow 로그가 다른 로그와 별도로 저장되고 쿼리됩니다. 계정에Log_VNET_Flows_Azure파티션이 이미 있는 경우 Continue 을(를) 클릭하여 이 단계를 건너뜁니다.Test your logs 단계에서
SELECT * FROM Log_VNET_Flows_Azure을(를) 실행하여 데이터가 도착하는지 확인한 다음 See your data을(를) 클릭합니다.배포 아키텍처
ARM/Bicep 템플릿은 두 가지 배포 모드를 지원합니다:
표준 배포 (기본값):
Event Grid를 사용하여 소스 스토리지 계정의 blob 생성을 모니터합니다.
제목을 파티션 키로 사용하여 순서대로 처리하기 위해 이벤트를 Event Hub로 직접 라우팅합니다.
Function App에서 VNet flow 로그를 처리하고 뉴렐릭으로 전달합니다.
Function App, 해당 스토리지 계정 및 이벤트 허브에서 공용 네트워크 액세스를 활성화합니다.
프라이빗 네트워킹 배포 (선택 사항,
disablePublicAccessToStorageAccount=true):표준 배포의 모든 기능 포함
공용 네트워크 액세스가 비활성화된 상태에서 프라이빗 가상 네트워크 내에 함수 앱, 스토리지 계정 및 이벤트 허브를 격리합니다
스토리지 서비스(blob, file, queue 및 table)를 위한 프라이빗 엔드포인트와의 VNet 통합을 추가합니다
이름 확인을 위한 프라이빗 DNS 영역을 생성합니다.
공용 네트워크 액세스를 활성화된 상태로 유지해야 하는 소스 스토리지 계정(VNet Flow 로그 포함)을 수정하지 않습니다.
수동 배포를 선호하거나 사용자 지정 설정이 필요한 경우:
- Azure 구독에 azure-vnet-flow-logs 함수 앱을 배포합니다.
VNetFlowForwarder함수(VNetFlowLogsConsumer및VNetFlowLogsCleanup)가 배포에 포함되어 있는지 확인하세요.- 아래에 나열된 필수 환경 변수(애플리케이션 설정)를 구성합니다.
- 이벤트 제목을 파티션 키로 사용하여
BlobCreated이벤트를 Event Hub로 직접 라우팅하도록 플로우 로그 스토리지 계정에 Event Grid 구독을 설정합니다.
구성
Azure Function App에서 다음 애플리케이션 설정을 구성하세요:
필수 설정
환경 변수 | 설명 |
|---|---|
| 귀하의 뉴렐릭 라이선스 키입니다. |
| VNet Flow Logs가 저장된 Azure Storage 계정의 연결 문자열입니다. |
| 커서 상태를 유지하는 데 사용되는 Azure Storage 계정의 연결 문자열입니다(소스와 동일할 수 있음). |
| blob 생성 이벤트를 소비자 함수에 전달하는 Event Hub의 연결 문자열입니다. |
| Event Hub 인스턴스의 이름입니다. |
선택 설정
환경 변수 | 설명 | 기본값 |
|---|---|---|
| 뉴렐릭 Logs API 엔드포인트. EU 계정의 경우
을(를) 사용하세요. |
|
| 전달되는 모든 로그에 추가할 세미콜론으로 구분된 태그입니다. 포맷:
| 없음 |
| 뉴렐릭으로의 최대 전송 재시도 횟수입니다. |
|
| 재시도 간격(밀리초)입니다. |
|
| 이벤트 허브 소비자 그룹. |
|
| 정리 작업에서 제거하기 전에 blob-cursor 레코드를 유지할 시간 수입니다. |
|
| 커서 정리 타이머 트리거에 대한 NCRONTAB 일정입니다. |
(매일 03:00 UTC) |
| 전달자가 포이즌 이벤트로 건너뛰기 전의 blob당 연속 실패 횟수입니다. |
|
흐름 로그 데이터 보기
구성이 완료되면 VNet Flow Log 데이터가 뉴렐릭에 표시됩니다. NRQL을 사용하여 쿼리할 수 있습니다:
SELECT * FROM Log_VNET_Flows_Azure
소스, 방향, 프로토콜 및 목적지별로 상위 흐름을 그룹화하는 Conversations 보기에서 이 데이터를 시각화할 수도 있습니다:

각 흐름 로그 레코드에는 다음 속성이 포함됩니다:
기인하다 | 설명 |
|---|---|
| 소스 IP 주소 |
| 대상 IP 주소 |
| 소스 포트 |
| 대상 포트 |
| 프로토콜(TCP, UDP 및 ICMP) |
| Traffic 방향(인바운드, 아웃바운드) |
| 흐름 상태:
,
,
또는
. 거부된 흐름은 여기에서
(으)로 표현됩니다 — 별도의 작업 속성이 없습니다. |
| 암호화 상태:
,
또는
이유 코드(예:
) |
| 소스에서 대상까지의 바이트 수 |
| 목적지에서 소스까지의 바이트 |
| 소스에서 대상으로의 패킷 |
| 대상에서 소스로의 패킷 |
| 흐름과 연결된 액세스 제어 목록 ID |
| 흐름과 일치하는 NSG/ACL 규칙 이름 |
| 모니터된 타겟 리소스의 전체 Azure 리소스 ID |
| 가상 네트워크 이름(타겟이 VNet 또는 서브넷인 경우) |
| 서브넷 이름(해당하는 경우) |
| 흐름 로그 레코드와 연결된 MAC 주소 |
| 로그 카테고리(예:
) |
| 흐름 로그 레코드의 작업 이름 |
| VNet Flow 로그 스키마 버전 |
| 흐름 로그 리소스의 고유 식별자 |
| 흐름 로그의 Azure 리소스 ID |
팁
전달된 각 로그는 공통 속성 instrumentation.provider (azure), instrumentation.name (vnet-app) 및 instrumentation.version (전달자 버전)와 NR_TAGS에 설정한 사용자 지정 핵심 가치 쌍을 전달합니다. 원시 흐름 튜플 CSV는 로그 message 필드에 보존됩니다.
문제점 해결
누락된 흐름 로그 데이터, 중복 레코드 또는 건너뛴(포이즌) 이벤트에 대한 도움이 필요하면 Azure VNet 흐름 로그 모니터링 문제 해결을 참조하세요.