Database Monitoring 데이터 수집
Database Monitoring을 설정하면 에이전트(Agent)가 해당 통합 문서에 기록된 모든 메트릭을 수집해요. 여기에는 데이터베이스 상태, 이벤트, 페일오버, 연결, 버퍼 풀 관련 메트릭은 물론, Database Monitoring이 사용하는 쿼리 성능 메트릭도 포함돼요.
이런 메트릭들은 표준 Datadog 메트릭이라서 대시보드, 모니터, 노트북 등 메트릭을 쓰는 모든 곳에서 활용할 수 있어요.
출처: 문서
본문
수집되는 메트릭의 전체 목록을 보려면 데이터베이스 제품에 해당하는 통합 Data Collected 문서 섹션을 확인하세요:
Database Monitoring 뷰에서 주로 사용하는 메트릭은 다음과 같아요:
- MySQL:
mysql.queries.* - Postgres:
postgresql.queries.* - SQL Server:
sqlserver.queries.* - Oracle:
oracle.queries.*
정규화된 쿼리 (Normalized queries)
중복된 정보를 없애고 성능 추이를 추적하기 위해, Database Monitoring은 파라미터가 다른 동일한 쿼리들을 파라미터를 난독화해서 하나로 묶어요. 이렇게 묶인 쿼리 그룹을 정규화된 쿼리(normalized queries)라고 하고, 때로는 쿼리 다이제스트(query digests)라고 부르기도 해요. Datadog는 엄격한 쿼리 볼륨 제한 대신 데이터베이스 호스트당 200개의 정규화된 쿼리를 지원해요. 이 과정은 민감한 데이터가 옵저버빌리티 도구로 유출되지 않도록 보장하기도 해요.
예를 들어, 같은 테이블에서 id로 데이터를 가져오는 쿼리들이 여러 개 보일 수 있어요:
SELECT * FROM customers WHERE id = 13345;
SELECT * FROM customers WHERE id = 24435;
SELECT * FROM customers WHERE id = 34322;
이런 쿼리들은 파라미터를 ?로 바꾼 하나의 정규화된 쿼리로 함께 나타나요.
SELECT * FROM customers WHERE id = ?
파라미터가 여러 개인 쿼리도 같은 패턴을 따라요:
SELECT * FROM timeperiods WHERE start >= '2022-01-01' AND end <= '2022-12-31' AND num = 5
위처럼 특정 파라미터를 가진 쿼리는 아래처럼 난독화된 버전이 돼요:
SELECT * FROM timeperiods WHERE start >= ? AND end <= ? AND num = ?
민감한 정보 (Sensitive information)
Database Monitoring 에이전트는 쿼리를 정규화하기 때문에, Datadog 수집(in intake)으로 보내지는 모든 쿼리 바인드 파라미터(bind parameters)를 난독화해요. 따라서 데이터베이스에 저장된 비밀번호, PII(개인 식별 정보), 그 밖의 잠재적으로 민감한 정보가 쿼리 메트릭, 쿼리 샘플, 실행 계획(explain plans)에서 보이지 않아요.
다만 몇 가지 흔한 데이터 위험 원인은 있어요:
데이터베이스 스키마 (Database schema)
테이블명, 컬럼명, 인덱스, 데이터베이스명 또는 그 밖의 스키마에 민감한 정보가 있다면, 이 데이터는 난독화되지 않아요. 데이터베이스 스키마가 민감한 정보로 간주되는 경우는 드물지만, 이런 데이터 유형에는 난독화가 적용되지 않는다는 점을 알아두세요.
데이터베이스 로그 (Database logs)
데이터베이스에서 Datadog로 로그를 보내고 있다면, 일부 로그에는 쿼리 바인드 파라미터를 포함한 전체 SQL 쿼리 텍스트가 들어갈 수 있어요. 조직의 요구사항에 맞는 로그 보안 규칙을 검토하고 적용하세요.
쿼리 주석 (Query comments)
SQL 쿼리 주석은 에이전트가 수집해서 난독화 과정을 거치지 않고 Datadog로 보낼 수 있어요. SQL 쿼리 주석은 일반적으로 민감한 데이터를 담고 있지 않지만, 쿼리 SQL에서 추출된 주석은 난독화를 거치지 않아요.
어떤 쿼리가 추적되는가 (Which queries are tracked)
Datadog Database Monitoring은 호스트에서 실행에 소요된 총 시간을 기준으로 상위 200개 정규화된 쿼리에 대한 쿼리별 메트릭을 수집해요. 이 제한은 각 수집 주기(기본적으로 10초)에만 적용되므로, 더 긴 기간 동안에는 추적되는 총 쿼리 수가 설정된 제한을 넘을 수 있어요.
쿼리 샘플은 추적되는 고유 정규화된 쿼리 수에 제한이 없지만, 샘플링은 느리거나 빈번한 쿼리 쪽으로 편향돼요. 쿼리 샘플이 선택됐는데도 관련 쿼리 메트릭이 없을 수 있어요. 이는 쿼리가 짧은 기간 동안 느리거나 빈번했지만, 상위 쿼리가 될 만큼 지속되지 않은 경우예요.
쿼리 보존 기간 (Query retention periods)
Datadog는 수집된 데이터 유형에 따라 Database Monitoring 쿼리 데이터를 보존해요:
- 쿼리 메트릭(Query Metrics)은 15개월 동안 보존돼요.
- 쿼리 샘플(Query Samples)은 15일 동안 보존돼요.
자세한 내용은 데이터 보존 기간을 참고하세요.
기타 쿼리 (Other queries)
기타 쿼리(Other Queries) 는 상위 200개에 나타나지 않는 모든 쿼리의 메트릭을 나타내요. 특정 쿼리는 어떤 시간대에는 상위 쿼리이고 다른 시간대에는 아닐 수 있으므로, 그 쿼리의 메트릭은 어떤 때는 별개의 정규화된 쿼리로 추적되고 어떤 때는 기타 쿼리(Other Queries)에 포함될 수 있어요.