• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

타사 서비스에서 데이터 가져오기

이 강의는 처음부터 New Relic 제작 방법을 가르치는 과정의 일부입니다. 아직 확인하지 않았다면 개요를 확인하세요.

코스의 각 레슨은 마지막 레슨을 기반으로 하므로 이 레슨을 시작하기 전에 마지막 레슨인 Nerdlet에서 NerdStorageVault에 액세스를 완료했는지 확인하세요.

이전 강의에서는 New Relic 피규어의 Total cancellations per version [버전별 총 취소 수] 차트에 대한 모의 취소 데이터를 가져오는 데 사용할 수 있는 타사 서비스에 대해 배웠습니다. 이 서비스의 데이터는 가짜이지만, 이 강의의 진정한 가치는 제3자 서비스를 사용하여 New Relic에 데이터를 제공하는 방법을 배우는 것입니다.

취소 데이터를 모의 서비스에 요청하는 경우 (https://api.nerdsletter.net/cancellations) "승인되지 않음"이라는 메시지와 함께 요청을 거부하는 응답이 표시됩니다.

bash
$
curl https://api.nerdsletter.net/cancellations
Unauthorized

이는 Nerdsletter API에 Authorization 헤더가 필요하기 때문입니다. 보다 구체적으로, 데이터에 대한 승인된 액세스 권한을 얻으려면 ABC123 의 전달자 토큰을 전달해야 합니다. Authorization: Bearer ABC123 헤더를 사용하여 서비스에 요청하면 모의 취소 데이터로 성공적인 응답을 받게 됩니다.

bash
$
curl https://api.nerdsletter.net/cancellations -H 'Authorization: Bearer ABC123'
{"a": 15, "b": 78}

지난 강의에서는 NerdGraph 을 사용하여 이 API New Relic의 NerdStorageVault 데이터 저장소에 저장했습니다. 또한 해당 내용을 TotalCancellations 구성요소에 전달하고 해당 사용을 브라우저 콘솔에 로그인했습니다. 이 강의에서는 인증 토큰을 사용하여 Nerdsletter API에 대한 실제 요청으로 해당 로그 문을 추적합니다. 그런 다음 해당 외부 리소스의 데이터를 Total cancellations per version [버전별 총 취소 수] 차트에 제공합니다.

교과 과정 저장소 의 third-party-services/ab-test 디렉터리로 변경합니다.

bash
$
cd nru-programmability-course/third-party-services/ab-test

이 디렉토리에는 과정의 이 시점에서 귀하의 애플리케이션이 가질 것으로 예상되는 코드가 포함되어 있습니다. 각 레슨을 시작할 때 올바른 디렉토리로 이동하면 사용자 정의 코드를 남겨두어 한 레슨에서 다음 레슨으로 잘못된 코드가 전달되는 것을 방지할 수 있습니다.

nerdlets/ab-test-nerdlet/total-cancellations.js 에서 API 토큰을 사용하여 api.nerdsletter.net 에 요청합니다. 결과를 상태에 저장하고 해당 상태를 render() 에서 사용합니다.

import React from 'react';
import { HeadingText, PieChart } from 'nr1';
export default class TotalCancellations extends React.Component {
constructor() {
super(...arguments);
this.state = {
cancellations: [],
lastToken: null
}
}
generateChartData(data) {
const cancellationsA = data ? data.a : 0;
const cancellationsB = data ? data.b : 0;
return [
{
metadata: {
id: 'cancellations-A',
name: 'Version A',
viz: 'main',
color: 'blue',
},
data: [
{ y: cancellationsA },
],
},
{
metadata: {
id: 'cancellations-B',
name: 'Version B',
viz: 'main',
color: 'green',
},
data: [
{ y: cancellationsB },
],
},
]
}
componentDidUpdate() {
if (this.props.token && this.props.token != this.state.lastToken) {
console.log(`Requesting data with api token ${this.props.token}`)
fetch(
"https://api.nerdsletter.net/cancellations",
{headers: {"Authorization": `Bearer ${this.props.token}`}}
).then(
(response) => {
if (response.status == 200) {
return response.json()
} else if (response.status == 401) {
console.error("Incorrect auth header")
} else {
console.error(response.text())
}
}
).then(
(data) => {
if (data) {
this.setState({
cancellations: this.generateChartData(data),
lastToken: this.props.token
})
}
}
)
}
}
render() {
return <div>
<HeadingText className="chartHeader">
Total cancellations per version
</HeadingText>
<PieChart data={this.state.cancellations} fullWidth />
</div>
}
}

이 코드에서는 이전에 하드코딩된 값 대신 각 계열의 y 값에 대해 0으로 TotalCancellations.state.cancellations 초기화합니다. 이는 New Relic 앱이 Nerdsletter API 에서 데이터를 성공적으로 요청하지 않은 경우 차트에 표시되는 내용을 보다 현실적으로 표현하는 데 도움이 됩니다. 다음으로 자바스크립트의 fetch() 함수를 사용하여 Nerdsletter API에 HTTP 요청을 보냅니다. 그런 다음 요청의 Authorization 헤더에 토큰을 전달합니다. 요청이 성공하면 해당 데이터가 구성요소의 렌더링 메서드에 반영되도록 TotalCancellations.state 에서 취소 데이터를 업데이트합니다.

nru-programmability-course/third-party-service/ab-test 에서 Nerdpack의 루트로 이동합니다.

Nerdpack에 대한 새 UUID를 생성하십시오.

bash
$
nr1 nerdpack:uuid -gf

기존 Nerdpack이 포함된 교과 과정 저장소를 복제했으므로 고유한 식별자를 생성해야 합니다. 이 UUID는 Nerdpack을 New Relic 계정에 매핑합니다. 또한 앱이 귀하의 계정을 대신하여 Nerdgraph 요청을 할 수 있도록 허용합니다.

애플리케이션을 로컬로 제공합니다.

bash
$
nr1 nerdpack:serve

https://one.newrelic.com?nerdpacks=local 로 이동하여 Apps [앱] > Your apps [클릭하면] 아래에서 애플리케이션을 확인하세요.

NerdStorageVault 의 토큰이 &quot;ABC123&quot;이 아닌 경우 콘솔에 &quot;잘못된 인증 헤더&quot;라는 오류가 표시됩니다.

토큰을 "ABC123"으로 설정하면 Total cancellations per version [버전별 총 취소 수가] 업데이트되어 타사 서비스의 값이 표시됩니다.

문제가 작동하지 않으면 브라우저의 디버그 도구를 사용하여 문제를 식별해 보세요.

다음 사항을 확인하세요.

  • 강의에서 코드를 올바르게 복사했습니다.
  • 새로운 UUID를 생성했습니다.
  • 프로젝트의 <YOUR NEW RELIC ACCOUNT ID> 의 모든 vit을 실제 뉴렐릭 계정 ID로 교체했습니다.

작업이 끝나면 로컬 서버의 터미널 창에서 CTRL+C 눌러 New Relic 피규어 제공을 중지하세요.

잘 했어! 처음으로 nr1 nerdpack:create 실행하여 먼 길을 왔습니다.

다양한 스타일로 8개의 차트를 만들고 여러 소스의 동적 데이터를 제공했습니다. 지금까지 New Relic One SDK에 대해 알아보고 다양한 구성 요소를 사용해 보았습니다. 타사 서비스에서 데이터를 수집하고 이를 New Relic 데이터와 자연스럽게 혼합하여 A/B 테스트의 경쟁 버전이 서로 어떻게 수행되는지 완벽하게 보여줍니다.

여기에는 아직 손에 넣지 않은 New Relic One SDK의 API 세트가 하나 더 있습니다: Platform API. 이는 New Relic 제작의 유용성을 향상시키는 데 도움이 될 것입니다.

이 강의는 처음부터 New Relic 제작 방법을 가르치는 과정의 일부입니다. 다음 단원으로 계속 진행하세요. nerdlet에 PlatformStateContext를 추가하세요.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.