ํต์ฌ๋ก
newrelic.addPageAction(string $name[, JSON object $attributes])
์ด๋ฆ ๋ฐ ์ ํ์ ์์ฑ๊ณผ ํจ๊ป ๋ธ๋ผ์ฐ์ PageAction ์ด๋ฒคํธ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
์๊ตฌ ์ฌํญ
Browser Pro ๋๋ Pro+SPA ์์ด์ ํธ(v593 ์ด์)
npm์ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ด์ ํธ๋ฅผ ์ค์นํ๋ ๊ฒฝ์ฐ
BrowserAgent
ํด๋์ค๋ฅผ ์ธ์คํด์คํํ ๋generic_events
๊ธฐ๋ฅ์ ํ์ฑํํด์ผ ํฉ๋๋ค.features
๋ฐฐ์ด์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.import { GenericEvents } from '@newrelic/browser-agent/features/generic_events';const options = {info: { ... },loader_config: { ... },init: { ... },features: [GenericEvents]}์์ธํ ๋ด์ฉ์ npm ๋ธ๋ผ์ฐ์ ์ค์น ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋ช
์ด API ํธ์ถ์ ์ฌ์ฉ์ ์ ์ ์ด๋ฆ ๋ฐ ์ ํ์ ์์ฑ์ด ํฌํจ๋ ๋ธ๋ผ์ฐ์ PageAction
์ด๋ฒคํธ ๋ฅผ ์ฌ๋ฌ ๊ธฐ๋ณธ ์์ฑ ๊ณผ ํจ๊ป๋์๋ณด๋ ๋ก ๋ณด๋
๋๋ค. ์ด๋ ๊ตฌ๋
๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ์์ต์์ ์ก์ธ์คํ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์์ด์ ํธ์์ ์๋์ผ๋ก ์ถ์ ํ์ง ์๋ ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
PageAction
์ด๋ฒคํธ๋ ๋ธ๋ผ์ฐ์ ๋น 30์ด ์์ง ์ฃผ๊ธฐ๋น ์ต๋ 120๊ฐ์ ์ด๋ฒคํธ๋ก 30์ด๋ง๋ค ์ ์ก๋ฉ๋๋ค.- 120๊ฐ ์ด๋ฒคํธ ์ ํ์ ๋๋ฌํ๋ฉด ํด๋น ์ํ ์ฃผ๊ธฐ์ ๋ํ ์ถ๊ฐ ์ด๋ฒคํธ๊ฐ ์บก์ฒ๋์ง ์์ต๋๋ค.
๋งค๊ฐ๋ณ์
๋งค๊ฐ๋ณ์ | ์ค๋ช |
---|---|
๋ | ํ์์. ์์
์ ์ด๋ฆ ๋๋ ๋ฒ์ฃผ์
๋๋ค. ์์ฑ์ด๋ ๊ฐ์ ์ด๋ฆ์ ์ง์ ํ ๋ ์์ฝ๋ NRQL ๋จ์ด ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. |
JSON ๊ฐ์ฒด | ์ ํ ๊ณผ๋ชฉ. ํ๋ ์ด์์ ํค/๊ฐ ์์ด ์๋ JSON ๊ฐ์ฒด. ์: ์์ฑ/๊ฐ์ ์ด๋ฆ์ ์ง์ ํ ๋ ์์ฝ๋ NRQL ๋จ์ด ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. |
์
๋งํฌ ํด๋ฆญ ๊ธฐ๋ก(JavaScript)
์ด ์์์๋ ์ฌ์ฉ์๊ฐ Try Me ๋งํฌ๋ฅผ ์ ํํ ๋๋ง๋ค PageAction ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฒคํธ๋ clickedTryMe
์ actionName
์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
<a href="/demo" id="try-me">Try Me!</a><script> document.getElementById('try-me').addEventListener('click', function (e) { newrelic.addPageAction('clickedTryMe'); });</script>
๊ทธ๋ฐ ๋ค์ ๋ค์ NRQL ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ํ๊ธฐ ๋ฒํผ์ ํด๋ฆญํ ํ์๋ฅผ ์ฟผ๋ฆฌํ ์ ์์ต๋๋ค.
SELECT count(*) FROM PageAction WHERE actionName = 'clickedTryMe' SINCE 1 hour ago
๋งํฌ ํด๋ฆญ ๊ธฐ๋ก(jQuery)
์ด ์๋ ์ฌ์ฉ์๊ฐ ํด๋์ค๊ฐ copy-text
์ธ ์์๋ฅผ ํด๋ฆญํ ๋ PageAction ์ด๋ฒคํธ๋ฅผ ๋ณด๋
๋๋ค. actionName
์ copy-text-button
์ด๊ณ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ success
๋ฐ error
๋ผ๋ ๋ฉ์๋์ ํด๋นํ๋ Result
์ด๋ผ๋ ๋ค๋ฅธ ์์ฑ์ผ๋ก ๋ณด๊ณ ๋ฉ๋๋ค.
$('.copy-text').click(function() { var clipboard = new Clipboard('.copy-text'); clipboard.on('success', function(event) { // Do stuff // Report data to New Relic if (typeof newrelic == 'object') { newrelic.addPageAction('copy-text-button', { result: 'success' }); } }); clipboard.on('error', function(event) { // Do stuff // Report data to New Relic if (typeof newrelic == 'object') { newrelic.addPageAction('copy-text-button', { result: 'error' }); } });});
๊ทธ๋ฐ ๋ค์ ์ฟผ๋ฆฌ ์์ฑ๊ธฐ์์ ํ์ด ์ฐจํธ๋ฅผ ๋ง๋ค์ด ์ง๋ 30์ผ ๋์ ์ฑ๊ณต๊ณผ ์ค๋ฅ๋ก ์ด์ด์ง ๋ฒํผ ํด๋ฆญ ์๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
SELECT count(*) AS 'Clicks' FROM PageAction WHERE actionName = 'copy-text-button' FACET result SINCE 30 days ago
๋๋ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด ์ง๋ 30์ผ ๋์ ๊ฐ์ฅ ๋ง์ ๋ณต์ฌ ๋ฒํผ ํด๋ฆญ์ด ๋ฐ์ํ ํ์ด์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
SELECT count(*) AS 'Clicks' FROM PageAction WHERE actionName = 'copy-text-button' FACET currentUrl SINCE 30 days ago
์บก์ฒ ์์ ์ ๋ ฅ
์ด ์๋ Signup ์ด๋ผ๋ ์์์์ ์ฌ์ฉ์ ์
๋ ฅ(์ด๋ฉ์ผ ์ฃผ์)์ ์บก์ฒํฉ๋๋ค. ์ด๋ฒคํธ๋ userSignup
์ actionName
์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
<form action="/signup" id="myform"> <input id="email" name="email" /> <input type="submit" value="Signup" /></form><script type="text/javascript"> document.getElementById('myform').addEventListener('submit', function (e) { var email = e.target.elements['email'].value; newrelic.addPageAction('userSignup', { email: email }); });</script>
๊ทธ๋ฌ๋ฉด ๋ค์ NRQL ์ฟผ๋ฆฌ๋ก ์์งํ ์ด๋ฉ์ผ์ ๋ณผ ์ ์์ต๋๋ค.
SELECT uniques(email) FROM PageAction WHERE actionName = 'userSignup' SINCE 1 hour ago