Azure Monitor에서 DCR 데이터 수집 모니터링 및 문제 해결
이 문서에서는 성능을 모니터링하고 Azure Monitor의 데이터 수집과 관련된 문제를 해결하는 데 사용할 수 있는 자세한 메트릭 및 로그를 제공합니다. 이 원격 분석은 현재 Azure Monitor 에이전트 및 로그 수집 API와 같은 DCR(데이터 수집 규칙)에 의해 정의된 데이터 수집 시나리오에 사용할 수 있습니다.
Important
이 문서에서는 다음을 포함하여 DCR을 사용하는 데이터 수집 시나리오만 언급합니다.
- AMA(Azure Monitor 에이전트)를 사용하여 수집된 로그
- Log Ingestion API를 사용하여 수집된 로그
- 작업 영역 변환 DCR을 사용하는 다른 방법으로 수집된 로그
사용 가능한 모니터링 및 문제 해결 정보는 다른 시나리오에 대한 설명서를 참조하세요.
DCR 진단 기능에는 로그 처리 중에 생성된 메트릭 및 오류 로그가 포함됩니다. DCR 메트릭은 수집되는 데이터의 양, 처리 오류의 수와 특성, 데이터 변환과 관련된 통계에 대한 정보를 제공합니다. DCR 오류 로그는 데이터 처리가 실패하고 데이터가 대상에 도달하지 못할 때마다 생성됩니다.
DCR 오류 로그
데이터가 Azure Monitor 수집 파이프라인에 도달했지만 대상에 도달하지 못한 경우 오류 로그가 생성됩니다. 오류 조건의 예는 다음과 같습니다.
- 로그 배달 오류
- 로그 구조로 인해 변환 KQL이 유효하지 않게 되는 변환 오류
- 로그 수집 API 호출:
- 200/202 이외의 HTTP 응답 포함
- 잘못된 데이터가 포함된 페이로드가 있는 경우
- 수집 한도를 초과하는 페이로드가 있는 경우
- API 호출 한도 초과로 인한 제한
동일한 데이터 흐름과 관련된 지속적인 오류의 과도한 로깅을 방지하기 위해 일부 오류는 요약 오류 메시지와 함께 매 시간 제한된 횟수만 기록됩니다. 그런 다음 해당 시간이 끝날 때까지 오류가 음소거됩니다. 해당 오류가 기록되는 횟수는 DCR이 배포된 지역에 따라 달라질 수 있습니다.
일부 로그 수집 오류는 DCR과 연결할 수 없기 때문에 기록되지 않습니다. 다음 오류는 기록되지 않을 수 있습니다.
- 잘못된 호출 URI로 인한 실패(HTTP 응답 코드 404)
- 특정 내부 서버 오류(HTTP 응답 코드 500)
DCR 오류 로그 사용
DCR 오류 로그는 Azure Monitor에서 리소스 로그로 구현됩니다. DCR에 대한 진단 설정을 만들어 로그 컬렉션을 사용하도록 설정합니다. 각 DCR에는 자체 진단 설정이 필요합니다. 자세한 프로세스는 Azure Monitor에서 진단 설정 만들기를 참조하세요. 로그 오류 및 Log Analytics 작업 영역으로 보내기 범주를 선택합니다. DCR에서 사용하는 것과 동일한 작업 영역을 선택하거나 모든 오류 로그를 단일 작업 영역에 통합할 수 있습니다.
DCR 오류 로그 검색
오류 로그는 진단 설정에서 지정한 Log Analytics 작업 영역의 DCRLogErrors 테이블에 기록됩니다. 다음은 이러한 로그를 쿼리하기 위해 Log Analytics에서 사용할 수 있는 샘플 쿼리입니다.
특정 DCR에 대한 모든 오류 로그 검색
DCRLogErrors
| where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
특정 DCR의 특정 입력 스트림에 대한 모든 오류 로그 검색
DCRLogErrors
| where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
| where InputStreamId == "Custom-MyTable_CL"
DCR 메트릭
DCR 메트릭은 모든 DCR에 대해 자동으로 수집되며, 다른 Azure 리소스에 대한 플랫폼 메트릭과 마찬가지로 메트릭 탐색기를 사용하여 이를 분석할 수 있습니다. 입력 스트림은 차원으로 포함되므로 여러 입력 스트림이 있는 DCR이 있는 경우 필터링 또는 분할을 통해 각각을 분석할 수 있습니다. 일부 메트릭에는 아래 표에 표시된 다른 차원이 포함됩니다.
메트릭 | 차원 | 설명 |
---|---|---|
분당 로그 수집 바이트 | 입력 스트림 | 분당 수신된 총 바이트 수입니다. |
분당 로그 수집 요청 | 입력 스트림 HTTP 응답 코드 |
분당 수신 전화 수 |
분당 삭제된 로그 행 | 입력 스트림 | 분당 처리 중에 삭제된 로그 행 수입니다. 여기에는 KQL 변환의 필터링 기준으로 인해 삭제된 행과 오류로 인해 삭제된 행이 포함됩니다. |
분당 수신된 로그 행 | 입력 스트림 | 분당 처리를 위해 수신된 로그 행 수입니다. |
분당 로그 변환 기간 | 입력 스트림 | 분당 평균 KQL 변환 런타임입니다. KQL 변환 코드 효율성을 나타냅니다. 변환 런타임이 긴 데이터 흐름에서는 데이터 처리가 지연되고 데이터 대기 시간이 길어질 수 있습니다. |
분당 로그 변환 오류 | 입력 스트림 오류 유형 |
분당 발생한 처리 오류 수 |
일반적인 문제 해결
Log Analytics 작업 영역에 예상 데이터가 누락된 경우 다음 기본 단계에 따라 문제를 해결합니다. 여기서는 위에서 설명한 대로 DCR 로깅을 사용하도록 설정했다고 가정합니다.
- 데이터가 Azure Monitor에 도달하는지 확인하려면
Logs Ingestion Bytes per Min
및Logs Rows Received per Min
과 같은 메트릭을 확인합니다. 그렇지 않은 경우 데이터 원본을 확인하여 예상대로 데이터가 전송되고 있는지 확인합니다. - 삭제되는 행이 있는지 확인하려면
Logs Rows Dropped per Min
을 확인합니다. 변환에 의해 행이 삭제될 수 있으므로 이는 오류를 나타내지 않을 수 있습니다. 삭제된 행이Logs Rows Dropped per Min
과 동일하면 작업 영역에서 데이터가 수집되지 않습니다. 변환 오류가 있는지 확인하려면Logs Transformation Errors per Min
을 검사합니다. - 수신 데이터에 적용된 변환에 오류가 있는지 확인하려면
Logs Transformation Errors per Min
을 확인합니다. 이는 데이터 구조 또는 변환 자체의 변경으로 인해 발생할 수 있습니다. - 기록되었을 수 있는 수집 오류가 있는지
DCRLogErrors
를 확인합니다. 이를 통해 문제의 근본 원인을 식별하는 데 추가 세부 정보를 제공할 수 있습니다.
로그 수집 모니터링
다음 신호는 DCR을 사용하여 로그 컬렉션 상태를 모니터링하는 데 유용할 수 있습니다. 이러한 조건을 식별하는 경고 규칙을 만듭니다.
Signal | 가능한 원인과 작업 |
---|---|
DCRErrorLogs 의 새 항목 또는 Log Transform Errors 의 갑작스런 변경. |
- 인증, DCR 또는 DCE에 대한 액세스, 호출 페이로드 문제 등 로그 수집 API 설정에 문제 발생. - 데이터 구조 변경으로 인해 KQL 변환 실패 발생. - 데이터 대상 구성이 변경되어 데이터 전송 오류 발생. |
Logs Ingestion Bytes per Min 의 갑작스런 변경 |
- AMA 설정을 포함하여 클라이언트의 로그 수집 구성 변경. - 전송된 로그의 구조 변경. |
Logs Ingestion Bytes per Min 과 Logs Rows Received per Min 사이의 비율의 갑작스런 변경 |
- 전송된 로그의 구조 변경. 변경 내용을 검사하여 KQL 변환을 통해 데이터가 제대로 처리되었는지 확인합니다. |
Logs Transformation Duration per Min 의 갑작스런 변경 |
- KQL 변환에 설정된 로그 필터링 기준의 효율성에 영향을 미치는 로그 구조 변경. 변경 내용을 검사하여 KQL 변환을 통해 데이터가 제대로 처리되었는지 확인합니다. |
Logs Ingestion Requests per Min 또는 Logs Ingestion Bytes per Min 이 Log Ingestion API 서비스 한도에 근접합니다. |
- 제한을 방지하려면 DCR 구성을 검사하고 최적화합니다. |
경고
문제를 사후적으로 해결하는 대신 잠재적인 오류 상황이 발생할 때 적극적으로 경고를 받을 수 있는 경고 규칙을 만듭니다. 다음 표에는 로그 수집을 모니터링하기 위해 만들 수 있는 경고 규칙의 예가 나와 있습니다.
조건 | 경고 세부 정보 |
---|---|
삭제된 행의 갑작스런 변경 | Logs Rows Dropped per Min 에 대한 동적 임계값을 사용하는 메트릭 경고 규칙. |
서비스 한도에 근접한 API 호출 수 | Logs Ingestion Requests per Min 에 대한 정적 임계값을 사용하는 메트릭 경고 규칙. DCR당 분당 최대 요청에 대한 서비스 제한인 12,000에 가깝게 임계값을 설정합니다. |
오류 로그 | DCRLogErrors 를 사용하여 쿼리 경고를 기록합니다. 오류가 기록될 때마다 경고를 받으려면 테이블 행 측정값과 임계값인 1을 사용합니다. |