NRQL 이 무엇인지, NRQL이 어떻게 작동하는지, NRQL이 차트 및 대시보드와 어떻게 관련되는지와같은 다른 주제에서 NRQL의 기본 사항을 학습한 후에는 이 자습서의 예제를 시도할 준비가 된 것입니다! 이 자습서에서는 다음 방법을 포함하여 데이터를 사용하여 몇 가지 기본 NRQL 쿼리를 만드는 데 도움이 되는 언어 내의 몇 가지 기본 개념을 다룹니다.
SELECT 사용 및 FROM
사용 LIMIT
속성 지정
average() , max() , min() , sum() 및 사용하여 집계 count()
SINCE 사용 및 UNTIL
다음을 사용하여 선 그래프를 플로팅합니다. TIMESERIES
다음을 사용하여 필터링 WHERE
다음을 사용하여 속성 그룹화 FACET
New Relic 플랫폼 내에서 이 튜토리얼을 따르고 싶습니까? opensource.newrelic.com 에 NRQL Lessons 애플리케이션을 동일한 단계와 예제와 함께 포함시켜 애플리케이션을 종료하지 않고도 NRQL의 가치와 기능을 빠르게 확인할 수 있도록 도와줍니다. 아래 비디오는 NRQL Lesson을 설치하는 방법을 보여줍니다.
New Relic을 처음 사용하고 NRQL을 얼마나 쉽게 사용할 수 있는지 알고 싶다면 무료로 플랫폼을 시작하고 튜토리얼을 따라할 수 있습니다. 당신이해야 할 일은 :
에이전트 및 통합을 사용해 공통 프레임워크 및 툴에서 데이터를 자동으로 수집할 수 있습니다.
New Relic 설정 방법에 대한 권장 경로는 빠른 실행 가이드 를 참조하세요. 쿼리할 데이터 수집을 시작할 수 있으며 이 자습서 또는 자습서를 사용할 준비가 모두 완료되었습니다.
또한 아래 단계에서 스크린샷을 클릭하여 예제 쿼리가 쿼리 작성기에서 어떻게 표시되는지 확인할 수 있습니다. 시작할 준비가 되셨습니까? 갑시다!
쿼리 빌더 에서 시작하기에 가장 좋은 곳은 New Relic APM에서 수집한 Transaction 라는 NRDB의 단일 이벤트 유형을 살펴보는 것입니다. 모든 NRQL 쿼리에는 SELECT 및 FROM 절이 있어야 합니다. 일부 데이터를 SELECT 하고 FROM 위치를 알려주어야 합니다. Transaction 이벤트 유형에서 모든 항목을 선택하는 이 기본 쿼리로 시작합니다.
SELECT*
FROMTransaction
이것은 각각 타임스탬프와 속성 모음이 있는 많은 결과를 반환합니다. 지금은 단일 결과만 원하므로 LIMIT 1 를 사용하여 결과를 단일 레코드로 제한할 수 있습니다.
중요
LIMIT 이 제공되지 않으면 쿼리는 SELECT * 쿼리에 대해 100개의 테이블 행 또는 FACET 쿼리 및 SELECT (attributes) 쿼리에 대해 10개의 집계 값을 반환합니다. LIMIT MAX 를 사용하여 최대값까지 제한을 지정할 수 있습니다.
SELECT*
FROMTransaction
LIMIT1
이제 결과의 양을 제어할 수 있습니다. 그러나 모든 속성을 원하지 않는 경우에는 어떻게 해야 합니까? 특정 데이터 포인트만 보고 싶다면? SQL과 마찬가지로 * 를 원하는 속성의 이름으로 바꾸면 몇 개의 문자만으로 이 작업을 수행할 수 있습니다. 이 경우 거래 이름과 소요 시간을 물어볼 수 있습니다.
SELECT name, duration
FROMTransaction
이를 통해 이벤트의 전체 또는 일부 특정 특성을 반환하고 특정 수의 이벤트를 쿼리할 수 있는 쿼리를 작성했습니다. 이제 다음 단계인 데이터 집계를 할 차례입니다.
경우에 따라 개별 데이터 포인트를 보는 대신 여러 이벤트에서 요약된 집계 데이터를 볼 수 있습니다. 이것이 바로 NRDB가 빛나는 곳입니다. NRDB는 수십억 개의 이벤트를 스캔하고 데이터에 대한 질문에 즉각적인 실시간 답변을 제공할 수 있습니다. 예를 들어 각 Transaction 이벤트에는 호출을 실행하는 데 걸린 시간(초)을 나타내는 기간 속성이 있습니다. 다음 쿼리를 사용하여 모든 Transaction 이벤트의 평균 기간을 찾으십시오.
SELECT average(duration)
FROMTransaction
NRQL에는 이벤트 데이터를 집계하는 데 사용할 수 있는 많은 내장 함수가 있습니다. 일반적으로 사용되는 함수에는 max() , min() , average() , median() 및 percentile() 가 있습니다. 다음 쿼리를 사용하여 지난 60분 동안 가장 느린 트랜잭션 기간을 NRDB에 요청할 수 있습니다. 이렇게 하려면 NRDB에 다음을 요청하십시오. max(duration).
SELECTmax(duration)
FROMTransaction
이제 지난 60분 동안 가장 느린 고객 경험이 얼마나 걸렸는지 알 수 있습니다. 다음으로 역을 찾아 NRDB에 min(duration) 를 요청하여 가장 빠른 경험이 얼마나 오래 지속되었는지 확인합니다.
SELECTmin(duration)
FROMTransaction
보시다시피 max() 및 min() 모두 중요한 데이터 포인트를 반환합니다. 그러나 데이터에 대해 산술 연산을 수행할 수도 있습니다. sum() 를 사용하면 숫자 속성에 대한 기본 추가를 수행할 수 있습니다. 이 쿼리에서 databaseCallCount 라는 새 속성을 사용합니다. 이 속성은 각 트랜잭션이 수행하는 데이터베이스 호출 수를 계산합니다. 이를 추가하면 기본 60분 시간 창에서 총 데이터베이스 호출 볼륨을 얻을 수 있습니다(앱이 데이터베이스와 통신하지 않는 경우 0이 됨).
SELECTsum(databaseCallCount)
FROMTransaction
마지막으로 count(*) 로 기록된 모든 트랜잭션 이벤트를 계산할 수도 있습니다. 이 쿼리를 사용하여 New Relic APM에 보고하는 모든 애플리케이션에 대해 기록된 모든 이벤트를 계산할 수 있습니다.
SELECTcount(*)
FROMTransaction
이제 데이터에 대해 많은 정보를 얻을 수 있습니다. 성능의 경계를 측정하고, 이벤트 데이터를 함께 그룹화하고, 선택한 속성에 대한 정보를 계산할 수도 있습니다. 기간을 선택하고 average , max 및 min 값을 계산하고 숫자 속성을 추가하고 일정 기간 동안 모든 이벤트를 계산했습니다. 이와 같이 데이터를 조작하면 성능 문제를 파악하는 데 도움이 되는 시각화에 데이터를 표시하려는 경우에 도움이 됩니다. 다음 단계인 시간 범위를 사용할 때입니다.
NRDB의 모든 데이터 조각에는 timestamp 가 있으며 모든 쿼리는 시간 범위 내의 데이터 하위 집합에서 작동합니다. NRQL 쿼리에 시간 범위를 제공하지 않으면 이전에 본 것처럼 기본적으로 마지막 60분이 반환됩니다. 하지만 다른 시간 범위의 데이터를 보려면 어떻게 해야 할까요? 표시되는 데이터 창을 어떻게 제어합니까? SINCE 및 UNTIL 키워드를 사용하여 쿼리 시간 범위의 시작과 끝을 제공하면 됩니다.
SELECT average(duration)
FROMTransaction
SINCE 1day ago
또한 day , week , hour , minute 또는 이에 상응하는 복수형과 같은 키워드를 사용하여 쿼리를 수행할 때를 기준으로 시간 범위를 지정할 수 있습니다. 오늘 SINCE 또는 이번 주 SINCE 와 같은 논리식을 사용할 수도 있습니다.
SELECT average(duration)
FROMTransaction
SINCE this week
다음은 상대 시간 범위를 보여주는 또 다른 쿼리입니다. 상대 시간을 지정할 때 ago 키워드를 포함해야 합니다.
SELECT average(duration)
FROMTransaction
SINCE 1 week ago
UNTIL 2 days ago
이제 데이터를 더 잘 제어할 수 있습니다. 쿼리에 시간 프레임을 추가하여 보려는 데이터 창을 정확히 정의했습니다. 이러한 컨트롤을 사용하면 데이터 보고가 시작되고 끝나는 위치를 정의하여 원하는 데이터에 집중할 수 있습니다. 또한 창을 선택하고 week , day , hour , minute 및 복수형과 같은 일반적인 용어를 사용했습니다. 다음 단계인 시계열 쿼리를 수행할 시간입니다.
일반적인 NRQL 사용 사례는 시간 경과에 따라 값이 어떻게 변경되는지 쿼리하는 것입니다. 이 유형의 쿼리는 라인 차트, 영역 차트 및 기타 시각화를 위한 데이터를 제공합니다. 집계 함수 average() , max() , min() , sum() 및 count() 를 탐색하기 위해 이미 일부 쿼리를 실행했습니다. 이제 이 예를 사용하여 집계 함수로 만든 쿼리를 가져오고 TIMESERIES 키워드를 추가하여 시간 경과에 따른 값을 그리는 방법을 확인하십시오.
SELECT average(duration)
FROMTransaction
SINCE 1day ago
TIMESERIES
시계열 쿼리는 데이터를 지정된 기간 동안 버킷이라는 여러 리전으로 나눕니다. NRDB가 해당 버킷의 너비 값을 선택하도록 하거나 직접 선택할 수 있습니다. 이 쿼리를 사용하여 1시간 버킷으로 구성된 반환된 데이터와 함께 애플리케이션 트랜잭션의 평균 기간을 표시하도록 NRDB에 요청합니다.
SELECT average(duration)
FROMTransaction
SINCE 1day ago
TIMESERIES 1hour
1일 기간 동안 24개의 데이터 포인트만 표시되므로 더 평평한 그래프가 반환될 수 있습니다. 그러나 가능한 최대 세분성을 보려면 어떻게 해야 합니까? 모든 시계열 쿼리는 최대 366개의 데이터 버킷을 가질 수 있습니다. 즉, 24시간 동안 가능한 최대 세분성은 데이터를 4분 창으로 버킷팅하는 것입니다. TIMESERIES 4 minutes 또는 TIMESERIES MAX 를 사용하여 이를 쿼리합니다.
SELECT average(duration)
FROMTransaction
SINCE 1day ago
TIMESERIES MAX
이제 새로운 수준의 데이터 시각화에 도달하여 요약된 숫자에서 시간 경과에 따른 데이터 추세의 선형 차트로 구분됩니다. 보시다시피 TIMESERIES 를 사용하면 시각화, 세분성, 지정된 기간에 대한 평균 데이터를 완벽하게 제어할 수 있습니다. 이제 다음 단계인 'Where' 절을 사용할 차례입니다.
경우에 따라 쿼리가 NRDB 데이터의 특정 하위 집합에서 작동하기를 원할 수 있습니다. 예를 들어 애플리케이션의 평균 응답 시간을 쿼리할 때 트랜잭션이 Web 또는 Non-Web (예: cron 작업 또는 대기 중인 작업) 트랜잭션인지 지정하는 transactionType 속성을 사용할 수 있습니다. 이 예를 사용하여 Web 트랜잭션 유형에 대한 데이터만 반환하는 쿼리를 생성합니다.
SELECT average(duration)
FROMTransaction
WHERE transactionType='Web'
TIMESERIES
또한 AND 및 OR 을 결합하여 괄호 ( 및 ) 를 사용하여 이들이 함께 작동하는 방식을 제어하여 더 복잡한 쿼리를 만들 수 있습니다. 이 쿼리는 100ms보다 빠르고 응답 코드가 200 또는 302인 "웹" 트랜잭션의 평균 응답 시간을 보여줍니다. OR 를 제어하기 위해 괄호를 사용하는 것에 주목하십시오.
SELECT average(duration)
FROMTransaction
WHERE transactionType='Web'
AND duration <0.1
AND(httpResponseCode=200
OR httpResponseCode=302)
TIMESERIES
지금까지 수행한 모든 쿼리는 지정된 시간 창에서 사용 가능한 모든 데이터에 대해 작업을 수행했습니다. 그러나 원하지 않는 데이터를 필터링하는 것도 중요합니다. 위의 예는 트랜잭션 유형을 필터링하거나 특정 응답 코드가 발생할 때 유용합니다. 마찬가지로 특정 appName , 트랜잭션 name 또는 데이터에 태그를 추가한 맞춤 속성으로 필터링할 수 있습니다. 자습서의 마지막 단계인 패싯 쿼리 사용을 수행할 시간입니다.
특정 속성으로 그룹화된 "상위 N" 값을 결정하려는 경우가 많습니다. NRQL에서는 FACET 를 사용하여 이 작업을 수행합니다. 예를 들어 평균적으로 관찰된 가장 느린 Transaction 호출을 이름별로 그룹화하여 쿼리할 수 있습니다. 이것을 "이름별 패싯"이라고 생각하십시오.
SELECT average(duration)
FROMTransaction
FACET name
SINCE 1day ago
기본적으로 패싯 쿼리는 상위 10개 결과를 반환하지만 LIMIT 를 배치하여 반환되는 결과 수를 사용자 지정할 수 있습니다. 이 예에서는 TIMESERIES 를 사용하여 라인 차트에 표시된 상위 5개 결과를 검색합니다.
SELECT average(duration)
FROMTransaction
FACET name
SINCE 3 hours ago
LIMIT5
TIMESERIES
그러나 선 차트가 필요하지 않거나 더 큰 트랜잭션 목록이 필요할 수 있습니다. TIMESERIES 를 제거하면 막대 또는 원형 차트를 렌더링할 수 있으며 LIMIT 을 늘려 목록의 범위를 늘릴 수 있습니다.
SELECT average(duration)
FROMTransaction
FACET name
SINCE 3 hours ago
LIMIT20
마지막으로 다음은 New Relic에 보고하는 개별 애플리케이션별로 세분화된 웹 트랜잭션의 양을 비교하는 약간 더 복잡한 쿼리입니다.
SELECTcount(*)
FROMTransaction
WHERE transactionType='Web'
FACET appName
LIMIT5
SINCE 6 hours ago
TIMESERIES
그룹화 또는 "패싯"을 사용하면 데이터의 차원을 얻을 수 있습니다. 집계 함수를 적용할 때 FACET 를 사용하여 이벤트 데이터를 보고하는 모든 속성(기본값 또는 사용자 정의)별로 그룹화할 수 있습니다( WHERE 절처럼). 결과 데이터 세트를 보다 직접적으로 조사할 수 있도록 데이터 에 사용자 정의 속성을 추가 하거나 새 사용자 정의 이벤트를 보고 하는 것이 좋습니다.
축하합니다: 첫 번째 NRQL 자습서를 완료했습니다! 여기까지 했다면 이제 NRQL을 사용하여 이벤트 데이터를 쿼리하는 기본 사항을 알게 되었습니다.
튜토리얼을 읽었지만 아직 계정이 없으신가요? 아직 하지 않았다면 아래에서 무료 New Relic 계정을 만들어 오늘 데이터 모니터링을 시작하십시오.