Application Insights에서 Azure Functions 원격 분석 분석Analyze Azure Functions telemetry in Application Insights

Azure Functions는 Application Insights와 통합 되어 함수 앱을 보다 효율적으로 모니터링할 수 있습니다.Azure Functions integrates with Application Insights to better enable you to monitor your function apps. Application Insights는 앱이 로그에 기록 하는 정보를 포함 하 여 함수 앱에 의해 생성 된 원격 분석 데이터를 수집 합니다.Application Insights collects telemetry data generated by your function app, including information your app writes to logs. Application Insights 통합은 일반적으로 함수 앱을 만들 때 사용 하도록 설정 됩니다.Application Insights integration is typically enabled when your function app is created. 함수 앱에 계측 키가 설정 되어 있지 않은 경우에는 먼저 Application Insights 통합을 사용 하도록 설정해야 합니다.If your function app doesn't have the instrumentation key set, you must first enable Application Insights integration.

기본적으로 함수 앱에서 수집 된 데이터는 Application Insights에 저장 됩니다.By default, the data collected from your function app is stored in Application Insights. Azure Portal에서 Application Insights는 원격 분석 데이터의 광범위 한 시각화 집합을 제공 합니다.In the Azure portal, Application Insights provides an extensive set of visualizations of your telemetry data. 오류 로그와 쿼리 이벤트 및 메트릭을 자세히 살펴볼 수 있습니다.You can drill into error logs and query events and metrics. 이 문서에서는 수집 된 데이터를 보고 쿼리 하는 방법에 대 한 기본 예를 제공 합니다.This article provides basic examples of how to view and query your collected data. Application Insights에서 함수 앱 데이터를 탐색 하는 방법에 대 한 자세한 내용은 Application Insights 무엇 인가요?를 참조 하세요.To learn more about exploring your function app data in Application Insights, see What is Application Insights?.

데이터 보존 및 잠재적 저장소 비용에 대 한 자세한 내용은 Application Insights의 데이터 수집, 보존 및 저장을 참조 하세요.To learn more about data retention and potential storage costs, see Data collection, retention, and storage in Application Insights.

모니터 탭에서 원격 분석 보기Viewing telemetry in Monitor tab

Application Insights 통합을 사용하면 모니터링 탭에서 원격 분석 데이터를 볼 수 있습니다.With Application Insights integration enabled, you can view telemetry data in the Monitor tab.

  1. 함수 앱 페이지에서 Application Insights가 구성된 후 한 번 이상 실행된 함수를 선택합니다.In the function app page, select a function that has run at least once after Application Insights was configured. 그런 다음, 왼쪽 창에서 모니터링 을 선택합니다.Then, select Monitor from the left pane. 함수 호출 목록이 나타날 때까지 새로 고침 을 주기적으로 선택합니다.Select Refresh periodically, until the list of function invocations appears.

    호출 목록

    참고

    원격 분석 클라이언트 일괄 처리 데이터가 서버로 전송되기 때문에 이 목록이 표시되는 데 최대 5분 정도 걸릴 수 있습니다.It can take up to five minutes for the list to appear while the telemetry client batches data for transmission to the server. 라이브 메트릭 스트림에는 이러한 지연 시간이 없습니다.The delay doesn't apply to the Live Metrics Stream. 이 서비스는 페이지를 로드할 때 함수 호스트에 연결되므로 로그가 페이지에 직접 스트리밍됩니다.That service connects to the Functions host when you load the page, so logs are streamed directly to the page.

  2. 특정 함수 호출에 대한 로그를 보려면 해당 호출의 날짜(UTC) 열 링크를 선택합니다.To see the logs for a particular function invocation, select the Date (UTC) column link for that invocation. 해당 호출에 대한 로깅 출력이 새 페이지에 나타납니다.The logging output for that invocation appears in a new page.

    호출 정보

  3. Choose Application Insights에서 실행 을 선택하면 Azure Log에서 Azure Monitor 로그 데이터를 검색하는 쿼리 소스를 볼 수 있습니다.Choose Run in Application Insights to view the source of the query that retrieves the Azure Monitor log data in Azure Log. 구독에서 Azure Log Analytics를 처음 사용하는 경우 사용하도록 설정하라는 메시지가 표시됩니다.If this is your first time using Azure Log Analytics in your subscription, you're asked to enable it.

  4. Log Analytics를 사용하도록 설정하면 다음 쿼리가 표시됩니다.After you enable Log Analytics, the following query is displayed. 쿼리 결과가 최근 30 일 ()으로 제한 되 where timestamp > ago(30d) 고 결과에 20 개 이하의 행 ()이 표시 되는 것을 볼 수 있습니다 take 20 .You can see that the query results are limited to the last 30 days (where timestamp > ago(30d)), and the results show no more than 20 rows (take 20). 반면, 함수의 호출 세부 정보 목록은 최근 30일의 정보가 제한 없이 제공됩니다.In contrast, the invocation details list for your function is for the last 30 days with no limit.

    Application Insights 분석 호출 목록

자세한 내용은 이 문서의 뒷부분에 나오는 원격 분석 데이터 쿼리를 참조하세요.For more information, see Query telemetry data later in this article.

Application Insights에서 원격 분석 보기View telemetry in Application Insights

Azure Portal의 함수 앱에서 Application Insights를 열려면 다음을 수행 합니다.To open Application Insights from a function app in the Azure portal:

  1. 포털에서 함수 앱으로 이동 합니다.Browse to your function app in the portal.

  2. 왼쪽 페이지의 설정 에서 Application Insights 를 선택 합니다.Select Application Insights under Settings in the left page.

  3. 구독과 함께 Application Insights를 처음 사용 하는 경우이를 사용 하도록 설정 하 라는 메시지가 표시 됩니다.If this is your first time using Application Insights with your subscription, you'll be prompted to enable it. 이렇게 하려면 Application Insights 켜기 를 선택 하 고 다음 페이지에서 적용 을 선택 합니다.To do this, select Turn on Application Insights, and then select Apply on the next page.

함수 앱 [개요] 페이지에서 Application Insights 열기

Application Insights 사용 방법에 대한 자세한 내용은 Application Insights 설명서를 참조하세요.For information about how to use Application Insights, see the Application Insights documentation. 이 섹션에서는 Application Insights에서 데이터를 보는 방법에 대한 몇 가지 예를 보여줍니다.This section shows some examples of how to view data in Application Insights. 이미 Application Insights에 익숙한 경우 원격 분석 데이터를 구성하고 사용자 지정하는 방법에 대한 섹션으로 바로 넘어가도 됩니다.If you're already familiar with Application Insights, you can go directly to the sections about how to configure and customize the telemetry data.

Application Insights 개요 탭

함수의 동작, 성능 및 오류를 평가할 때 Application Insights의 다음 영역을 유용하게 사용할 수 있습니다.The following areas of Application Insights can be helpful when evaluating the behavior, performance, and errors in your functions:

조사Investigate DescriptionDescription
실패Failures 함수 오류 및 서버 예외를 기반으로 차트와 경고를 만듭니다.Create charts and alerts based on function failures and server exceptions. 작업 이름 은 함수 이름입니다.The Operation Name is the function name. 종속성에 대한 사용자 지정 원격 분석을 구현하지 않으면 종속성 오류가 표시되지 않습니다.Failures in dependencies aren't shown unless you implement custom telemetry for dependencies.
성능Performance 클라우드 역할 인스턴스 당 리소스 사용률 및 처리량을 확인하여 성능 문제를 분석합니다.Analyze performance issues by viewing resource utilization and throughput per Cloud role instances. 이 성능 데이터는 함수가 기본 리소스를 정체 하는 시나리오를 디버깅 하는 데 유용할 수 있습니다.This performance data can be useful for debugging scenarios where functions are bogging down your underlying resources.
메트릭Metrics 메트릭 기반의 차트 및 경고를 만듭니다.Create charts and alerts that are based on metrics. 메트릭에는 함수 호출 수, 실행 시간 및 성공률이 포함됩니다.Metrics include the number of function invocations, execution time, and success rates.
라이브 메트릭Live Metrics 거의 실시간으로 생성 된 메트릭 데이터를 봅니다.View metrics data as it's created in near real time.

원격 분석 데이터 쿼리Query telemetry data

Application Insights Analytics를 사용하면 데이터베이스의 모든 원격 분석 데이터를 테이블 형식으로 사용할 수 있습니다.Application Insights Analytics gives you access to all telemetry data in the form of tables in a database. Analytics는 데이터를 추출, 조작 및 시각화하는 쿼리 언어를 제공합니다.Analytics provides a query language for extracting, manipulating, and visualizing the data.

로깅된 이벤트를 살펴보거나 쿼리하려면 로그 를 선택합니다.Choose Logs to explore or query for logged events.

Analytics 예제

다음 쿼리 예제는 지난 30분간의 작업자당 요청 분포를 보여줍니다.Here's a query example that shows the distribution of requests per worker over the last 30 minutes.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

사용할 수 있는 테이블은 왼쪽의 스키마 탭에 표시됩니다.The tables that are available are shown in the Schema tab on the left. 다음 테이블에서 함수 호출에 의해 생성된 데이터를 찾을 수 있습니다.You can find data generated by function invocations in the following tables:

테이블Table DescriptionDescription
tracestraces 함수 코드에서 런타임, 크기 조정 컨트롤러 및 추적에 의해 생성 된 로그입니다.Logs created by the runtime, scale controller, and traces from your function code.
requestsrequests 함수가 호출될 때마다 요청 하나입니다.One request for each function invocation.
exceptionsexceptions 런타임에서 throw하는 예외입니다.Any exceptions thrown by the runtime.
customMetricscustomMetrics 성공 및 실패 호출의 수, 성공률 및 기간입니다.The count of successful and failing invocations, success rate, and duration.
customEventscustomEvents 런타임이 추적하는 이벤트. 예: 함수를 트리거하는 HTTP 요청Events tracked by the runtime, for example: HTTP requests that trigger a function.
performanceCountersperformanceCounters 함수가 실행되고 있는 서버의 성능에 대한 정보입니다.Information about the performance of the servers that the functions are running on.

나머지 테이블은 가용성 테스트와 클라이언트/브라우저 원격 분석용입니다.The other tables are for availability tests, and client and browser telemetry. 사용자 지정 원격 분석을 구현하여 테이블에 데이터를 추가할 수 있습니다.You can implement custom telemetry to add data to them.

각 테이블 내에서 일부 Functions 관련 데이터는 customDimensions 필드에 있습니다.Within each table, some of the Functions-specific data is in a customDimensions field. 예를 들어 다음 쿼리는 로그 수준이 Error인 모든 추적을 검색합니다.For example, the following query retrieves all traces that have log level Error.

traces 
| where customDimensions.LogLevel == "Error"

런타임은 customDimensions.LogLevelcustomDimensions.Category 필드를 제공합니다.The runtime provides the customDimensions.LogLevel and customDimensions.Category fields. 함수 코드에서 작성하는 로그에 추가 필드를 제공할 수 있습니다.You can provide additional fields in logs that you write in your function code. C #의 예제는 .NET 클래스 라이브러리 개발자 가이드의 구조적 로깅 을 참조 하세요.For an example in C#, see Structured logging in the .NET class library developer guide.

쿼리 크기 조정 컨트롤러 로그Query scale controller logs

‘이 기능은 미리 보기로 제공됩니다.’This feature is in preview.

크기 조정 컨트롤러 로깅Application Insights 통합을 모두 사용 하도록 설정한 후 Application Insights 로그 검색을 사용 하 여 내보낸 크기 조정 컨트롤러 로그를 쿼리할 수 있습니다.After enabling both scale controller logging and Application Insights integration, you can use the Application Insights log search to query for the emitted scale controller logs. 크기 조정 컨트롤러 로그는 컬렉션의 traces ScaleControllerLogs 범주에 저장 됩니다.Scale controller logs are saved in the traces collection under the ScaleControllerLogs category.

다음 쿼리를 사용 하 여 지정 된 기간 내에 현재 함수 앱에 대 한 모든 크기 조정 컨트롤러 로그를 검색할 수 있습니다.The following query can be used to search for all scale controller logs for the current function app within the specified time period:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

다음 쿼리는 이전 쿼리를 확장 하 여 규모 변경을 나타내는 로그만 가져오는 방법을 보여 줍니다.The following query expands on the previous query to show how to get only logs indicating a change in scale:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

소비 계획 별 메트릭Consumption plan-specific metrics

소비 계획에서 실행 하는 경우 단일 함수 실행의 실행 비용은 GB 초 단위로 측정 됩니다.When running in a Consumption plan, the execution cost of a single function execution is measured in GB-seconds. 실행 비용은 메모리 사용량과 실행 시간을 결합 하 여 계산 됩니다.Execution cost is calculated by combining its memory usage with its execution time. 자세히 알아보려면 소비 계획 비용 예측을 참조 하세요.To learn more, see Estimating Consumption plan costs.

다음 원격 분석 쿼리는 소비 계획에서 함수를 실행 하는 비용에 영향을 주는 메트릭에만 적용 됩니다.The following telemetry queries are specific to metrics that impact the cost of running functions in the Consumption plan.

메모리 사용량 확인Determine memory usage

모니터링 아래에서 로그(분석) 를 선택한 후, 다음 원격 분석 쿼리를 복사하여 쿼리 창에 붙여넣고 실행 을 선택합니다.Under Monitoring, select Logs (Analytics), then copy the following telemetry query and paste it into the query window and select Run. 이 쿼리는 샘플링된 각 시간의 총 메모리 사용량을 반환합니다.This query returns the total memory usage at each sampled time.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

결과는 다음 예제와 같습니다.The results look like the following example:

타임스탬프 [UTC]timestamp [UTC] namename value
2019/9/12, 1:05:14.947 AM9/12/2019, 1:05:14.947 AM 프라이빗 바이트Private Bytes 209,932,288209,932,288
2019/9/12, 1:06:14.994 AM9/12/2019, 1:06:14.994 AM 프라이빗 바이트Private Bytes 212,189,184212,189,184
2019/9/12, 1:06:30.010 AM9/12/2019, 1:06:30.010 AM 프라이빗 바이트Private Bytes 231,714,816231,714,816
2019/9/12, 1:07:15.040 AM9/12/2019, 1:07:15.040 AM 프라이빗 바이트Private Bytes 210,591,744210,591,744
2019/9/12, 1:12:16.285 AM9/12/2019, 1:12:16.285 AM 프라이빗 바이트Private Bytes 216,285,184216,285,184
2019/9/12, 1:12:31.376 AM9/12/2019, 1:12:31.376 AM 프라이빗 바이트Private Bytes 235,806,720235,806,720

기간 결정Determine duration

Azure Monitor는 Functions의 경우 함수 앱인 리소스 수준에서 메트릭을 추적합니다.Azure Monitor tracks metrics at the resource level, which for Functions is the function app. Application Insights 통합은 함수 단위로 메트릭을 내보냅니다.Application Insights integration emits metrics on a per-function basis. 함수의 평균 기간을 가져오는 분석 쿼리 예제는 다음과 같습니다.Here's an example analytics query to get the average duration of a function:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
namename averageDurationMillisecondsaverageDurationMilliseconds
QueueTrigger AvgDurationMsQueueTrigger AvgDurationMs 16.08716.087
QueueTrigger MaxDurationMsQueueTrigger MaxDurationMs 90.24990.249
QueueTrigger MinDurationMsQueueTrigger MinDurationMs 8.5228.522

Azure Monitor 메트릭Azure Monitor metrics

Application Insights에 의해 수집 된 원격 분석 데이터 외에도 Azure Monitor 메트릭에함수 앱이 실행 되는 방법에 대 한 데이터를 가져올 수 있습니다.In addition to telemetry data collected by Application Insights, you can also get data about how the function app is running from Azure Monitor Metrics. 앱을 App Service 하는 데 사용할 수있는 일반적인 메트릭과 함께 관심 있는 함수와 관련 된 두 가지 메트릭이 있습니다.Along with the usual metrics available to App Service apps, there are two metrics specific to Functions that are of interest:

메트릭Metric 설명Description
FunctionExecutionCountFunctionExecutionCount 함수 실행 횟수는 함수 앱이 실행 된 횟수를 나타냅니다.Function execution count indicates the number of times your function app has executed. 이는 응용 프로그램에서 함수가 실행 되는 횟수와 관련이 있습니다.This correlates to the number of times a function runs in your app. 이 메트릭은 Linux에서 실행 되는 프리미엄 및 전용 (App Service) 요금제에 대해 현재 지원 되지 않습니다.This metric isn't currently supported for Premium and Dedicated (App Service) plans running on Linux.
FunctionExecutionUnitsFunctionExecutionUnits 함수 실행 단위는 실행 시간 및 메모리 사용의 조합입니다.Function execution units are a combination of execution time and your memory usage. 메모리 데이터는 현재 Azure Monitor를 통해 사용할 수 있는 메트릭이 아닙니다.Memory data isn't a metric currently available through Azure Monitor. 그러나 앱의 메모리 사용을 최적화 하려는 경우는 Application Insights에서 수집 된 성능 카운터 데이터를 사용할 수 있습니다.However, if you want to optimize the memory usage of your app, can use the performance counter data collected by Application Insights. 이 메트릭은 Linux에서 실행 되는 프리미엄 및 전용 (App Service) 요금제에 대해 현재 지원 되지 않습니다.This metric isn't currently supported for Premium and Dedicated (App Service) plans running on Linux.

Application Insights 데이터를 사용 하 여 소비 계획에 대 한 비용을 계산 하는 방법에 대 한 자세한 내용은 소비 계획 비용 예측을 참조 하세요.To learn more about calculating costs for a Consumption plan using Application Insights data, see Estimating Consumption plan costs. 모니터 탐색기를 사용 하 여 메트릭을 보는 방법에 대 한 자세한 내용은 Azure 메트릭 탐색기 시작을 참조 하세요.To learn more about using Monitor Explorer to view metrics, see Getting started with Azure Metrics Explorer.

다음 단계Next steps

Azure Functions 모니터링에 대해 자세히 알아보세요.Learn more about monitoring Azure Functions: