Azure Functions 앱에 대한 Application Insights 로그가 없거나 잘못되었습니다.
Azure Functions와 Application Insights 간의 통합을 통해 함수 앱을 면밀히 모니터링할 수 있습니다. 또한 사용자 지정 구성 없이 Application Insights를 사용할 수 있습니다.
Application Insights 로그가 없거나 데이터가 부분적이거나 부정확한 것으로 보이는 경우 다음 단계를 사용하여 문제를 해결합니다.
함수 앱 구성 확인
Azure Portal에서 해당 함수 앱으로 이동합니다.
진단 및 문제 해결을 선택하여 Azure Functions 진단을 엽니다.
검색 창에서 함수 구성 검사를 입력하고 엽니다.
모든 함수 앱 구성 검사에 대한 진단 보고서가 표시됩니다. 특히 Application Insights의 경우 다음 검사가 수행됩니다.
다음 연결 설정 중 하나만 존재합니다.
APPINSIGHTS_INSTRUMENTATIONKEY
Application Insights 계측 키APPLICATIONINSIGHTS_CONNECTION_STRING
연결보다 안정적인 동작을 위해 APPLICATIONINSIGHTS_CONNECTION_STRING 사용하는 것이 좋습니다. 사용
APPINSIGHTS_INSTRUMENTATIONKEY
기능은 2025년까지 더 이상 사용되지 않습니다.
권장되는 대로
AzureWebJobsDashboard
기본 제공 로깅이 비활성화됩니다.샘플링 은 Azure Functions 원격 분석에 대해 사용하도록 설정됩니다(기본적으로 사용).
권장 사항: 함수 앱은 버전 4에 있어야 하며 런타임 버전은 4.15.2xx 이상이어야 합니다. 이 버전부터 Azure Functions에서 Application Insights 서비스로의 로그 흐름을 추적할 수 있기 때문입니다. 로그 흐름을 모니터링하여 누락된 로그를 확인할 수 있습니다.
로그가 없거나 부분
Application Insights는 로그, 성능 및 오류 데이터를 수집합니다. 샘플링 구성 은 원격 분석 볼륨을 줄이는 데 사용됩니다. 샘플링 기능은 다음 host.json 예제에 표시된 설정을 사용하여 기본적으로 사용하도록 설정됩니다. 제외된 형식은 샘플링되지 않습니다.
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
부분적으로 누락된 로그를 발견하면 샘플링으로 인해 발생할 수 있습니다. 실제 샘플링 속도를 확인하려면 다음 코드 조각에 표시된 필요한 시간 간격을 사용하는 Analytics 쿼리를 사용합니다. 샘플링 유형이 TelemetrySavedPercentage
100 미만인 경우 해당 유형의 원격 분석이 샘플링됩니다.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
자세한 내용은 Application Insights의 데이터 수집, 보존 및 스토리지를 참조하세요.
로그의 볼륨 및 세부 정보 제어
기록된 로그를 늘리거나 표시하지 않을 수 있습니다. 이렇게 하려면 host.json 구성된 로그 수준 및 범주의 조합을 사용할 수 있습니다.
Azure Functions 로거에는 모든 로그에 대한 범주가 포함되어 있습니다. 범주는 런타임 코드 또는 함수 코드에서 로그를 생성한 부분을 나타냅니다. 예시:
Host.Results
사용 가능한 범주 중 일부입니다Function.<YOUR_FUNCTION_NAME>
.- 로그 수준은 모든 로그에 할당됩니다. 값은 상대적 중요도(예: 또는
Information
.)를Warning
나타냅니다.
자세한 내용은 사용 가능한 다른 범주 및 로그 수준을 참조하세요.
샘플 코드 조각에 따라 애플리케이션에서 로그를 작성하는 방법을 구성할 수 있습니다.
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
앱 설정 수준에서 이러한 값을 구성하려면(host.json 변경 시 다시 배포하지 않도록) 애플리케이션 설정과 동일한 값을 만들어 특정 host.json 값을 재정의합니다. 자세한 내용은 host.json 값 재정의를 참조하세요.
로그를 표시하지 않는 방법에 대한 자세한 예제는 functions-log-suppression을 참조 하세요.
가상 네트워크 통합 함수 앱은 로그를 생성하지 않습니다.
함수 앱이 가상 네트워크와 통합된 경우 Application Insights SDK 또는 Application Insights 에이전트가 다음 URL에 대한 데이터를 포털로 보낼 수 있도록 서버 방화벽에서 나가는 트래픽에 대한 포트 443을 열어야 합니다.
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- *.in.applicationinsights.azure.com
자세한 내용은 Azure Monitor에서 사용하는 IP 주소를 참조하세요.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.