Data Plus 에서 사용할 수 있는 스트리밍 내보내기 기능을 사용하면 New Relic에서 데이터를 수집할 때 AWS Kinesis Firehose 또는 Azure Event Hub로 데이터를 보낼 수 있습니다. NerdGraph 를 사용하여 스트리밍 규칙을 만들고 업데이트하는 방법과 기존 규칙을 보는 방법을 설명합니다. NerdGraph 탐색기 를 사용하여 이러한 호출을 할 수 있습니다.
스트리밍 내보내기란 무엇입니까?
New Relic 조직에서 데이터를 수집하면 스트리밍 내보내기 기능이 해당 데이터를 AWS Kinesis Firehose 또는 Azure Event Hub로 보냅니다. NRQL을 사용하여 정의된 사용자 정의 규칙을 설정하여 내보낼 New Relic 데이터의 종류를 제어할 수 있습니다. 새로운 압축 내보내기 기능을 사용하여 데이터를 내보내기 전에 압축하도록 선택할 수도 있습니다.
스트리밍 내보내기를 사용할 수 있는 몇 가지 예:
- 데이터 레이크를 채우려면
- AI/ML 교육 강화
- 규정 준수, 법적 또는 보안상의 이유로 장기 보존
원할 때마다 스트리밍 내보내기 규칙을 비활성화하거나 활성화할 수 있습니다. 그러나 스트리밍 내보내기는 현재 수집된 데이터만 전송합니다. 즉, 비활성화했다가 다시 활성화하면 꺼져 있을 때 수집된 데이터가 이 기능과 함께 전송되지 않습니다. 과거 데이터를 내보내려면 기록 데이터 내보내기 를 사용할 수 있습니다.
요구 사항 및 제한 사항
스트리밍 데이터 제한: 한 달에 스트리밍할 수 있는 데이터의 양은 한 달에 수집된 총 데이터 에 의해 제한됩니다. 스트리밍 데이터 양이 수집된 데이터 양을 초과하는 경우 스트리밍 내보내기에 대한 액세스 및 사용을 일시 중지할 수 있습니다.
권한 관련 요구 사항:
- Data Plus 옵션이 포함된 Pro 또는 Enterprise 에디션
- 사용자 유형: 핵심 사용자 또는 전체 플랫폼 사용자
- 스트리밍 데이터 권한
New Relic 데이터를 수신하도록 설정된 AWS Kinesis Firehose 또는 Azure Event Hub가 있어야 합니다. 아직 이 작업을 수행하지 않은 경우 AWS 또는 Azure 에 대한 아래 단계를 따를 수 있습니다.
NRQL 요구 사항:
- 집계가 없는 단순 쿼리여야 합니다. 예를 들어
SELECT *
또는SELECT column1, column2
형식이 지원됩니다. - 하위 쿼리를 제외한
WHERE
절의 모든 항목에 적용할 수 있습니다. - 쿼리에는
FACET
절,COMPARE WITH
또는LOOKUP
가 있을 수 없습니다. - 중첩 쿼리는 지원되지 않습니다.
- 메트릭 타임슬라이스 데이터 가 아닌 NRDB에 저장된 데이터 유형을 지원합니다.
AWS Kinesis Firehose 설정
AWS로 스트리밍 데이터 내보내기를 설정하려면 먼저 Amazon Kinesis Firehose를 설정해야 합니다. 다음 세 단계에서 해당 절차를 안내합니다.
스트리밍 내보내기 위한 Firehose 만들기
New Relic 데이터를 스트리밍할 전용 Firehose를 생성:
- Amazon Kinesis Data Firehose로 이동합니다.
- 배달 스트림을 만듭니다.
- 스트림 이름을 지정합니다(이 이름은 나중에 규칙 등록에서 사용합니다).
- Direct PUT or other sources 사용하고 뉴렐릭의 JSON 이벤트 형식(예: S3, Redshift 또는 OpenSearch)과 호환되는 대상을 지정합니다.
IAM Firehose 쓰기 액세스 정책 생성
- IAM 콘솔로 이동하여 사용자로 로그인합니다.
- 왼쪽 탐색에서 Policies [정책을] 클릭한 다음 Create policy [정책 만들기를] 클릭합니다.
- Firehose 서비스를 선택한 다음
PutRecord
및PutRecordBatch
을 선택합니다. Resources
의 경우 전송 스트림을 선택하고 ARN을 추가한 다음 스트림의 지역을 선택합니다.- AWS 계정 번호를 입력한 다음 이름 상자에 원하는 전송 스트림 이름을 입력합니다.
- 정책을 만듭니다.
뉴렐릭 쓰기 액세스 권한을 부여하기 위한 IAM 역할 생성
IAM 역할을 설정하려면:
- IAM으로 이동하여 Roles 클릭합니다.
- AWS 계정에 대한 역할을 생성한 후 for another AWS account 선택합니다.
- New Relic 내보내기 계정 ID 입력:
888632727556
. - Require external ID 선택하고 내보내려는 뉴렐릭 계정의 계정 ID를 입력하세요.
- Permissions 클릭한 다음 위에서 생성한 정책을 선택합니다.
- 역할 이름(내보내기 등록에 사용됨) 및 설명을 추가합니다.
- 역할을 만듭니다.
이러한 단계를 모두 마치면 NerdGraph를 사용하여 내보내기 규칙을 설정할 수 있습니다. 자세한 내용은 NerdGraph 호출에 대한 중요 필드 로 이동하세요.
Azure 이벤트 허브 설정
Azure로 스트리밍 데이터 내보내기를 설정하려면 먼저 Event Hub를 설정해야 합니다. 다음 세 단계에서 해당 절차를 안내합니다.
또는 여기 에서 Azure 가이드를 따를 수 있습니다.
이벤트 허브 네임스페이스 만들기
- Microsoft Azure 계정 내에서 Event Hubs로 이동합니다.
- 단계에 따라 Event Hubs 네임스페이스를 만듭니다. 모든 데이터를 받을 수 있도록 자동 팽창을 활성화하는 것이 좋습니다.
- 공개 액세스가 활성화되어 있는지 확인하십시오. 공유 액세스 정책을 사용하여 Event Hub에서 안전하게 인증합니다.
- Event Hubs 네임스페이스가 구현하다, 배포되면, Go to resource 클릭합니다.
이벤트 허브 만들기
왼쪽 열에서 Event Hubs 클릭합니다.
그런 다음 +Event Hub 클릭하여 이벤트 허브를 만듭니다.
원하는 Event Hub 이름을 입력합니다. 나중에 스트리밍 내보내기 규칙을 만드는 데 필요하므로 저장합니다.
Retention 의 경우, Delete
Cleanup policy
및 원하는Retention time (hrs)
선택하세요.중요
현재 Compact 보존 정책이 있는 이벤트 허브에서는 스트리밍 내보내기가 지원되지 않습니다.
Event Hub가 생성되면 Event Hub를 클릭합니다.
공유 액세스 정책을 만들고 첨부합니다.
- 왼쪽 열에서 Shared access policies 으로 이동합니다.
- 페이지 상단 근처에 있는 +Add 클릭합니다.
- 공유 액세스 정책의 이름을 선택하십시오.
- Send 선택하고 Create 클릭합니다.
- 생성된 정책을 클릭하고 Connection string–primary key 을 복사합니다. 이를 저장하여 이벤트 허브에 데이터를 인증하고 전송하는 데 사용합니다.
이러한 단계를 마치면 Nerdgraph 호출에 필요한 중요 필드에 대한 다음 섹션을 참조하세요.
NerdGraph 호출을 위한 중요 필드
우리가 다룰 대부분의 스트리밍 데이터 내보내기 NerdGraph 호출은 계정과 관련된 몇 가지 필드를 사용합니다.
AWS Kinesis Firehose의 경우:
awsAccountId
: AWS 계정 ID . 예를 들어:10000000000
deliveryStreamName
: Kinesis 스트림 이름 입니다. 예:firehose-test-stream
.region
:AWS 리전 . 예:us-east-1
.role
: Kinesis Firehose에 대한 AWS IAM 역할 입니다. 이것은 항상firehose-role
입니다.
Azure 이벤트 허브의 경우:
eventHubConnectionString
: Azure 이벤트 허브 연결 문자열 입니다. 다음과 유사합니다.Endpoint=sb://<NamespaceName>.servicebus.windows.net/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<EventHubName>
eventHubName
: 이벤트 허브 이름입니다. 예:my-event-hub
.
스트리밍 내보내기 규칙을 만드는 방법
먼저 내보낼 데이터를 결정합니다. 그런 다음 NerdGraph 호출로 NRQL을 사용하여 원하는 스트리밍 규칙을 생성합니다. 몇 가지 예를 들어보겠습니다.
스트림 생성
새 스트리밍 규칙을 만들 때 다음 필드가 모두 필요합니다. 다음은 AWS Kinesis Firehose로 내보내는 스트리밍 규칙을 생성하는 예입니다.
mutation { streamingExportCreateRule( accountId: YOUR_NR_ACCOUNT_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "SELECT * FROM NodeStatus" payloadCompression: DISABLED } awsParameters: { awsAccountId: "YOUR_AWS_ACCOUNT_ID" deliveryStreamName: "FIREHOSE_STREAM_NAME" region: "SPECIFY_AWS_REGION" role: "firehose-role" } ) { id status }}
다음은 Azure Event Hub로 내보내는 스트리밍 규칙을 만드는 예입니다.
mutation { streamingExportCreateRule( accountId: YOUR_NR_ACCOUNT_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "SELECT * FROM NodeStatus" payloadCompression: DISABLED } azureParameters: { eventHubConnectionString: "YOUR_EVENT_HUB_SAS_CONNECTION_STRING" eventHubName: "YOUR_EVENT_HUB_NAME" } ) { id status }}
규칙 ID 및 상태와 함께 즉시 결과를 얻을 수 있습니다. 상태는 CREATION_IN_PROGRESS
으로 표시됩니다. 규칙 ID를 사용하여 규칙이 성공적으로 생성되었는지 확인할 수 있습니다.
정책 유효성 검사에 시간이 걸리므로 규칙 생성을 완료하는 데 최대 6분이 걸릴 수 있습니다.
규칙 등록이 완료되기 전에는 규칙이 생성 프로세스에 대해 잠겨 있기 때문에 다른 변형 작업(예: Enable
, Disable
또는 Update
)을 시작할 수 없습니다. 규칙이 등록 프로세스를 완료하기 전에 다른 변형 작업을 시도하면 "현재 내보내기 규칙이 다른 요청에 의해 업데이트되고 있습니다. 잠시 기다렸다가 다시 시도하십시오."와 같은 메시지가 표시됩니다.
언제든지 Delete
을(를) 사용할 수 있습니다.
규칙 생성에 필요한 대략 6분 이내에 생성을 완료하고 언제든지 상태를 변경할 수 있습니다. 상태가 ENABLED
, DISABLED
또는 CREATION_FAILED
로 변경됩니다.
값에 대한 다음 세부정보를 참조하세요.
ENABLED
규칙이 성공적으로 생성되고 데이터 스트리밍이 시작되었음을 의미합니다.CREATION_FAILED
생성 시 규칙이 실패했음을 의미합니다. 이는 여러 가지 이유로 발생할 수 있지만 종종 AWS 정책 또는 Azure SAS 유효성 검사 실패로 인해 발생합니다.DISABLED
규칙이 생성되었지만 필터 스트림 제한에 도달했거나 필터 스트림 규칙 생성 실패와 같은 이유로 아직 활성화되지 않았음을 의미합니다. 6분 후에도 상태가 계속CREATION_IN_PROGRESS
으로 유지되면 서비스의 시스템 오류로 인해 규칙 생성이 실패했음을 의미합니다. 규칙을 삭제하고 새 규칙을 다시 만들 수 있습니다.
스트리밍 규칙이 생성되면 볼 수 있습니다 .
스트림 업데이트
새 스트리밍 규칙을 업데이트할 때 다음 필드가 모두 필요합니다. 다음은 스트리밍 규칙을 업데이트하는 예입니다.
AWS 키네시스 파이어호스:
mutation { streamingExportUpdateRule( id: RULE_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "YOUR_NRQL_QUERY" payloadCompression: DISABLED } awsParameters: { awsAccountId: "YOUR_AWS_ACCOUNT_ID" deliveryStreamName: "FIREHOSE_STREAM_NAME" region: "SPECIFY_AWS_REGION" role: "firehose-role" } ) { id status }}
Azure 이벤트 허브:
mutation { streamingExportUpdateRule( id: RULE_ID ruleParameters: { description: "ADD_RULE_DESCRIPTION" name: "PROVIDE_RULE_NAME" nrql: "YOUR_NRQL_QUERY" payloadCompression: DISABLED } azureParameters: { eventHubConnectionString: "YOUR_EVENT_HUB_SAS_CONNECTION_STRING" eventHubName: "YOUR_EVENT_HUB_NAME" } ) { id status }}
업데이트할 때 메시지 필드에 "내보내기 규칙이 업데이트되고 있으며 프로세스를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 나중에 다시 확인해 주세요.” 완전히 업데이트되는 데 최대 6분이 소요될 수 있습니다.
규칙을 검색하기 위해 streamingRule
를 호출하여 규칙이 업데이트되었는지 확인할 수 있습니다. 규칙이 업데이트되는 기간 동안 규칙이 잠기고 규칙에 대해 다른 변형 작업을 수행할 수 없습니다. 동일한 규칙에 대해 다른 변형 작업을 수행하려고 하면 "현재 내보내기 규칙이 다른 요청에 의해 업데이트되고 있습니다. 잠시 기다렸다가 나중에 다시 시도하십시오."라는 메시지가 표시됩니다. 사용자는 삭제된 규칙을 제외한 모든 상태의 규칙을 업데이트할 수 있습니다.
스트림 비활성화
규칙을 비활성화하려면 규칙 ID만 제공하면 됩니다. 다음은 스트림을 비활성화하는 예입니다.
mutation { streamingExportDisableRule(id: RULE_ID) { id status message }}
규칙 상태가 ENABLED
인 경우에만 규칙을 비활성화할 수 있습니다. 다른 상태에 있는 규칙을 비활성화하려고 하면 "허용되지 않는 상태로 인해 내보내기 규칙을 활성화하거나 비활성화할 수 없습니다."라는 오류 메시지가 반환됩니다. 다른 변형이 수행되어 규칙이 잠긴 경우 규칙을 비활성화할 수 없습니다.
스트림 활성화
규칙을 활성화하려면 규칙 ID만 제공하면 됩니다. 다음은 스트림을 활성화하는 예입니다.
mutation { streamingExportEnableRule(id: RULE_ID) { id status message }}
상태가 DISABLED
인 경우에만 규칙을 활성화할 수 있습니다. 다른 상태의 규칙을 활성화하려고 하면 "허용되지 않는 상태로 인해 내보내기 규칙을 활성화하거나 비활성화할 수 없습니다."와 같은 오류 메시지가 반환됩니다. 수행 중인 다른 변형으로 인해 규칙이 잠긴 경우 규칙을 활성화할 수 없습니다.
스트림 삭제
스트림을 삭제하려면 규칙 ID를 제공해야 합니다. 다음은 예입니다.
mutation { streamingExportDeleteRule(id: RULE_ID) { id ... }}
삭제는 이미 삭제되지 않은 상태의 규칙에서 수행할 수 있습니다. 규칙을 삭제하면 다시 활성화할 수 없습니다. 규칙 ID로 steamingRule
API를 호출하면 삭제 후 처음 24시간 이내에 규칙을 계속 볼 수 있습니다. 24시간이 지나면 NerdGraph를 통해 더 이상 규칙을 검색할 수 없습니다.
스트림 보기
계정 ID 및 규칙 ID를 쿼리하여 특정 스트림 규칙에 대한 정보를 쿼리할 수 있습니다. 다음은 예입니다.
AWS 키네시스 파이어호스:
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRule(id: "RULE_ID") { aws { awsAccountId deliveryStreamName region role } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
Azure 이벤트 허브:
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRule(id: "RULE_ID") { azure { eventHubConnectionString eventHubName } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
모든 기존 스트림을 쿼리할 수도 있습니다. 다음은 예입니다.
{ actor { account(id: YOUR_NR_ACCOUNT_ID) { streamingExport { streamingRules { aws { awsAccountId region deliveryStreamName role } azure { eventHubConnectionString eventHubName } createdAt description id message name nrql status updatedAt payloadCompression } } } }}
수출 압축 이해
선택적으로, 페이로드를 내보내기 전에 압축할 수 있지만 이 기능은 기본적으로 비활성화되어 있습니다. 이를 통해 수집된 데이터 한도에 도달하는 것을 방지하고 유출 비용을 절감할 수 있습니다.
ruleParameters
아래의 payloadCompression
필드를 사용하여 압축을 활성화할 수 있습니다. 이 필드는 다음 값 중 하나일 수 있습니다.
DISABLED
: 페이로드는 내보내기 전에 압축되지 않습니다. 지정하지 않으면payloadCompression
이 값을 기본값으로 사용합니다.GZIP
: 내보내기 전에 GZIP 형식으로 페이로드를 압축합니다.
GZIP은 현재 사용할 수 있는 유일한 압축 형식이지만 앞으로 더 많은 형식을 사용할 수 있도록 선택할 수도 있습니다.
기존 AWS 내보내기 규칙에서 압축이 활성화되면 Kinesis Firehose의 다음 메시지에 압축된 데이터와 압축되지 않은 데이터가 모두 포함될 수 있습니다. 이는 Kinesis Firehose 내의 버퍼링 때문입니다. 이를 방지하려면 압축을 활성화하기 전에 내보내기 규칙을 일시적으로 비활성화하거나 압축된 데이터만 흐르도록 새 Kinesis Firehose 스트림을 생성할 수 있습니다.
이 문제가 발생하고 S3 또는 다른 파일 스토리지 시스템으로 내보내는 경우 다음 단계에 따라 데이터의 압축된 부분을 볼 수 있습니다.
- 개체를 수동으로 다운로드합니다.
- 압축된 데이터를 새 파일에 복사하여 개체를 두 개의 개별 파일로 분리합니다.
- 새로운 압축 전용 데이터 파일의 압축을 풉니다.
압축된 데이터가 있으면 이를 S3(또는 사용 중인 다른 서비스)에 다시 업로드하고 이전 파일을 삭제할 수 있습니다.
S3 또는 다른 파일 스토리지 시스템에서는 객체가 연속적으로 추가되는 여러 GZIP 인코딩 페이로드로 구성될 수 있다는 점에 유의하세요. 따라서 압축 해제 라이브러리에는 이러한 연결된 GZIP 페이로드를 처리할 수 있는 기능이 있어야 합니다.
AWS의 자동 압축 풀기
데이터가 AWS에 도착하면 자동으로 압축을 풀 수 있는 옵션이 필요할 수 있습니다. 해당 데이터를 S3 버킷으로 스트리밍하는 경우 자동 압축 풀기를 활성화하는 두 가지 방법이 있습니다.
Azure의 자동 압축 풀기
데이터를 Azure로 내보내는 경우 Stream Analytics 작업을 사용하여 이벤트 허브에 저장된 개체의 압축이 풀린 버전을 볼 수 있습니다. 이렇게 하려면 다음 단계를 따르세요.
- 이 가이드를 16단계까지 따르세요.
- 13단계에서는 아무것도 중단하지 않고 출력과 동일한 이벤트 허브를 사용하도록 선택할 수 있지만, 17단계로 진행하여 작업을 시작하려는 경우에는 테스트되지 않았으므로 권장하지 않습니다.
- 스트리밍 분석 작업의 왼쪽 창에서 Inputs 클릭한 다음 설정한 입력을 클릭합니다.
- 오른쪽에 나타나는 창 아래쪽으로 스크롤하고 다음 설정으로 입력을 구성합니다.
- 이벤트 직렬화 형식: JSON
- 인코딩: UTF-8
- 이벤트 압축 유형: GZip
- 창 하단에서 Save 클릭합니다.
- 화면 측면에서 Query 클릭합니다. 이제 Input preview 탭을 사용하여 이 화면에서 이벤트 허브를 쿼리할 수 있습니다.