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

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

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

문제 신고

NRQL 입문 튜토리얼: 첫 번째 쿼리

NRQL 이 무엇인지, NRQL이 어떻게 작동하는지, NRQL이 차트 및 대시보드와 어떻게 관련되는지와같은 다른 주제에서 NRQL의 기본 사항을 학습한 후에는 이 자습서의 예제를 시도할 준비가 된 것입니다! 이 자습서에서는 다음 방법을 포함하여 데이터를 사용하여 몇 가지 기본 NRQL 쿼리를 만드는 데 도움이 되는 언어 내의 몇 가지 기본 개념을 다룹니다.

  • SELECT 사용 및 FROM
  • 사용 LIMIT
  • 속성 지정
  • average() , max() , min() , sum() 및 사용하여 집계 count()
  • SINCE 사용 및 UNTIL
  • 다음을 사용하여 선 그래프를 플로팅합니다. TIMESERIES
  • 다음을 사용하여 필터링 WHERE
  • 다음을 사용하여 속성 그룹화 FACET

전제 조건

이 튜토리얼을 따라가려면 뉴렐릭 플랫폼으로 들어오는 일부 데이터만 있으면 됩니다. 뉴렐릭을 처음 사용하고 NRQL을 얼마나 쉽게 사용할 수 있는지 알고 싶다면 무료로 플랫폼을 시작하고 튜토리얼을 따라갈 수 있습니다. 당신이 해야 할 일은:

  1. 아직 계정이 없으시다면, 지금 무료 계정을 신청하십시오.
  2. 에이전트와 통합을 사용하여 일반적인 프레임워크와 도구에서 데이터를 자동으로 수집하세요.
  3. 뉴렐릭 설정 방법에 대한 권장 경로를 보려면 빠른 릴리스 가이드를 방문하세요. 쿼리할 데이터 수집을 시작하면 이 자습서나 이 시리즈의 다른 자습서를 사용할 준비가 모두 완료됩니다.

시작할 준비가 되셨나요? 갑시다!

1. 첫 번째 쿼리 만들기

쿼리 빌더 에서 시작하기에 가장 좋은 곳은 New Relic APM에서 수집한 Transaction 라는 NRDB의 단일 이벤트 유형을 살펴보는 것입니다. 모든 NRQL 쿼리에는 SELECTFROM 절이 있어야 합니다. 일부 데이터를 SELECT 하고 FROM 위치를 알려주어야 합니다. Transaction 이벤트 유형에서 모든 항목을 선택하는 이 기본 쿼리로 시작합니다.

SELECT *
FROM Transaction

이것은 각각 타임스탬프와 속성 모음이 있는 많은 결과를 반환합니다. 지금은 단일 결과만 원하므로 LIMIT 1 를 사용하여 결과를 단일 레코드로 제한할 수 있습니다.

SELECT *
FROM Transaction
LIMIT 1

중요

LIMIT 이 제공되지 않으면 쿼리는 SELECT * 쿼리에 대해 100개의 테이블 행 또는 FACET 쿼리 및 SELECT (attributes) 쿼리에 대해 10개의 집계 값을 반환합니다. LIMIT MAX 를 사용하여 최대값까지 제한을 지정할 수 있습니다.

이제 결과의 양을 제어할 수 있습니다. 그러나 모든 속성을 원하지 않는 경우에는 어떻게 해야 합니까? 특정 데이터 포인트만 보고 싶다면? SQL과 마찬가지로 * 를 원하는 속성의 이름으로 바꾸면 몇 개의 문자만으로 이 작업을 수행할 수 있습니다. 이 경우 거래 이름과 소요 시간을 물어볼 수 있습니다.

SELECT name, duration
FROM Transaction

이를 통해 이벤트의 전체 또는 일부 특정 특성을 반환하고 특정 수의 이벤트를 쿼리할 수 있는 쿼리를 작성했습니다. 이제 다음 단계인 데이터 집계를 할 차례입니다.

2. 데이터 집계

경우에 따라 개별 데이터 포인트를 보는 대신 여러 이벤트에 걸쳐 요약된 집계 데이터를 보고 싶을 수도 있습니다. NRDB가 빛을 발하는 곳이 바로 여기입니다. NRDB는 수십억 개의 이벤트를 스캔하고 데이터에 대한 질문에 대한 즉각적인 실시간 답변을 제공할 수 있습니다. 예를 들어, 각 Transaction 이벤트에는 호출이 실행되는 데 걸린 시간(초)을 나타내는 기간 속성이 있습니다. 모든 Transaction 이벤트의 평균 기간을 알아보려면 다음 쿼리를 사용하세요.

SELECT average(duration)
FROM Transaction

NRQL에는 이벤트 데이터를 집계하는 데 사용할 수 있는 많은 내장 함수가 있습니다. 일반적으로 사용되는 함수에는 max() , min() , average() , median()percentile() 가 있습니다. 다음 쿼리를 사용하여 지난 60분 동안 가장 느린 트랜잭션 기간을 NRDB에 요청할 수 있습니다. 이렇게 하려면 NRDB에 다음을 요청하십시오. max(duration).

SELECT max(duration)
FROM Transaction

이제 지난 60분 동안 가장 느린 고객 경험이 얼마나 걸렸는지 알 수 있습니다. 다음으로 역을 찾아 NRDB에 min(duration) 를 요청하여 가장 빠른 경험이 얼마나 오래 지속되었는지 확인합니다.

SELECT min(duration)
FROM Transaction

보시다시피 max()min() 는 모두 중요한 데이터 포인트를 반환합니다. 하지만 데이터에 대해 산술 연산을 수행하려면 어떻게 해야 할까요? sum() 사용하면 숫자 속성에 대한 기본 추가를 수행할 수 있습니다. 이 쿼리에서는 databaseCallCount 라는 새 속성을 사용합니다. 이 속성은 각 트랜잭션이 수행하는 데이터베이스 호출 수를 계산합니다. 이를 추가하면 기본 60분 기간 동안 데이터베이스 호출의 총량을 얻을 수 있습니다(앱이 데이터베이스와 통신하지 않는 경우 0이 됩니다).

SELECT sum(databaseCallCount)
FROM Transaction

마지막으로 count(*) 로 기록된 모든 트랜잭션 이벤트를 계산할 수도 있습니다. 이 쿼리를 사용하여 New Relic APM에 보고하는 모든 애플리케이션에 대해 기록된 모든 이벤트를 계산할 수 있습니다.

SELECT count(*)
FROM Transaction

이제 데이터에 대해 많은 정보를 얻을 수 있습니다. 성능의 경계를 측정하고, 이벤트 데이터를 그룹화하고, 선택한 속성에 대한 정보를 계산할 수도 있습니다. 기간을 선택하고 average, maxmin 값을 계산하고 숫자 속성을 추가하고 일정 기간 동안의 모든 이벤트를 계산했습니다. 이와 같은 데이터 조작은 시각화에 데이터를 표시하려는 경우 성능 문제를 파악하는 데 도움이 됩니다. 이제 다음 단계인 시간 범위 사용을 수행할 시간입니다.

3. 시간 범위 사용

NRDB의 모든 데이터 조각에는 timestamp 가 있으며 모든 쿼리는 시간 범위 내의 데이터 하위 집합에서 작동합니다. NRQL 쿼리에 시간 범위를 제공하지 않으면 이전에 본 것처럼 기본적으로 마지막 60분이 반환됩니다. 하지만 다른 시간 범위의 데이터를 보려면 어떻게 해야 할까요? 표시되는 데이터 창을 어떻게 제어합니까? SINCEUNTIL 키워드를 사용하여 쿼리 시간 범위의 시작과 끝을 제공하면 됩니다.

SELECT average(duration)
FROM Transaction
SINCE 1 day ago

또한 day , week , hour , minute 또는 이에 상응하는 복수형과 같은 키워드를 사용하여 쿼리를 수행할 때를 기준으로 시간 범위를 지정할 수 있습니다. 오늘 SINCE 또는 이번 주 SINCE 와 같은 논리식을 사용할 수도 있습니다.

SELECT average(duration)
FROM Transaction
SINCE this week

다음은 상대 시간 범위를 보여주는 또 다른 쿼리입니다. 상대 시간을 지정할 때 ago 키워드를 포함해야 합니다.

SELECT average(duration)
FROM Transaction
SINCE 1 week ago
UNTIL 2 days ago

이제 데이터를 더욱 효과적으로 제어할 수 있습니다. 쿼리에 기간을 추가하면 보고 싶은 데이터 창을 정확하게 정의할 수 있습니다. 이러한 컨트롤을 사용하면 데이터 보고가 시작되고 끝나는 위치를 정의하여 원하는 데이터에 집중할 수 있습니다. 또한 창을 선택하고 week, day, hour, minute 및 해당 복수형과 같은 일반적인 용어를 사용했습니다. 이제 다음 단계인 시계열 쿼리를 수행할 시간입니다.

4. 쿼리 시계열

일반적인 NRQL 사용 사례는 시간 경과에 따라 값이 어떻게 변경되는지 쿼리하는 것입니다. 이 유형의 쿼리는 라인 차트, 영역 차트 및 기타 시각화를 위한 데이터를 제공합니다. 집계 함수 average() , max() , min() , sum()count() 를 탐색하기 위해 이미 일부 쿼리를 실행했습니다. 이제 이 예를 사용하여 집계 함수로 만든 쿼리를 가져오고 TIMESERIES 키워드를 추가하여 시간 경과에 따른 값을 그리는 방법을 확인하십시오.

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES

시계열 쿼리는 데이터를 지정된 기간 동안 버킷이라는 여러 리전으로 나눕니다. NRDB가 해당 버킷의 너비 값을 선택하도록 하거나 직접 선택할 수 있습니다. 이 쿼리를 사용하여 1시간 버킷으로 구성된 반환된 데이터와 함께 애플리케이션 트랜잭션의 평균 기간을 표시하도록 NRDB에 요청합니다.

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES 1 hour

1일 기간 동안 24개의 데이터 포인트만 표시되므로 더 평평한 그래프가 반환될 수 있습니다. 그러나 가능한 최대 세분성을 보려면 어떻게 해야 합니까? 모든 시계열 쿼리는 최대 366개의 데이터 버킷을 가질 수 있습니다. 즉, 24시간 동안 가능한 최대 세분성은 데이터를 4분 창으로 버킷팅하는 것입니다. TIMESERIES 4 minutes 또는 TIMESERIES MAX 를 사용하여 이를 쿼리합니다.

SELECT average(duration)
FROM Transaction
SINCE 1 day ago
TIMESERIES MAX

이제 요약된 숫자에서 시간 경과에 따른 데이터 추세를 선 차트로 분석하여 새로운 수준의 데이터 시각화에 도달했습니다. 보시다시피, TIMESERIES 사용하면 시각화, 세분성 및 지정된 창에 대한 데이터 평균화를 완전히 제어할 수 있습니다. 이제 다음 단계인 'Where' 절을 사용할 시간입니다.

5. WHERE 절을 사용하세요

경우에 따라 쿼리가 NRDB 데이터의 특정 하위 집합에서 작동하기를 원할 수 있습니다. 예를 들어 애플리케이션의 평균 응답 시간을 쿼리할 때 트랜잭션이 Web 또는 Non-Web (예: cron 작업 또는 대기 중인 작업) 트랜잭션인지 지정하는 transactionType 속성을 사용할 수 있습니다. 이 예를 사용하여 Web 트랜잭션 유형에 대한 데이터만 반환하는 쿼리를 생성합니다.

SELECT average(duration)
FROM Transaction
WHERE transactionType='Web'
TIMESERIES

또한 ANDOR 을 결합하여 괄호 () 를 사용하여 이들이 함께 작동하는 방식을 제어하여 더 복잡한 쿼리를 만들 수 있습니다. 이 쿼리는 100ms보다 빠르고 응답 코드가 200 또는 302인 "웹" 트랜잭션의 평균 응답 시간을 보여줍니다. OR 를 제어하기 위해 괄호를 사용하는 것에 주목하십시오.

SELECT average(duration)
FROM Transaction
WHERE transactionType='Web'
AND duration < 0.1
AND (httpResponseCode=200
OR httpResponseCode=302)
TIMESERIES

지금까지 수행한 모든 쿼리는 지정된 시간 창에서 사용 가능한 모든 데이터에 대해 작업을 수행했습니다. 그러나 원하지 않는 데이터를 필터링하는 것도 중요합니다. 위의 예는 트랜잭션 유형을 필터링하거나 특정 응답 코드가 발생할 때 유용합니다. 마찬가지로 특정 appName , 트랜잭션 name 또는 데이터에 태그를 추가한 맞춤 속성으로 필터링할 수 있습니다. 자습서의 마지막 단계인 패싯 쿼리 사용을 수행할 시간입니다.

6. 쿼리를 분석하세요

특정 속성으로 그룹화된 "상위 N" 값을 결정하려는 경우가 많습니다. NRQL에서는 FACET 를 사용하여 이 작업을 수행합니다. 예를 들어 평균적으로 관찰된 가장 느린 Transaction 호출을 이름별로 그룹화하여 쿼리할 수 있습니다. 이것을 "이름별 패싯"이라고 생각하십시오.

SELECT average(duration)
FROM Transaction
FACET name
SINCE 1 day ago

기본적으로 패싯 쿼리는 상위 10개 결과를 반환하지만 LIMIT 를 배치하여 반환되는 결과 수를 사용자 지정할 수 있습니다. 이 예에서는 TIMESERIES 를 사용하여 라인 차트에 표시된 상위 5개 결과를 검색합니다.

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 5
TIMESERIES

그러나 선 차트가 필요하지 않거나 더 큰 트랜잭션 목록이 필요할 수 있습니다. TIMESERIES 를 제거하면 막대 또는 원형 차트를 렌더링할 수 있으며 LIMIT 을 늘려 목록의 범위를 늘릴 수 있습니다.

SELECT average(duration)
FROM Transaction
FACET name
SINCE 3 hours ago
LIMIT 20

마지막으로 다음은 New Relic에 보고하는 개별 애플리케이션별로 세분화된 웹 트랜잭션의 양을 비교하는 약간 더 복잡한 쿼리입니다.

SELECT count(*)
FROM Transaction
WHERE transactionType='Web'
FACET appName
LIMIT 5
SINCE 6 hours ago
TIMESERIES

그룹화 또는 "패싯화"를 통해 데이터의 차원을 얻을 수 있습니다. 집계 함수를 적용할 때 FACET 사용하면 이벤트 데이터를 보고하는 속성(기본 또는 맞춤)별로 그룹화할 수 있습니다( WHERE 절과 유사). 결과 데이터 세트를 더 직접적으로 조사할 수 있도록 데이터에 맞춤 속성을 추가하거나 새로운 맞춤 이벤트를 보고하는 것이 좋습니다.

축하합니다: 첫 번째 NRQL 자습서를 완료했습니다! 여기까지 했다면 이제 NRQL을 사용하여 이벤트 데이터를 쿼리하는 기본 사항을 알게 되었습니다.

다음은 뭐지?

더 많은 고급 개념과 사용 사례를 다루는 세 가지 추가 튜토리얼을 통해 더 많은 NRQL을 탐색할 수 있습니다! 먼저 데이터 처리 에 대한 튜토리얼을 진행한 다음 대시보드 고급 튜토리얼로 이동하고 마지막으로 가장 고급 NRQL 기능 에 대한 튜토리얼로 시리즈를 마무리하는 것이 좋습니다.

Copyright © 2024 New Relic Inc.

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