Tracking von Bereitstellungen
Sie können die New Relic-Funktion Änderungen verfolgen aktivieren, um Bereitstellungsereignisse in Ihrem Commerce in einem Cloud-Infrastrukturprojekt zu überwachen.
Die Datenerfassung für Bereitstellungen hilft bei der Analyse der Auswirkungen von Bereitstellungsänderungen auf die Gesamtleistung, z. B. CPU, Arbeitsspeicher, Antwortzeit und mehr. Siehe Änderungen mit NerdGraph verfolgen in der New Relic-Dokumentation.
NR_API_URL
: New Relic-API-Endpunkt, in diesem Fall NerdGraph-API-URLhttps://api.newrelic.com/graphql
NR_API_KEY
: Erstellen eines Benutzerschlüssels, siehe New Relic-API-Schlüssel in der New Relic-Dokumentation.NR_APP_GUID
: Eine Entität, die Daten an New Relic meldet, hat eine eindeutige ID (GUID). Um beispielsweise in einer Staging-Umgebung zu aktivieren, passen Sie die Cloud-Variable Staging-UmgebungNR_APP_GUID
die Staging-Entitäts-GUID von New Relic an. Siehe das Erfahren Sie mehr über New Relic und NerdGraph-Tutorial: Anzeigen von Entitätsdaten in der New Relic-Dokumentation.
Tracking-Bereitstellungen aktivieren
Verfolgen Sie die Bereitstellungsereignisse Ihres Commerce-Projekts in New Relic, indem Sie eine script-Integration erstellen.
So aktivieren Sie die Tracking-Bereitstellungen:
-
Wechseln Sie auf Ihrer lokalen Workstation in Ihr Projektverzeichnis.
-
Erstellen Sie eine
action-integration.js
. Kopieren Sie den folgenden Code, fügen Sie ihn in dieaction-integration.js
ein und speichern Sie ihn: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();
-
Erstellen Sie eine script-Integration mit dem
magento-cloud
CLI-Befehl und verweisen Sie auf dieaction-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>
Beispielantwort:
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(); | | | | +-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------+
-
Notieren Sie sich die Integrations-ID für die spätere Verwendung. In diesem Beispiel lautet die ID:
code language-none Created integration 767u4hathojjw (type: script)
Optional können Sie die Integration überprüfen und die Integrations-ID notieren, indem Sie Folgendes verwenden:
magento-cloud integration:list
-
Erstellen Sie die Umgebungsvariable unter Verwendung der Voraussetzungen .
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>
-
Überprüfen Sie das letzte Aktivitätsprotokoll.
code language-bash magento-cloud integration:activity:log <INTEGRATION_ID> -p <YOUR_PROJECT_ID> -e <YOUR_ENVIRONMENT_ID>
Antwort:
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"}}}
-
Melden Sie sich bei Ihrem New Relic-Konto an.
-
Klicken Sie im Navigationsmenü des Explorers auf APM & Services. Wählen Sie Ihre Name und Account aus.
-
Klicken unter Ereignisse Change tracking auf.