Azure Functions
Azure Functions is a serverless solution that allows you to write less code, maintain less infrastructure, and save on costs. This integration helps in monitoring the health, tracking executions, and estimating cost of your function apps.
Log and metric types
The Sumo Logic app for Azure Functions app uses the following log and metrics types:
- Function Application Logs. Log generated by the Function App. It includes the logs emitted by the Functions host and logs emitted by customer code. Use these logs to monitor application health, performance, and behavior. For more information on supported metrics, refer to Azure documentation.
- App Service Authentication Logs. App Service Authentication Logs are generated for common Warning and Error logs from the App Service authentication requests. For more information on supported metrics, refer to Azure documentation.
To learn more about configuring monitoring for azure functions, refer to the Azure documentation.
-
Activity logs, provides insight into any subscription-level or management group level events that have occurred in the Azure. To learn more, refer to Azure documentation.
-
Azure Functions specific metrics. These are metrics specific to Functions like execution count and execution units. For more information on supported metrics, refer to Azure documentation.
-
General App Service metrics. Metrics which App Service platform implements. These metrics are available in the
Microsoft.Web/sites
namespace. For more information on supported metrics, refer to Azure documentation.
Sample queries
tenant_name=* subscription_id=* location=* resource_group=* provider_name=microsoft.web resource_type=sites resource_name=* (metric=Http4xx or metric=Http5xx) statistic=total
Setup
Azure service sends monitoring data to Azure Monitor, which can then stream data to Eventhub. Sumo Logic supports:
- Logs collection from Azure Monitor using our Azure Event Hubs source.
- Metrics collection using our HTTP Logs and Metrics source via Azure Functions deployed using the ARM template.
You must explicitly enable diagnostic settings for each Azure Functions you want to monitor. Diagnostic Settings are not supported for function apps running on version 1.x. You can forward logs to the same Event Hub provided they satisfy the limitations and permissions as described here.
When you configure the event hubs source or HTTP source, plan your source category to ease the querying process. A hierarchical approach allows you to make use of wildcards. For example: Azure/FunctionApp/Logs
, Azure/FunctionApp/Metrics
.
Configure field in field schema
- Classic UI. In the main Sumo Logic menu, select Manage Data > Logs > Fields.
New UI. In the top menu select Configuration, and then under Logs select Fields. You can also click the Go To... menu at the top of the screen and select Fields. - Search for following fields:
tenant_name
. This field is tagged at the collector level and you can get the tenant name using the instructions here.location
. The region to which the resource name belongs to.subscription_id
. ID associated with a subscription where resource is present.resource_group
. The resource group name where the Azure resource is present.provider_name
. Azure resource provider name (for example, Microsoft.WEB).resource_type
. Azure resource type (for example, SITES).resource_name
. The name of the resource (for example, Azure Function App name).
- Create the fields if they are not present. Refer to Manage fields.
Configure Field Extraction Rules
Create a Field Extraction Rule (FER) by following the instructions here. If the FER already exists with same name, then skip this step.
Azure Location Extraction FER
Rule Name: AzureLocationExtractionFER
Applied at: Ingest Time
Scope (Specific Data): tenant_name=*
json "location", "properties.resourceLocation", "properties.region" as location, resourceLocation, service_region nodrop
| replace(toLowerCase(resourceLocation), " ", "") as resourceLocation
| if (!isBlank(resourceLocation), resourceLocation, location) as location
| if (!isBlank(service_region), service_region, location) as location
| if (isBlank(location), "global", location) as location
| fields location
Resource ID Extraction FER
Rule Name: AzureResourceIdExtractionFER
Applied at: Ingest Time
Scope (Specific Data): tenant_name=*
json "resourceId", "ResourceId" as resourceId1, resourceId2 nodrop
| if (isBlank(resourceId1), resourceId2, resourceId1) as resourceId
| toUpperCase(resourceId) as resourceId
| parse regex field=resourceId "/SUBSCRIPTIONS/(?<subscription_id>[^/]+)" nodrop
| parse field=resourceId "/RESOURCEGROUPS/*/" as resource_group nodrop
| parse regex field=resourceId "/PROVIDERS/(?<provider_name>[^/]+)" nodrop
| parse regex field=resourceId "/PROVIDERS/[^/]+(?:/LOCATIONS/[^/]+)?/(?<resource_type>[^/]+)/(?<resource_name>.+)" nodrop
| parse regex field=resource_name "(?<parent_resource_name>[^/]+)(?:/PROVIDERS/[^/]+)?/(?<service_type>[^/]+)/?(?<service_name>.+)" nodrop
| if (isBlank(parent_resource_name), resource_name, parent_resource_name) as resource_name
| fields subscription_id, location, provider_name, resource_group, resource_type, resource_name, service_type, service_name
Configure metric rules
Azure Observability Metadata Extraction Service Level
If this rule already exists, there's no need to create it again.
Rule Name: AzureObservabilityMetadataExtractionAppServiceLevel
resourceId=/SUBSCRIPTIONS/*/RESOURCEGROUPS/*/PROVIDERS/*/SITES/* tenant_name=*
Fields extracted | Metric rule |
---|---|
subscription_id | $resourceId._1 |
resource_group | $resourceId._2 |
provider_name | $resourceId._3 |
resource_type | SITES |
resource_name | $resourceId._4 |
Configure metrics collection
In this section, you will configure a pipeline for shipping metrics from Azure Monitor to an Event Hub, on to an Azure Function, and finally to an HTTP Source on a hosted collector in Sumo Logic.
- Configure an HTTP Source.
- Configure and deploy the ARM Template.
- Export metrics to Event Hub. Perform below steps for each Azure Functions that you want to monitor.
- Choose
Stream to an event hub
as destination. - Select
AllMetrics
. - Use the Event Hub namespace created by the ARM template in Step 2 above. You can create a new Event Hub or use the one created by ARM template. You can use the default policy
RootManageSharedAccessKey
as the policy name.
- Choose
- Tag the location field in the source with right location value.
Configure logs collection
Diagnostic logs
In this section, you will configure a pipeline for shipping diagnostic logs from Azure Monitor to an Event Hub.
- To set up the Azure Event Hubs source in Sumo Logic, refer to the Azure Event Hubs Source for Logs.
- To create the Diagnostic setting in the Azure portal, refer to the Azure documentation. Perform the below steps for each Azure Functions that you want to monitor.
- Choose
Stream to an event hub
as the destination. - Select
AllMetrics
. - Use the Event Hub namespace and Event Hub name configured in previous step in destination details section. You can use the default policy
RootManageSharedAccessKey
as the policy name.
- Choose
- Tag the location field in the source with right location value.
Activity logs (optional)
To collect activity logs, follow the instructions here. If you are already collecting activity logs for a subscription, do not perform this step.
Since this source contains logs from multiple regions, make sure that you do not tag this source with the location tag.
Enabling Microsoft Defender for Cloud
For Security events, make sure you enable Microsoft Defender for Cloud. In Defender Plans Settings page toggle the App Service status under Cloud Workload Protection section.
Enabling health check metric
For getting health check metric, make sure you enable Health check under the Monitoring dropdown.
Installing the Azure Functions app
This section provides instructions on how to install the Azure Functions app, and shows examples of each of the preconfigured dashboards you can use to analyze your data.
To install the app, do the following:
- Select App Catalog.
- In the 🔎 Search Apps field, run a search for your desired app, then select it.
- Click Install App.
note
Sometimes this button says Add Integration.
- Click Next in the Setup Data section.
- In the Configure section of your respective app, complete the following fields.
- Key. Select either of these options for the data source.
- Choose Source Category and select a source category from the list for Default Value.
- Choose Custom, and enter a custom metadata field. Insert its value in Default Value.
- Key. Select either of these options for the data source.
- Click Next. You will be redirected to the Preview & Done section.
Post-installation
Once your app is installed, it will appear in your Installed Apps folder, and dashboard panels will start to fill automatically.
Each panel slowly fills with data matching the time range query and received since the panel was created. Results will not immediately be available, but will update with full graphs and charts over time.
Viewing the Azure Functions dashboards
All dashboards have a set of filters that you can apply to the entire dashboard. Use these filters to drill down and examine the data to a granular level.
- You can change the time range for a dashboard or panel by selecting a predefined interval from a drop-down list, choosing a recently used time range, or specifying custom dates and times. Learn more.
- You can use template variables to drill down and examine the data on a granular level. For more information, see Filtering Dashboards with Template Variables.
- Most Next-Gen apps allow you to provide the scope at the installation time and are comprised of a key (
_sourceCategory
by default) and a default value for this key. Based on your input, the app dashboards will be parameterized with a dashboard variable, allowing you to change the dataset queried by all panels. This eliminates the need to create multiple copies of the same dashboard with different queries.
Overview
The Azure Functions - Overview dashboard provides comprehensive information of all the service health incidents or resource health events associated with Azure Functions in your azure account.
Use this dashboard to:
- View recent resource and service health incidents.
- View distribution of service and resource health by incident type.
Cost
The Azure Functions - Cost dashboard provides information about the expenses associated with your Azure Functions. This includes details on the cost of resources, usage trends, and cost management insights.
Use this dashboard to:
- Monitor and analyze your spending on Azure Functions.
- Review cost trends and identify areas where you can optimize spending.
- Access detailed billing information and cost breakdowns.
Error
The Azure Functions - Error dashboard provides insights into errors encountered by your Azure Functions. This includes error rates, types of errors, and patterns over time.
Use this dashboard to:
- Track and investigate error occurrences in your Azure Functions.
- Identify and diagnose recurring error patterns.
- Review error logs and detailed reports to improve function reliability.
Memory
The Azure Functions - Memory dashboard provides information on memory usage and consumption by your Azure Functions. This includes metrics on memory allocation, usage patterns, and any potential memory issues.
Use this dashboard to:
- Monitor memory consumption and efficiency of your Azure Functions.
- Identify and address memory-related performance issues.
- Analyze trends in memory usage to optimize function performance.
Network
The Azure Functions - Network dashboard provides details on network traffic and connectivity related to your Azure Functions. This includes data on inbound and outbound traffic, network latency, and potential network issues.
Use this dashboard to:
- Track network activity and performance of your Azure Functions.
- Diagnose network-related issues and connectivity problems.
- Monitor network usage and optimize network configuration.
Operations
The Azure Functions - Operations dashboard provides an overview of operational metrics and activities related to your Azure Functions. This includes I/O Read, Write bytes/second and I/O Read, Write operations/second.
Use this dashboard to:
- Monitor the operational status and health of your Azure Functions.
- Review deployment activities and execution metrics.
- Analyze operational trends and optimize function management.
OS Statistics
The Azure Functions - OS Statistics dashboard provides information on operating system metrics and statistics relevant to your Azure Functions. This includes details on current assemblies, number of processor threads and other OS-level performance indicators.
Use this dashboard to:
- Track OS-level performance metrics impacting your Azure Functions.
- Monitor Current assemblies, threads, and handles for optimal performance.
- Identify and address OS-related performance issues.
Performance
The Azure Functions - Performance dashboard provides insights into the performance of your Azure Functions. This includes metrics on execution times, throughput, and overall function efficiency.
Use this dashboard to:
- Monitor and analyze the performance of your Azure Functions.
- Identify performance bottlenecks and optimize function execution.
- Review performance metrics and trends to ensure optimal function performance.
Health
The Azure Functions - Health dashboard provides information of any service health incidents or resource health events associated with Azure Functions in your azure account.
Use this dashboard to:
- View recent resource and service health incidents.
- View distribution of service and resource health by incident type.
Policy and Recommendations
The Azure Functions - Policy and Recommendations dashboard provides information of all effect action operations performed by Azure policy and recommendations events from Azure Advisor.
Use this dashboard to:
- Monitor policy events with warnings and errors.
- View recent failed policy events.
- View total recommendation events.
- Identify High Impact recommendations.
- View recent recommendation events and navigate to the affected resource.
Administrative Operations
The Azure SQL - Administrative Operations dashboard provides details on read/write/delete specific changes, different operations used, top 10 operations that caused most errors, and users performing admin operations.
Use this dashboard to:
- Identify top users performing administrative operations.
- View Top 10 operations that caused the most errors.
- View recent read, write, and delete operations.
Upgrade/Downgrade the Azure Functions app (Optional)
To update the app, do the following:
- Select App Catalog.
- In the Search Apps field, search for and then select your app.
Optionally, you can identify apps that can be upgraded in the Upgrade available section. - To upgrade the app, select Upgrade from the Manage dropdown.
- If the upgrade does not have any configuration or property changes, you will be redirected to the Preview & Done section.
- If the upgrade has any configuration or property changes, you will be redirected to Setup Data page.
- In the Configure section of your respective app, complete the following fields.
- Key. Select either of these options for the data source.
- Choose Source Category and select a source category from the list for Default Value.
- Choose Custom and enter a custom metadata field. Insert its value in Default Value.
- Key. Select either of these options for the data source.
- Click Next. You will be redirected to the Preview & Done section.
- In the Configure section of your respective app, complete the following fields.
Post-update
Your upgraded app will be installed in the Installed Apps folder, and dashboard panels will start to fill automatically.
See our Release Notes changelog for new updates in the app.
To revert the app to a previous version, do the following:
- Select App Catalog.
- In the Search Apps field, search for and then select your app.
- To version down the app, select Revert to < previous version of your app > from the Manage dropdown.
Uninstalling the Azure Functions app (Optional)
To uninstall the app, do the following:
- Select App Catalog.
- In the 🔎 Search Apps field, run a search for your desired app, then select it.
- Click Uninstall.