다음을 통해 공유


Azure Functions 실행 모니터링

Azure Functions 함수 실행을 모니터링하는 Azure 애플리케이션 Insights 통합을 제공합니다. 이 문서에서는 Azure Functions를 모니터링하기 위해 Azure에서 제공하는 모니터링 기능의 개요를 제공하며, 원격 분석 데이터를 내보내는 방법을 선택하는 방법에 대해 설명합니다.

Application Insights는 로그, 성능 및 오류 데이터를 수집합니다. 성능 변칙을 자동으로 감지하고 강력한 분석 도구를 사용하여 더 쉽게 문제를 진단하고 함수 사용 방법을 더 잘 파악할 수 있습니다. 이러한 도구는 사용자가 지속적으로 함수에 대한 성능 및 사용 편의성을 개선하는 데 도움이 되도록 설계되었습니다. 로컬 함수 앱 프로젝트를 개발하는 중에도 Application Insights를 사용할 수 있습니다.

Application Insights 계측은 Azure Functions 기본 제공되므로 함수 앱을 Application Insights 리소스에 연결하려면 유효한 연결 문자열 또는 계측 키가 필요합니다. 이 연결은 Azure 함수 앱 리소스를 만들 때 애플리케이션 설정으로 구성됩니다. 함수 앱에 이 설정이 아직 없는 경우 수동으로 설정할 수 있습니다.

Azure Monitor 사용하여 함수 앱 자체를 모니터링할 수도 있습니다. 자세한 내용은 모니터 Azure Functions 참조하세요.

텔레메트리 내보내기 옵션

Azure Functions는 함수 호스트 프로세스와 함수 코드가 실행되는 언어별 작업자 프로세스 모두에서 원격 측정 데이터를 생성합니다. 이 원격 분석 데이터를 내보내는 방법을 선택할 수 있습니다.

내보내기 메서드 설명 권장 사항
Azure Monitor Exporter를 사용하여 OpenTelemetry OpenTelemetry 형식의 원격 분석을 Application Insights로 내보내고 필요에 따라 OTLP 규격 엔드포인트로 내보냅니다. 신규 및 기존 앱에 권장됩니다.
내장형 Application Insights 통합 추가 코드 없이 Application Insights에 원격 분석을 보내는 기본 통합입니다. 기본 모니터링 요구 사항에 적합합니다.
클래식 Application Insights SDKs 사용자 지정 원격 분석에 대한 세분화된 제어를 제공하는 언어별 SDK입니다. 레거시. OpenTelemetry로 마이그레이션할 계획입니다.

중요합니다

신규 및 기존 애플리케이션의 경우 Azure Monitor OpenTelemetry Exporter를 사용하여 Application Insights에 원격 분석을 보내는 것이 좋습니다. 현재 클래식 Application Insights SDK를 사용하여 내보낸 원격 분석을 사용자 지정하는 경우 장기 지원 및 최신 관찰 기능에 대한 액세스를 위해 OpenTelemetry로 마이그레이션할 계획입니다. 클래식 Application Insights SDK는 새 기능 업데이트를 받지 않습니다. OpenTelemetry는 C# In-process 앱에 대해 지원되지 않습니다.

Azure Monitor OpenTelemetry 내보내기는 Application Insights 연결 문자열(APPLICATIONINSIGHTS_CONNECTION_STRING)이 필요하며 계측 키 사용을 지원하지 않습니다.

함수 앱에서 OpenTelemetry를 구성하는 방법을 알아보려면 Azure Functions에서 OpenTelemetry 사용을 참조하세요.

Application Insights 가격 책정 및 제한

무료로 처리되는 데이터의 양에 대한 일일 제한을 갖춘 Azure Functions Application Insights 통합을 사용해 볼 수 있습니다.

개발 중에 Application Insights를 활성화하면, 테스트 중에 이 한도에 도달할 수 있습니다. Azure 일일 한도에 근접할 때 포털 및 전자 메일 알림을 제공합니다. 이러한 경고를 놓치고 제한에 도달하면 Application Insights 쿼리에 새 로그가 표시되지 않습니다. 불필요하게 문제 해결에 시간을 들이지 않도록 이러한 한도에 유의하세요. 자세한 내용은 Application Insights 청구를 참조하세요.

중요합니다

Application Insights에는 최대 부하 시 실행이 완료될 때 원격 분석 데이터를 너무 많이 생성하지 않도록 방지하는 샘플링 기능이 포함되어 있습니다. 샘플링은 기본적으로 사용하도록 설정됩니다. 데이터가 누락되는 것 같다면, 샘플링 설정을 사용자의 특정 모니터링 시나리오에 맞게 조정할 수 있습니다. 자세한 내용은 샘플링 구성을 참조하세요.

Application Insights 통합

일반적으로, 사용자의 함수 앱을 만들 때에는 Application Insights 인스턴스를 만들게 됩니다. 이러한 경우, 통합에 필요한 계측 키는 이미 APPINSIGHTS_INSTRUMENTATIONKEY라는 애플리케이션 설정으로 설정되어 있습니다. 어떤 이유로 함수 앱에 계측 키 집합이 없다면, 사용자는 Application Insights 통합을 활성화해야 합니다.

중요합니다

Azure Government 같은 소버린 클라우드에는 계측 키 대신 Application Insights 연결 문자열(APPLICATIONINSIGHTS_CONNECTION_STRING)를 사용해야 합니다. 자세한 내용은 APPLICATIONINSIGHTS_CONNECTION_STRING 참조에서 확인하세요.

다음 표에서는 함수 앱을 모니터링하는 데 사용할 수 있는 Application Insights의 지원되는 기능을 자세히 설명합니다.

Azure Functions 런타임 버전 1.x 4.x 이상
자동 컬렉션
• 요청
• 예외
• 성능 카운터
• 종속성
   — HTTP
   — 서비스 버스
   — 이벤트 허브
   — SQL*
지원되는 기능
• QuickPulse/LiveMetrics
   — 컨트롤 채널 보호
• 샘플링
• 하트비트
상관 관계
• 서비스 버스 (Service Bus)
• 이벤트 허브
구성 가능.
완전히 구성 가능

* SQL 쿼리 문자열 텍스트의 컬렉션을 사용하도록 설정하려면 SQL 쿼리 컬렉션 사용을 참조하세요.

원격 분석 데이터 수집하기

Application Insights 통합이 활성화되면, 원격 분석 데이터는 사용자의 연결된 Application Insights 인스턴스로 전송됩니다. 이 데이터에는 Functions 호스트에 의해 생성된 로그, 함수 코드에서 작성된 추적 및 성능 데이터가 포함됩니다.

참고

함수 및 Functions 호스트의 데이터 외에도, 사용자는 Functions 크기 조정 컨트롤러에서 데이터를 수집할 수 있습니다.

로그 수준 및 범주

애플리케이션 코드로부터 추적을 작성하는 경우, 로그 수준을 추적에 할당해야 합니다. 로그 수준을 사용하면 추적으로부터 수집하는 데이터의 양을 제한할 수 있습니다.

로그 수준은 모든 로그에 할당됩니다. 이 값은 상대적 중요도를 나타내는 정수입니다.

로그레벨 코드 설명
추적 0 가장 자세한 메시지를 포함하는 로그입니다. 이러한 메시지에는 중요한 애플리케이션 데이터가 포함될 수 있습니다. 메시지는 기본적으로 사용하지 않도록 설정되며 프로덕션 환경에서 사용하면 안 됩니다.
디버그 1 개발 중에 대화형 조사에 사용되는 로그입니다. 해당 로그는 기본적으로 디버깅에 유용한 정보를 포함하고 장기적인 값은 포함하지 않아야 합니다.
정보 2 애플리케이션의 일반적인 흐름을 추적하는 로그입니다. 해당 로그는 장기적인 값을 포함해야 합니다.
경고 3 애플리케이션 흐름에서 비정상적이거나 예기치 않은 이벤트를 강조 표시하지만, 그렇지 않으면 애플리케이션 실행을 중지하지 않는 로그입니다.
오류 4 오류로 인해 현재 실행 흐름이 중지될 경우 이를 강조하는 로그입니다. 이 오류들은 현재 활동의 실패를 나타내며, 애플리케이션 전체의 오류는 아닙니다.
위험 5 복구할 수 없는 애플리케이션 또는 시스템 크래시나 즉각적인 주의가 필요한 치명적인 오류를 설명하는 로그입니다.
None 6 지정된 범주에 대하여 로깅을 비활성화합니다.

host.json 파일 구성은 함수 앱이 Application Insights에 보내는 로깅의 양을 결정합니다.

로그 수준에 대한 자세한 내용은 로그 수준 구성을 참조하세요.

로깅된 항목을 범주에 할당하면, 함수 앱의 특정 원본에서 생성되는 원격 분석을 보다 확실하게 제어할 수 있습니다. 범주를 사용하면 수집된 데이터에 대한 분석을 보다 쉽게 실행할 수 있습니다. 함수 코드에서 작성된 추적은 함수 이름에 따라 개별적인 범주들에 할당됩니다. 카테고리에 대한 자세한 내용은 카테고리 구성을 참조하세요.

사용자 지정 원격 분석 데이터

함수에서 사용자 지정 원격 분석 데이터를 작성하려면 Application Insights 및 OTLP 규격 엔드포인트로 보낼 수 있는 표준 기반 원격 분석을 제공하는 OpenTelemetry 내보내기를 사용하는 것이 좋습니다.

언어별 클래식 Application Insights SDK를 사용하여 C#, JavaScriptPython 사용자 지정 원격 분석을 작성할 수도 있습니다. 그러나 이러한 클래식 SDK는 레거시이며 새로운 기능 업데이트를 받지 않습니다. 장기 지원을 위해 OpenTelemetry로 마이그레이션 할 계획입니다.

종속성

Functions 버전 2.x부터 Application Insights는 특정 클라이언트 SDK를 사용하는 바인딩의 종속성에 대한 데이터를 자동으로 수집합니다. Application Insights는 다음 종속성에 대한 데이터를 수집합니다.

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Azure Storage 서비스(Blob, Queue 및 Table)

SqlClient를 사용하는 HTTP 요청 및 데이터베이스 호출도 캡처됩니다. Application Insights에서 지원하는 종속성의 전체 목록은 자동으로 추적되는 종속성에서 확인할 수 있습니다.

Application Insights는 수집된 종속성 데이터의 애플리케이션 맵을 생성합니다. 다음은 Queue Storage 출력 바인딩이 있는 HTTP 트리거 함수의 애플리케이션 맵 예입니다.

스크린샷은 Azure 포털에서 종속성이 있는 애플리케이션 맵을 표시합니다.

종속성은 Information 수준에서 작성됩니다. 이상에서 Warning 필터링하는 경우 종속성 데이터가 표시되지 않습니다. 또한 사용자 범위 외에서 자동 종속성 수집이 발생합니다. 종속성 데이터를 캡처하려면 수준이 사용자의 호스트에서 사용자 범위(Information) 외부에서 Function.<YOUR_FUNCTION_NAME>.User 이상으로 설정되어 있는지 확인하세요.

자동 종속성 데이터 수집 외에도 사용자 지정 종속성 정보를 로그에 쓸 수 있습니다. 표준 기반 종속성 추적에 OpenTelemetry 내보내기를 사용하는 것이 좋습니다.

언어별 클래식 Application Insights SDK를 사용할 수도 있지만 이러한 SDK는 레거시이며 새 기능 업데이트를 받지 않습니다.

성능 카운터

Linux에서 실행하는 경우 성능 카운터의 자동 컬렉션이 지원되지 않습니다.

로그에 작성하기

로그 및 사용하는 API에 작성을 하는 방법은 함수 앱 프로젝트의 언어에 따라 달라집니다. 함수에서 로그를 작성하는 방법에 대한 자세한 내용은 사용자의 언어로 된 개발자 가이드에서 확인할 수 있습니다.

데이터 분석

기본적으로 함수 앱에서 수집된 데이터는 Application Insights에 저장됩니다. Azure 포털 Application Insights는 원격 분석 데이터의 광범위한 시각화 집합을 제공합니다. 사용자가 오류 로그를 자세히 살펴보고 이벤트와 메트릭을 쿼리할 수 있습니다. 수집된 데이터를 보고 쿼리하는 기본 예제 등 자세한 내용을 보려면 Application Insights에서 Azure Functions 원격 분석을 분석하는 방법을 참조하세요.

스트리밍 로그

애플리케이션을 개발하는 동안 Azure 실행할 때 로그에 기록되는 내용을 거의 실시간으로 확인하려고 하는 경우가 많습니다.

함수 실행에 의해 생성되는 로그 데이터의 스트림을 확인하는 두 가지 방법이 있습니다.

  • 기본 제공 로그 스트리밍: App Service 플랫폼을 사용하면 애플리케이션 로그 파일의 스트림을 확인할 수 있습니다. 이 스트림은 로컬 개발 중에 함수를 디버그할 때와 포털에서 테스트 탭을 사용할 때 표시되는 출력에 해당합니다. 모든 로그 기반 정보가 표시됩니다. 자세한 정보는 스트림 로그에서 확인할 수 있습니다. 이 스트리밍 방법은 단일 인스턴스만 지원하며, 사용량 계획을 사용하는 Linux에서 실행되는 앱에는 사용할 수 없습니다.

  • Live 메트릭 스트림: 함수 앱이 Application Insights에 > 연결되면 Live 메트릭 스트림<을 사용하여 Azure 포털에서 로그 데이터 및 기타 메트릭을 거의 실시간으로 볼 수 있습니다. 다수의 인스턴스 또는 사용량 계획을 사용하는 Linux에서 실행되는 함수를 모니터링할 때 이 방법을 사용하세요. 이 방법은 샘플링된 데이터를 사용합니다.

포털과 대부분의 로컬 개발 환경에서 로그 스트림을 확인할 수 있습니다. 로그 스트림을 사용하도록 설정하는 방법을 알아보려면 Azure Functions 참조하세요.

진단 로그

Application Insights를 사용하면 원격 분석 데이터를 장기 스토리지 또는 다른 분석 서비스로 내보낼 수 있습니다.

Functions는 Azure Monitor 통합되므로 진단 설정을 사용하여 Azure Monitor 로그를 비롯한 다양한 대상으로 원격 분석 데이터를 보낼 수도 있습니다. 자세한 내용은 모니터 Azure Functions 참조하세요.

컨트롤러 로그 크기 조정

Azure Functions 크기 조정 컨트롤러 앱이 실행되는 Azure Functions 호스트의 인스턴스를 모니터링합니다. 이 컨트롤러는 현재 성능에 기반하여 인스턴스를 추가하거나 제거할 시기를 결정합니다. 크기 조정 컨트롤러가 Application Insights에 로그를 전송하도록 하여, 크기 조정 컨트롤러가 사용자의 함수 앱에 대해 내리는 결정을 더 잘 파악할 수 있습니다. 생성된 로그를 Blob Storage에 저장하여 다른 서비스에서 분석하게 할 수도 있습니다.

이 기능을 활성화하려면, SCALE_CONTROLLER_LOGGING_ENABLED라는 애플리케이션 설정을 함수 앱 설정에 추가하세요. 이 방법을 알아보려면, 크기 조정 컨트롤러 로그 구성에서 확인할 수 있습니다.

Azure Monitor 측정항목

Application Insights에서 수집한 로그 기반 원격 분석 데이터 외에도 함수 앱이 Azure Monitor 메트릭 실행되는 방법에 대한 데이터를 가져올 수도 있습니다. 자세한 내용은 모니터 Azure Functions 참조하세요.

문제 보고

Functions에서 Application Insights 통합과 관련된 문제를 보고하거나 제안하거나 요청하려면 GitHub 문제를 만듭니다.

다음 단계

자세한 내용은 다음 리소스를 참조하세요.