NRQL 이 무엇인지, NRQL이 어떻게 작동하는지, NRQL이 차트 및 대시보드와 어떻게 관련되는지와같은 다른 주제에서 NRQL의 기본 사항을 학습한 후에는 이 자습서의 예제를 시도할 준비가 된 것입니다! 이 자습서에서는 다음 방법을 포함하여 데이터를 사용하여 몇 가지 기본 NRQL 쿼리를 만드는 데 도움이 되는 언어 내의 몇 가지 기본 개념을 다룹니다.
SELECT
사용 및FROM
- 사용
LIMIT
- 속성 지정
average()
,max()
,min()
,sum()
및 사용하여 집계count()
SINCE
사용 및UNTIL
- 다음을 사용하여 선 그래프를 플로팅합니다.
TIMESERIES
- 다음을 사용하여 필터링
WHERE
- 다음을 사용하여 속성 그룹화
FACET
전제 조건
이 튜토리얼을 따라가려면 New Relic 플랫폼으로 들어오는 일부 데이터만 필요합니다. New Relic을 처음 접하고 NRQL 사용이 얼마나 쉬운지 알고 싶다면 무료로 플랫폼을 시작하고 튜토리얼을 따라해 보세요. 당신이 해야 할 일은 다음과 같습니다:
- 아직 계정이 없으시다면, 지금 무료 계정을 신청하십시오.
- 이 튜토리얼은 APM 데이터 에 중점을 두고 있지만 에이전트 및 통합을 사용하여 일반적인 프레임워크 및 도구에서 자동으로 데이터를 수집할 수 있습니다.
- New Relic 설정 방법에 대한 권장 경로는 빠른 실행 가이드 를 참조하세요. 쿼리할 데이터 수집을 시작할 수 있으며 이 자습서 또는 자습서를 사용할 준비가 모두 완료되었습니다.
시작할 준비가 되셨나요? 갑시다!
1. 첫 번째 쿼리 만들기
쿼리 빌더 에서 시작하기에 가장 좋은 곳은 New Relic APM에서 수집한 Transaction
라는 NRDB의 단일 이벤트 유형을 살펴보는 것입니다. 모든 NRQL 쿼리에는 SELECT
및 FROM
절이 있어야 합니다. 일부 데이터를 SELECT
하고 FROM
위치를 알려주어야 합니다. Transaction
이벤트 유형에서 모든 항목을 선택하는 이 기본 쿼리로 시작합니다.
SELECT *FROM Transaction
이것은 각각 타임스탬프와 속성 모음이 있는 많은 결과를 반환합니다. 지금은 단일 결과만 원하므로 LIMIT 1
를 사용하여 결과를 단일 레코드로 제한할 수 있습니다.
SELECT *FROM TransactionLIMIT 1
중요
When a LIMIT
isn't supplied, the query returns the default of 100 table rows for SELECT *
queries or 10 aggregated values for FACET
queries and SELECT (attributes)
queries. You can specify any limit up to the maximum by using LIMIT MAX
.
이제 결과의 양을 제어할 수 있습니다. 그러나 모든 속성을 원하지 않는 경우에는 어떻게 해야 합니까? 특정 데이터 포인트만 보고 싶다면? SQL과 마찬가지로 *
를 원하는 속성의 이름으로 바꾸면 몇 개의 문자만으로 이 작업을 수행할 수 있습니다. 이 경우 거래 이름과 소요 시간을 물어볼 수 있습니다.
SELECT name, durationFROM 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
, max
및 min
값을 계산하고 숫자 속성을 추가하고 일정 기간 동안의 모든 이벤트를 계산했습니다. 이와 같은 데이터 조작은 시각화에 데이터를 표시하려는 경우 성능 문제를 파악하는 데 도움이 됩니다. 이제 다음 단계인 시간 범위 사용을 수행할 시간입니다.
3. 시간 범위 사용
NRDB의 모든 데이터 조각에는 timestamp
가 있으며 모든 쿼리는 시간 범위 내의 데이터 하위 집합에서 작동합니다. NRQL 쿼리에 시간 범위를 제공하지 않으면 이전에 본 것처럼 기본적으로 마지막 60분이 반환됩니다. 하지만 다른 시간 범위의 데이터를 보려면 어떻게 해야 할까요? 표시되는 데이터 창을 어떻게 제어합니까? SINCE
및 UNTIL
키워드를 사용하여 쿼리 시간 범위의 시작과 끝을 제공하면 됩니다.
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
또한 AND
및 OR
을 결합하여 괄호 (
및 )
를 사용하여 이들이 함께 작동하는 방식을 제어하여 더 복잡한 쿼리를 만들 수 있습니다. 이 쿼리는 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 기능 에 대한 튜토리얼로 시리즈를 마무리하는 것이 좋습니다.