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

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

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

문제 신고

종합 모니터링 모범 사례 가이드

종합 모니터링을 사용하면 최종 사용자에게 영향을 미치기 전에 앱을 모니터링 및 테스트하고 문제를 해결할 수 있습니다. 다음은 이 기능을 최대한 활용할 수 있는 5가지 팁입니다.

신세틱스 모니터를 선택하세요

합성 모니터는 웹 사이트의 성능을 측정하고 로드 시간, 가동 시간 및 평균 다운로드 크기에 대한 집계 수치를 캡처하는 가상 브라우저입니다. 또한 다운타임 사고 및 각 페이지 리소스에 대한 자세한 통계에 액세스할 수 있습니다.

모니터링하려는 대상과 수행 방법에 따라 선택할 수 있는 7가지 유형의 합성 모니터 가 있습니다. 예를 들어, 단계 모니터 는 코드를 작성하지 않고 기본적으로 스크립트 브라우저로 작동하는 것을 생성하는 좋은 방법입니다. 합성 모니터의 자동화된 관리를 찾고 있다면 NerdGraph API 를 사용하여 API 호출을 통해 합성 모니터를 생성, 업데이트 및 삭제할 수 있습니다.

합성 모니터 추가

  1. 모니터를 추가하려면 one.newrelic.com > All capabilities > Synthetic Monitoring 으로 이동하세요.

    EU 기반 계정이 있는 경우 one.eu.newrelic.com 로 이동하세요.

  2. Create monitor 을(를) 클릭합니다.

  3. 모니터 유형을 선택한 다음 모든 필수 필드를 채우십시오.

  4. 태그를 추가하거나 기간을 변경하거나 다른 런타임 버전 을 선택할 수 있습니다. ping 및 단순 브라우저 모니터의 경우 유효성 검사 문자열을 추가할 수 있습니다. 고급 옵션을 사용하여 다음 유형의 응답 유효성 검사에 대한 하위 문자열 모니터링을 활성화할 수 있습니다.

    • Verify SSL (for ping and simple browser). 이 옵션은 SSL 인증서 체인의 유효성을 확인합니다. 다음 구문을 실행하여 복제할 수 있습니다.

      bash
      $
      openssl s_client -servername {YOUR_HOSTNAME} -connect {YOUR_HOSTNAME}:443 -CApath /etc/ssl/certs > /dev/null
    • Bypass HEAD request (for ping monitors). 이 옵션은 기본 HEAD 요청을 건너뛰고 대신 ping 확인과 함께 GET 동사를 사용합니다. HEAD 요청이 실패하면 GET 요청이 항상 발생합니다.

    • Redirect is Failure (for ping). Redirect is Failure 가) 활성화되었을 때 리디렉션 결과가 발생하면 신세틱스 모니터는 리디렉션을 따르고 결과 URL을 확인하는 대신 이를 실패로 분류합니다.

  5. 모니터를 실행할 위치를 선택하십시오. 가양성을 피하기 위해 최소 3개의 위치를 선택하는 것이 좋습니다. 다시 말해, 적어도 하나의 위치가 성공적인 결과를 반환하면 끝점이 작동 중이어야 하고 경고 트리거를 피할 수 있습니다.

  6. 모니터 유형에 따라 Save monitor, Validate 또는 Write script 중 하나가 됩니다.

  7. 요약 페이지 에서 받은 결과를 확인하세요.

신세틱스 모니터 요약 페이지 보기

요약 페이지에는 신세틱스 모니터 상태에 대한 정보가 표시됩니다. 공지를 촉발한 활성 인시던트가 생성된 경우 중요 알림 링크를 클릭하여 새 창을 엽니다.

애플리케이션 성능 개요를 확인하세요.

웹 서비스가 제대로 작동하고, 예상대로 작동하고, 오류가 없는지 확인하려면 애플리케이션 성능 결과에 지속적으로 액세스해야 합니다. 신규 모니터링은 선택한 각 위치에 대해 웹에서 자동화된 테스트를 수행하여 이러한 유형의 보증을 제공합니다. 귀하의 신세틱스 모니터는 다운타임을 기록하고 각 페이지 리소스에 대해 집계된 숫자, 결과 및 자세한 통계를 수집합니다.

실패한 모니터를 빠르게 식별하려면 신세틱스 모니터 페이지의 색인을 사용하여 인시던트가 열려 있는 모니터, 24시간 동안의 성공률, 실패한 위치 수, 모니터 기간 및 모니터 유형을 확인할 수 있습니다. 모니터를 클릭하면 특정 모니터가 실패한 위치, 실패한 이유(예: 마지막 오류 메시지, 오류 응답 코드, 도메인별 기간 등)를 평가할 수 있는 정보를 찾을 수 있는 요약 페이지 로 이동하게 됩니다. 더. 이 정보를 통해 귀하는 시간이 지남에 따라 귀하의 인사이트 성능에 대해 더욱 깊이 있게 이해하게 될 것입니다.

엔터티 목록에서 모니터 보기

개별 모니터 결과 보기

전 세계 다양한 지역에서 웹 앱에 액세스할 때 웹 앱의 성능을 볼 수 있습니다. 결과 페이지에는 개발부터 생산까지 모든 것이 사용자 경험에 어떤 영향을 미치는지 보여줍니다. 나열된 항목을 정렬하여 문제 영역이나 비정상적인 결과를 더 잘 식별할 수 있습니다. 위치별로 필터링하여 여러 위치의 모니터 성능을 비교해 보세요. 이것을하기 위해:

  1. one.newrelic.com > All capabilities > Synthetic Monitoring 으)로 이동합니다.

  2. Monitor 클릭한 다음 Results 클릭합니다.

    모니터링되는 각 위치에 대해 가장 느린 페이지 로드에 대한 최신 보기를 볼 수 있습니다.

각 리소스의 로드 시간 영향 이해

신세틱스 리소스 페이지에서 사이트의 다양한 구성 요소가 전체 로드에 어떤 영향을 미치는지 확인할 수 있습니다. 이러한 구성요소는 CSS, JavaScript, 이미지, HTML 등이 될 수 있습니다. 비상에서 수집된 세부 지표를 분석하고, 타사 리소스가 소비한 시간에 대한 성능 정보를 찾고, 각 리소스에 대한 HTTP 응답 코드를 식별할 수 있습니다. 이것을하기 위해:

  1. one.newrelic.com 으로 이동한 다음 Synthetic Monitoring 클릭하세요.

  2. Monitors 드롭다운 메뉴에서 모니터를 선택합니다.

  3. Monitor 클릭한 다음 Resources 클릭합니다.

스크립트 브라우저 테스트 구성 및 개발

스크립팅된 브라우저를 사용하여 Selenium JavaScript Webdriver 바인딩으로 복잡한 모니터링 워크플로를 구축할 수 있습니다. 예를 들어, 애플리케이션에 로그인하고 특정 링크로 이동한 다음 페이지 요소가 로드되고 주장을 추가할 때까지 기다릴 수 있습니다. 이렇게 하려면 다음을 수행합니다.

  1. one.newrelic.com > All capabilities > Synthetic Monitoring 으)로 이동합니다.

  2. Create monitor 버튼을 클릭하세요.

  3. 모니터의 이름과 세부 정보를 입력하세요. 예를 들어, sitename.com 스크립트 브라우저입니다.

  4. 모니터를 실행할 위치를 선택하세요. 예를 들어 뭄바이, 서울, 콜럼버스, 몬트리올 등이 있습니다.

  5. 여기에서 모니터가 실행되는 빈도를 선택하세요. 예를 들어 5분입니다.

  6. 성능 문제가 발생할 때 팀에 알리도록 알림 방법을 설정합니다.

  7. 이제 스크립트를 작성할 준비가 되었습니다. newrelic.com 의 성능을 테스트하고 특정 요소가 로드되었는지 확인하려면 이 예제 스크립트를 참조하세요.

/**
* Script Name: Best Practices - Chrome 100
* Author: New Relic
* Version: 1.5
* Purpose: best practices example
* Reference: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/scripting-monitors/synthetic-scripted-browser-reference-monitor-versions-chrome-100/
*/
// -------------------- CONSTANTS
const SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script log
const IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds, 3 seconds x 8 findElement operations = 24 seconds, assuming all operations time out
const PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeouts
const SCRIPT_TIMEOUT = 20000 // default script timeout is 30 seconds
const USER_AGENT = "default" // set the user agent for Chrome
const PROTOCOL = "https://" // set the protocol
const USERNAME = "" // username:
const PASSWORD = "" // password@
const DOMAIN = "docs.newrelic.com" // your domain
const PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main page
const CHECK = "Need some inspiration first? Check out this intro video." // text to match on page
const AUTH = USERNAME + PASSWORD
const MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH
// -------------------- DEPENDENCIES
var assert = require("assert")
// -------------------- CONFIGURATION
await $webDriver.manage().setTimeouts({
implicit: IMPLICIT_TIMEOUT, // sets element load timeout
pageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeout
script: SCRIPT_TIMEOUT // sets script timeout
})
// -------------------- VARIABLES
var By = $selenium.By
var loc = {
video: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > article > div > div > div:nth-child(1) > div > p:nth-child(2)"),
start: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"),
e: [
{ step: 'signup', selector: By.css("#sign-up-for-new-relic-if-you-havent-already") },
{ step: 'ingest', selector: By.css("#ingest-some-data") },
{ step: 'dashboards', selector: By.css("#check-out-some-dashboards") },
{ step: 'data', selector: By.css("#add-more-data") },
{ step: 'alerting', selector: By.css("#set-up-alerting") },
{ step: 'users', selector: By.css("#add-users") }
]
}
// -------------------- FUNCTIONS
// for backwards compatibility with legacy runtimes
async function waitForAndFindElement(locator, timeout) {
const element = await $webDriver.wait(
$selenium.until.elementLocated(locator),
timeout,
"Timed-out waiting for element to be located using: " + locator
)
await $webDriver.wait(
$selenium.until.elementIsVisible(element),
timeout,
"Timed-out waiting for element to be visible using ${element}"
)
return await $webDriver.findElement(locator)
}
// -------------------- START OF SCRIPT
// Start logging
var start_time = new Date()
console.log("Starting synthetics script: " + SCRIPT_NAME)
// confirm timeouts are set
const {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts()
console.log("Timeouts are set to:")
console.log(" IMPLICIT: " + implicit / 1000 + "s")
console.log(" PAGE LOAD: " + pageLoad / 1000 + "s")
console.log(" SCRIPT: " + script / 1000 + "s")
// Setting User Agent is not then-able, so we do this first (if defined and not default)
if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") {
$headers.add("User-Agent", USER_AGENT)
console.log("Setting User-Agent to " + USER_AGENT)
}
// if an error happens at any step, script execution is halted and a failed result is returned
console.log("1. get: " + MAIN_URL)
await $webDriver.get(MAIN_URL)
console.log("2. waitForAndFindElement: " + loc.video)
const textBlock = await waitForAndFindElement(loc.video, IMPLICIT_TIMEOUT)
console.log("3. getText: " + CHECK)
const text = await textBlock.getText()
console.log("4. assert.equal: " + text)
assert.equal(text, CHECK, "validation text not found")
console.log("5. waitForAndFindElement: " + loc.start)
const platformMenu = await waitForAndFindElement(loc.start, IMPLICIT_TIMEOUT)
console.log("6. takeScreenshot")
await $webDriver.takeScreenshot()
console.log("7. findElement")
loc.e.forEach(async function (nr, i) {
let n = i + 1
try{
// verify each asset has loaded
console.log(" " + n + ". " + nr.step + ": " + nr.selector)
await $webDriver.findElement(nr.selector)
}catch(exception){
console.error("Failure in Step 7." + n)
throw exception
}
})
// End logging
var end_time = new Date()
// Calculate the duration
var script_duration = end_time - start_time
// Log the times
console.log("Start time: " + start_time)
console.log("End time: " + end_time)
console.log("Duration: " + script_duration)
Copyright © 2024 New Relic Inc.

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