쿼리 메트릭 탐색하기
Query Metrics 뷰는 정규화된 쿼리(normalized queries)의 과거 성능을 보여줘요. 데이터 센터 가용 영역 같은 인프라 또는 사용자 정의 태그로 성능 추이를 시각화하고, 이상 현상에 대한 알림을 받을 수 있어요.
출처: 문서
본문
Datadog에서 Query Metrics 페이지로 이동하세요.
이 뷰는 200개의 상위(top) 쿼리, 즉 선택한 시간 범위에서 실행에 가장 많은 총 시간을 사용한 200개 쿼리를 보여줘요. 자세한 내용은 어떤 쿼리가 추적되는가를 참고하세요. 일회성 또는 드물게 실행되는 빠른 쿼리의 메트릭 집계는 Query Metrics 뷰에 표시되지 않지만, 지난 15일 이내에 실행되었다면 Query Samples에서 해당 스냅샷을 찾을 수 있어요.
필터링 및 그룹화 (Filtering and grouping)
상단의 소스 선택기에서 데이터베이스 소스(예: Postgres)를 선택하세요. 검색 태그를 지정해 쿼리 목록(또는 사용 가능한 곳의 저장 프로시저 목록)을 필터링하고, 태그로 그룹화해 목록을 정리할 수 있어요.
예를 들어 호스트나 클러스터로 그룹화하면 쿼리가 어떤 인프라에서 실행되는지 빠르게 확인하는 데 유용한 경우가 많아요.
최대 세 가지 항목(예: 호스트, env, 데이터센터)으로 그룹화해 필터링된 결과의 그룹 집합을 얻을 수 있어요.
그룹을 펼치면 쿼리 목록을 볼 수 있고, View all queries in this group을 클릭하면 해당 그룹화 기준이 필터 바의 Search 필드로 이동해 페이지 콘텐츠가 그 검색 결과로 필터링돼요.
패싯으로 필터링하기 (Filtering by facets)
뷰 왼쪽에는 쿼리 목록을 필터링하기 위한 패싯(facets) 목록이 있어요. 패싯에는 다음이 포함돼요:
- Core: 서비스, 호스트, 환경.
- Database: Postgres에는
database와user패싯이 있어요. MySQL에는schema패싯이 있어요. - Infrastructure: 에이전트가 수집하는 기존 Datadog 인프라 태그.
패싯을 선택하거나 해제해서 관심 있는 쿼리 목록을 찾아보세요.
Query Metrics 뷰를 단일 쿼리로 필터링하기
Query Metrics 뷰의 내용을 단일 정규화된 쿼리로만 필터링하려면 query가 아니라 query_signature로 필터링하세요. 태그 이름은 200자로 잘리는데, 쿼리가 길 수 있으므로 query 태그가 반드시 고유하지 않을 수 있어요. query_signature는 정규화된 쿼리의 해시로, 정규화된 쿼리의 고유 ID 역할을 해요.
쿼리 시그니처 값을 조회하지 않고 특정 쿼리로 필터링하는 한 가지 방법은 목록에서 쿼리를 클릭하는 거예요. 그러면 Query Details 페이지가 열리고, 여기서 Filter to This Query를 클릭하면 돼요. 그러면 Query Metrics 페이지가 query_signature 패싯으로 필터링돼요.
메트릭 살펴보기 (Exploring the metrics)
Query Metrics 목록은 Requests, Average latency, Total time, Percent time 메트릭과 그 외 데이터베이스 제품에 따라 달라지는 메트릭을 보여줘요. Options 메뉴를 클릭해 목록에 표시할 메트릭을 제어하세요. 컬럼 헤더에 마우스를 올리면 각 메트릭 유형에 대한 설명이 보여요. 컬럼 헤더를 클릭하면 해당 메트릭으로 목록을 정렬할 수 있어요.
수집되는 메트릭의 전체 목록을 보려면 데이터베이스 제품에 해당하는 통합 Data Collected 문서를 확인하세요:
Database Monitoring 뷰에서 주로 사용하는 메트릭은 다음과 같아요:
- MySQL:
mysql.queries.* - Postgres:
postgresql.queries.* - SQL Server:
sqlserver.queries.* - Oracle:
oracle.queries.* - MongoDB:
mongodb.queries.*
쿼리 세부정보 페이지 (Query details page)
Query Metrics 목록에서 쿼리를 클릭하면 해당 쿼리의 Query Details 페이지가 열려요. 페이지 상단에는 정규화된 쿼리의 전체 텍스트와 해당 쿼리에 연결된 모든 태그 목록이 표시돼요. 태그 목록은 쿼리가 실행되는 각 호스트의 모든 태그의 합집합이에요. 목록을 살펴보면 쿼리가 실행 중인 서버와 같은 정보를 볼 수 있어요.
이 쿼리의 컨텍스트를 유지한 채 View Query Samples 버튼으로 Query Samples 페이지로 이동하거나, Filter by This Query 버튼으로 이 쿼리로 필터링된 Query Metrics로 돌아갈 수 있어요.
쿼리 세부정보를 보면서 실행 중인 호스트를 찾으려면 Filter by This Query를 클릭한 다음 호스트로 그룹화하세요. 메트릭 목록은 쿼리가 실행되는 각 호스트를 보여줘요. Percent time으로 정렬하면 특정 호스트가 쿼리 실행의 큰 비율을 담당하는지 확인할 수 있어요.
Rows/Query로 정렬하면 특정 호스트가 훨씬 더 많은 행을 반환하는 경향이 있는지 확인할 수 있는데, 이는 호스트 간에 샤딩이 불균형하다는 신호일 수 있어요.
메트릭 그래프 (Metrics graphs)
그래프는 이 쿼리의 메트릭을 이 쿼리를 제외한 모든 쿼리와 비교해서 보여줘요. 이 쿼리의 평균 지연 시간이 다른 쿼리의 평균보다 훨씬 높을 수 있지만, 실행 빈도가 낮아 전체 영향은 미미할 수도 있어요. 실행될 때 다른 모든 쿼리에 비해 데이터베이스 시간을 얼마나 소비하는지 볼 수 있어요.
Metrics 탭을 클릭하면 이 쿼리에 대한 더 많은 메트릭 그래프를 볼 수 있어요.
실행 계획 (Explain plans)
Datadog는 실행 계획을 지속적으로 수집하므로 특정 쿼리에 여러 계획이 있을 수 있어요. 이 계획들은 정규화되어 별도로 표시되므로, 쿼리에 다른 계획보다 성능이 좋거나 상대 비용이 더 높은 계획이 있는지 확인할 수 있어요. 예를 들어 다음 실행 계획은 쿼리에 대한 정보를 담고 있어요.
계획을 선택하면 비용 메트릭이나 그 JSON을 볼 수 있어요. View All Samples for This Plan을 클릭하면 그 계획과 관련된 샘플에 대한 Query Samples 뷰로 이동해요.
모든 쿼리에 실행 계획이 있는 것은 아니에요. 이유는 쿼리 유형이나 다양한 구성 설정 때문일 수 있어요. 자세한 내용은 문제 해결을 참고하세요.
이 쿼리를 실행하는 호스트 (Hosts running this query)
Hosts Running This Query 탭은 이 쿼리를 실행하는 호스트를 나열하며, 호스트의 로그나 네트워크 데이터 같은 관련 정보로 이동할 수 있는 컨텍스트 메뉴를 제공해요. 지연 시간 문제가 어디서 오는지 문제를 해결하는 데 유용할 수 있어요.
Database Monitoring 대시보드 (Database Monitoring dashboards)
데이터베이스 관련 인프라와 쿼리 메트릭 시각화를 보여주는 대시보드에 빠르게 접근하려면 페이지 상단의 Dashboards 링크를 클릭하세요. 기본 제공 대시보드를 사용하거나, 복제해서 필요에 맞게 사용자 정의할 수 있어요.