배포 추적
New Relic 변경 내용 추적 기능을 사용하여 Commerce on cloud infrastructure 프로젝트에서 배포 이벤트를 모니터링할 수 있습니다.
배포 데이터 수집은 배포 변경이 CPU, 메모리, 응답 시간 등과 같은 전체 성능에 미치는 영향을 분석하는 데 도움이 됩니다. New Relic 설명서 에서 NerdGraph를 사용하여 변경 내용 추적을 참조하십시오.
NR_API_URL
: New Relic API 끝점(이 경우 NerdGraph API URLhttps://api.newrelic.com/graphql
)NR_API_KEY
: 사용자 키를 만듭니다. New Relic 설명서에서 New Relic API 키를 참조하십시오.NR_APP_GUID
: New Relic에 데이터를 보고하는 엔터티에 고유 ID(GUID)가 있습니다. 예를 들어 스테이징 환경에서 활성화하려면 New Relic의 스테이징 엔터티 GUID 를 사용하여 스테이징 환경NR_APP_GUID
클라우드 변수를 조정하십시오. New Relic 설명서에서 New Relic 엔터티에 대해 알아보기 및 NerdGraph 자습서: 엔터티 데이터 보기를 참조하십시오.
배포 추적 활성화
스크립트 통합을 만들어 New Relic에서 Commerce 프로젝트 배포 이벤트를 추적합니다.
추적 배포를 사용하려면:
-
로컬 워크스테이션에서 프로젝트 디렉터리로 변경합니다.
-
action-integration.js
파일을 만듭니다. 다음 코드를 복사하여action-integration.js
파일에 붙여 넣고 저장합니다.code language-javascript function trackDeployments() { const envName = activity.payload.environment.name; let variables; activity.payload.deployment.variables.forEach(function(variable) { if (variable.name === "env:NR_CONFIG") { variables = variable.value; } }); const config = JSON.parse(variables.replace(/'/g, '"')); const commitSha = activity.payload.commits ? activity.payload.commits[0].sha : activity.payload.environment.head_commit; const deploymentType = activity.type; if (!(envName in config)) { throw new Error('There is no configuration for ' + envName); } const configEnv = config[envName]; if (!configEnv.NR_APP_GUID || !configEnv.NR_API_KEY || !configEnv.NR_API_URL) { throw new Error('You must define the next configuation in the env variable NR_CONFIG: NR_APP_GUID, NR_API_KEY and NR_API_URL'); } const query = `mutation { changeTrackingCreateDeployment( deployment: { version: "${commitSha}", entityGuid: "${configEnv.NR_APP_GUID}", commit: "${commitSha}", changelog: "${deploymentType}" } ) { deploymentId entityGuid } }`; var resp = fetch(configEnv.NR_API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'API-Key': configEnv.NR_API_KEY }, body: JSON.stringify({ query }) }); if (!resp.ok) { console.log('Sending new relic change tracking failed: ' + resp.text()); } else { console.log(resp.text()); } } trackDeployments();
-
magento-cloud
CLI 명령을 사용하여 script 통합을 만들고action-integration.js
파일을 참조합니다.code language-bash magento-cloud integration:add --type script --events='environment.restore, environment.push, environment.branch, environment.activate, environment.synchronize, environment.initialize, environment.merge, environment.redeploy, environment.variable.create, environment.variable.delete, environment.variable.update' --file ./action-integration.js --project=<YOUR_PROJECT_ID> --environments=<YOUR_ENVIRONMENT_ID>
샘플 응답:
code language-none Created integration 767u4hathojjw (type: script) +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | Property | Value | +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------+ | id | 767u4hathojjw | | type | script | | role | | | events | - environment.restore | | | - environment.push | | | - environment.branch | | | - environment.activate | | | - environment.synchronize | | | - environment.initialize | | | - environment.merge | | | - environment.redeploy | | | - environment.variable.create | | | - environment.variable.delete | | | - environment.variable.update | | environments | - staging | | | - production | | excluded_environments | { } | | states | - complete | | result | * | | script | function variables() { | | | var vars = {}; | | | activity.payload.deployment.variables.forEach(function(variable) { | | | vars[variable.name] = variable.value; | | | }); | | | return vars; | | | } | | | | | | function trackDeployments() { | | | const envName = activity.payload.environment.name; | | | | | | const config = JSON.parse(variables()['env:NR_CONFIG'].replace(/'/g, '"')); | | | const commitSha = activity.payload.commits ? activity.payload.commits[0].sha : activity.payload.environment.head_commit; | | | const deploymentType = activity.type; | | | | | | if (!(envName in config)) { | | | throw new Error('There is no configuration for ' + envName); | | | } | | | | | | const configEnv = config[envName]; | | | | | | if (!configEnv.NR_APP_GUID || !configEnv.NR_API_KEY || !configEnv.NR_API_URL) { | | | throw new Error('You must define the next configuation in the env variable NR_CONFIG: NR_APP_GUID, NR_API_KEY and NR_API_URL'); | | | } | | | | | | const query = `mutation { | | | changeTrackingCreateDeployment( | | | deployment: { | | | version: "${commitSha}", | | | entityGuid: "${configEnv.NR_APP_GUID}", | | | commit: "${commitSha}", | | | changelog: "${deploymentType}" | | | } | | | ) { | | | deploymentId | | | entityGuid | | | } | | | }`; | | | | | | var resp = fetch(configEnv.NR_API_URL, { | | | method: 'POST', | | | headers: { | | | 'Content-Type': 'application/json', | | | 'API-Key': configEnv.NR_API_KEY | | | }, | | | body: JSON.stringify({ | | | query | | | }) | | | }); | | | | | | if (!resp.ok) { | | | console.log('Sending new relic change tracking failed: ' + resp.text()); | | | } else { | | | console.log(resp.text()); | | | } | | | } | | | | | | trackDeployments(); | | | | +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
-
나중에 사용할 수 있도록 통합 ID를 메모해 두십시오. 이 예에서 ID는 다음과 같습니다.
code language-none Created integration 767u4hathojjw (type: script)
필요한 경우
magento-cloud integration:list
을(를) 사용하여 통합을 확인하고 통합 ID를 확인할 수 있습니다. -
사전 요구 사항을 사용하여 환경 변수를 만듭니다.
code language-bash magento-cloud variable:create --level project --name=env:NR_CONFIG --value='{"<YOUR_ENVIRONMENT_ID>":{"NR_API_KEY": "<YOUR_API_KEY>", "NR_API_URL": "https://api.newrelic.com/graphql", "NR_APP_GUID":"<YOUR_APP_GUID>"}}' -p <YOUR_PROJECT_ID>
-
마지막 활동 로그를 검토합니다.
code language-bash magento-cloud integration:activity:log <INTEGRATION_ID> -p <YOUR_PROJECT_ID> -e <YOUR_ENVIRONMENT_ID>
응답:
code language-none Integration ID: 767u4hathojjw Activity ID: poxqidsfajkmg Type: integration.script Description: Running activity script Created: 2023-08-28T20:32:02+00:00 State: complete Log: HTTP request HTTP response {"data":{"changeTrackingCreateDeployment":{"deploymentId":"some-deployment-id","entityGuid":"SomeGUIDhere"}}}
-
New Relic 계정에 로그인합니다.
-
Explorer 탐색 메뉴에서 APM & Services 을(를) 클릭합니다. 환경 Name 및 Account을(를) 선택하십시오.
-
이벤트 에서 Change tracking 을(를) 클릭합니다.