From 8c15897fcfa3904f11ebb5033d71aad7ed5cab1b Mon Sep 17 00:00:00 2001 From: Sachin Magar Date: Mon, 24 Feb 2025 09:59:49 +0530 Subject: [PATCH 01/20] Azure Container Instances document --- .../azure-container-instances.md | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 docs/integrations/microsoft-azure/azure-container-instances.md diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md new file mode 100644 index 0000000000..c0351c75be --- /dev/null +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -0,0 +1,214 @@ +--- +id: azure-container-instances +title: Azure Container Instances +description: Learn about the Sumo Logic collection process for the Azure Container Instances service. +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +Thumbnail icon + +[Azure Container Instances](https://learn.microsoft.com/en-us/azure/container-instances/) is a fully managed serverless container service that enables you to deploy and manage containers in Azure without the need for virtual machines. It is ideal for event-driven applications, microservices, and batch processing workloads. + +## Log and metric types + +For Azure Container Instances, you can collect the following logs and metrics: + +* **Resource Logs**. Capture container creation, execution, and failure logs. The schema for resource logs is described [here](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#resource-logs). +* **Metrics**. Metrics for Azure Container Instances are in the following namespaces: + * [Microsoft.ContainerInstance/containerGroups](https://learn.microsoft.com/en-us/azure/azure-monitor/reference/supported-metrics/microsoft-containerinstance-containergroups-metrics) + +For more information on supported dimensions, refer to [Azure documentation](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#metrics). + +## Setup + +Azure service sends monitoring data to Azure Monitor, which can then [stream data to Eventhub](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/stream-monitoring-data-event-hubs). Sumo Logic supports: + +* Logs collection from [Azure Monitor](https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-get-started) using our [Azure Event Hubs source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/ms-azure-event-hubs-source/). +* Metrics collection using our [HTTP Logs and Metrics source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/) via Azure Functions deployed using the ARM template. + +You must explicitly enable diagnostic settings for each domain, namespaces, custom topic, and system topic you want to monitor. You can forward logs to the same event hub provided they satisfy the limitations and permissions as described [here](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings?tabs=portal#destination-limitations). + +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/AzureContainerInstances/Logs`, `Azure/AzureContainerInstances/Metrics`. + +### Configure field in field schema + +1. [**Classic UI**](/docs/get-started/sumo-logic-ui-classic). In the main Sumo Logic menu, select **Manage Data > Logs > Fields**.
[**New UI**](/docs/get-started/sumo-logic-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**. +1. Search for the following fields: + - `tenant_name`. This field is tagged at the collector level. You can get the tenant name using the instructions [here](https://learn.microsoft.com/en-us/azure/active-directory-b2c/tenant-management-read-tenant-name#get-your-tenant-name). + - `location`. The region to which the resource name belongs to. + - `subscription_id`. ID associated with a subscription where the resource is present. + - `resource_group`. The resource group name where the Azure resource is present. + - `provider_name`. Azure resource provider name (for example, Microsoft.Network). + - `resource_type`. Azure resource type (for example, storage accounts). + - `resource_name`. The name of the resource (for example, storage account name). + - `service_type`. Type of the service that can be accessed with a Azure resource. + - `service_name`. Services that can be accessed with an Azure resource (for example, in Azure Container Instances service is Subscriptions). +1. Create the fields if they are not present. Refer to [Manage fields](/docs/manage/fields/#manage-fields). + +### Configure field extraction rules + +Create the following Field Extraction Rule(s) (FER) for Azure Storage by following the instructions in [Create a Field Extraction Rule](/docs/manage/field-extractions/create-field-extraction-rule/). + +#### Azure location extraction FER + + ```sql + Rule Name: AzureLocationExtractionFER + Applied at: Ingest Time + Scope (Specific Data): tenant_name=* + ``` + + ```sql title="Parse Expression" + 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 + + ```sql + Rule Name: AzureResourceIdExtractionFER + Applied at: Ingest Time + Scope (Specific Data): tenant_name=* + ``` + + ```sql title="Parse Expression" + json "resourceId", "ResourceId" as resourceId1, resourceId2 nodrop + | if (isBlank(resourceId1), resourceId2, resourceId1) as resourceId + | toUpperCase(resourceId) as resourceId + | parse regex field=resourceId "/SUBSCRIPTIONS/(?[^/]+)" nodrop + | parse field=resourceId "/RESOURCEGROUPS/*/" as resource_group nodrop + | parse regex field=resourceId "/PROVIDERS/(?[^/]+)" nodrop + | parse regex field=resourceId "/PROVIDERS/[^/]+(?:/LOCATIONS/[^/]+)?/(?[^/]+)/(?.+)" nodrop + | parse regex field=resource_name "(?[^/]+)(?:/PROVIDERS/[^/]+)?/(?[^/]+)/?(?.+)" 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 + +Create the following metrics rules by following the instructions in [Create a metrics rule](/docs/metrics/metric-rules-editor/#create-a-metrics-rule). + +#### Azure observability metadata extraction service level + +If this rule already exists, there is no need to create it again. + + ```sql + Rule Name: AzureObservabilityMetadataExtractionServiceLevel + ``` + + ```sql title="Metric match expression" + resourceId=/SUBSCRIPTIONS/*/RESOURCEGROUPS/*/PROVIDERS/*/*/*/*/* tenant_name=* + ``` + | Fields extracted | Metric rule | + |------------------|----------------| + | subscription_id | $resourceId._1 | + | resource_group | $resourceId._2 | + | provider_name | $resourceId._3 | + | resource_type | $resourceId._4 | + | resource_name | $resourceId._5 | + | service_type | $resourceId._6 | + | service_name | $resourceId._7 | + +#### Azure observability metadata extraction container instance level + + ```sql + Rule Name: AzureObservabilityMetadataExtractionAzureContainerInstanceLevel + ``` + + ```sql title="Metric match expression" + resourceId=resourceId=/SUBSCRIPTIONS/*/RESOURCEGROUPS/*/PROVIDERS/MICROSOFT.CONTAINERINSTANCE/*/* tenant_name=* + ``` + | Fields extracted | Metric rule | + |:------------------|:----------------------------| + | subscription_id | $resourceId._1 | + | resource_group | $resourceId._2 | + | provider_name | MICROSOFT.CONTAINERINSTANCE | + | resource_type | $resourceId._3 | + | 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. + +1. [Configure an HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). +1. [Configure and deploy the ARM Template](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-2-configure-azure-resources-using-arm-template). +1. [Export metrics to Event Hub](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-3-export-metrics-for-a-particular-resource-to-event-hub). Perform below steps for each Azure Container Instances namespace that you want to monitor. + 1. Choose `Stream to an event hub` as destination. + 1. Select `AllMetrics`. + 1. 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.
Azure Container Instances metrics +1. Tag the location field in the source with right location value.
Azure Container Instances Tag Location + +### Configure logs collection + +In this section, you will configure a pipeline for shipping diagnostic logs from Azure Monitor to an Event Hub. +#### Diagnostic logs + #ToDo Replacement for Diagnostic logs + +#### Activity Logs + +To collect activity logs, follow the instructions [here](/docs/integrations/microsoft-azure/audit). Do not perform this step in case you are already collecting activity logs for a subscription. + +:::note +Since this source contains logs from multiple regions, make sure that you do not tag this source with the location tag. +::: + +## Viewing the Azure Container Instances dashboards + +import ViewDashboards from '../../reuse/apps/view-dashboards.md'; + + + +### Error Logs + +**Azure Container Instance - Error Logs** This dashboard provides detailed information on what is happening (errors or recent events) in a container. + +Use this dashboard to: +* View Total Errors. +* Top 10 Errors bar chart. +* Log Level Error distribution. +* Error Trend by Container. +* Recent Container Logs + +Azure Container Instance - Error Logs + +### Administrative Operations + +**Azure Container Instances - Administrative Operations** dashboard provides details on the operational activities and status of your Azure Container Instances resources. + +Use this dashboard to: +* Monitor the distribution of operation types and their success rates to ensure proper functioning of your Container Instances system. +* Identify potential issues by analyzing the top operations causing errors and correlating them with specific users or applications. +* Track recent write and delete operations to maintain an audit trail of changes made to your azure container instances configuration. + +Azure Container Instances - Administrative Operations + +### Resources + +**Azure Container Instances - Resources** use this dashboard to get average memory usage, avg CPU usage, average network bytes received and transmitted per sec. + +Use this dashboard to: +* Monitor Average Memory and CPU usage and it's trend. +* Monitor Average Received and Transmitted network bytes. + +Azure Container Instances - Errors + +### Policy and Recommendations + +**Azure Container Instances - Policy and Recommendations** dashboard provides details on policy events and recommendations for your Azure Container Instances resources. + +Use this dashboard to: +* Monitor the success and failure rates of policy events to ensure proper configuration and compliance. +* Track and analyze recent recommendations to improve the performance and security of your azure container instances setup. +* Identify trends in policy events and recommendations over time to proactively address potential issues. + +Azure Container Instances - Policy and Recommendations + +## Troubleshooting + +### HTTP Logs and Metrics Source used by Azure Functions + +To troubleshoot metrics collection, follow the instructions in [Collect Metrics from Azure Monitor > Troubleshooting metrics collection](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#troubleshooting-metrics-collection). From 6c252456c9ab550851c6b7aebe5d4467b82f48ac Mon Sep 17 00:00:00 2001 From: John Pipkin Date: Mon, 24 Feb 2025 10:49:24 -0600 Subject: [PATCH 02/20] Add article to left nav --- docs/integrations/microsoft-azure/index.md | 7 +++++++ .../product-list/product-list-a-l.md | 2 +- sidebars.ts | 1 + .../azure-container-instances.png | Bin 0 -> 24884 bytes 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 static/img/integrations/microsoft-azure/azure-container-instances.png diff --git a/docs/integrations/microsoft-azure/index.md b/docs/integrations/microsoft-azure/index.md index adac828efc..608fc5a319 100644 --- a/docs/integrations/microsoft-azure/index.md +++ b/docs/integrations/microsoft-azure/index.md @@ -114,6 +114,13 @@ This guide has documentation for all of the apps that Sumo Logic provides for Mi

A guide to the Sumo Logic integration for Azure Cognitive Search.

+
+
+ Thumbnail icon +

Azure Container Instances

+

Learn about the Sumo Logic collection process for the Azure Container Instances service.

+
+
Thumbnail icon diff --git a/docs/integrations/product-list/product-list-a-l.md b/docs/integrations/product-list/product-list-a-l.md index 82d263a7de..e78e74e3a9 100644 --- a/docs/integrations/product-list/product-list-a-l.md +++ b/docs/integrations/product-list/product-list-a-l.md @@ -119,7 +119,7 @@ For descriptions of the different types of integrations Sumo Logic offers, see [ | Thumbnail icon | [AWS Simple Notification Service](https://aws.amazon.com/sns/) | Automation integration: [AWS Simple Notification Service](/docs/platform-services/automation-service/app-central/integrations/aws-simple-notification-service/) | | Thumbnail icon | [AWS WAF](https://aws.amazon.com/waf/) | Apps:
- [AWS WAF](/docs/integrations/amazon-aws/waf/)
- [AWS WAF Cloud Security Monitoring and Analytics](/docs/integrations/cloud-security-monitoring-analytics/aws-waf/)
Automation integration: [AWS WAF](/docs/platform-services/automation-service/app-central/integrations/aws-waf/)
Cloud SIEM integration: [Amazon AWS - Web Application Firewall (WAF)](https://github.com/SumoLogic/cloud-siem-content-catalog/blob/master/products/072b85a2-1765-45c2-911d-b0509880326e.md) | | Thumbnail icon | [Axonius](https://www.axonius.com/) | Automation integration: [Axonius](/docs/platform-services/automation-service/app-central/integrations/axonius/) | -| Thumbnail icon | [Azure](https://azure.microsoft.com/en-us) | Apps:
- [Azure Analysis Services](/docs/integrations/microsoft-azure/azure-analysis-services/)
- [Azure API Management](/docs/integrations/microsoft-azure/azure-api-management/)
- [Azure App Configuration](/docs/integrations/microsoft-azure/azure-app-configuration/)
- [Azure Application Gateway](/docs/integrations/microsoft-azure/azure-application-gateway/)
- [Azure App Service Environment](/docs/integrations/microsoft-azure/azure-app-service-environment/)
- [Azure App Service Plan](/docs/integrations/microsoft-azure/azure-app-service-plan/)
- [Azure Audit](/docs/integrations/microsoft-azure/audit/)
- [Azure Automation](/docs/integrations/microsoft-azure/azure-automation/)
- [Azure Backup](/docs/integrations/microsoft-azure/azure-backup/)
- [Azure Batch](/docs/integrations/microsoft-azure/azure-batch/)
- [Azure Cache for Redis](/docs/integrations/microsoft-azure/azure-cache-for-redis/)
- [Azure Cognitive Search](/docs/integrations/microsoft-azure/azure-cognitive-search/)
- [Azure Cosmos DB](/docs/integrations/microsoft-azure/azure-cosmos-db/)
- [Azure Cosmos DB for PostgreSQL](/docs/integrations/microsoft-azure/azure-cosmos-db-for-postgresql/)
- [Azure Data Explorer](/docs/integrations/microsoft-azure/azure-data-explorer/)
- [Azure Data Factory](/docs/integrations/microsoft-azure/azure-data-factory/)
- [Azure Database for MariaDB](/docs/integrations/microsoft-azure/azure-database-for-mariadb/)
- [Azure Database for MySQL](/docs/integrations/microsoft-azure/azure-database-for-mysql/)
- [Azure Database for PostgreSQL](/docs/integrations/microsoft-azure/azure-database-for-postgresql/)
- [Azure Event Grid](/docs/integrations/microsoft-azure/azure-event-grid/)
- [Azure Event Hubs](/docs/integrations/microsoft-azure/azure-event-hubs/)
- [Azure Front Door](/docs/integrations/microsoft-azure/azure-front-door/)
- [Azure Functions](/docs/integrations/microsoft-azure/azure-functions/)
- [Azure HDInsight](/docs/integrations/microsoft-azure/azure-hdinsight/)
- [Azure IoT Hub](/docs/integrations/microsoft-azure/azure-iot-hub/)
- [Azure Key Vault](/docs/integrations/microsoft-azure/azure-key-vault/)
- [Azure Kubernetes Service (AKS) - Control Plane](/docs/integrations/microsoft-azure/kubernetes/)
- [Azure Load Balancer](/docs/integrations/microsoft-azure/azure-load-balancer/)
- [Azure Logic App](/docs/integrations/microsoft-azure/azure-logic-app/)
- [Azure Machine Learning](/docs/integrations/microsoft-azure/azure-machine-learning/)
- [Azure Monitor Logs](/docs/send-data/collect-from-other-data-sources/azure-monitoring/ms-azure-event-hubs-source)
- [Azure Monitor Metrics](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/)
- [Azure Monitoring](/docs/send-data/collect-from-other-data-sources/azure-monitoring/)
- [Azure Network Interface](/docs/integrations/microsoft-azure/azure-network-interface/)
- [Azure Network Watcher](/docs/integrations/microsoft-azure/network-watcher/)
- [Azure Notification Hubs](/docs/integrations/microsoft-azure/azure-notification-hubs/)
- [Azure Public IP Addresses](/docs/integrations/microsoft-azure/azure-public-ipAddress/)
- [Azure Relay](/docs/integrations/microsoft-azure/azure-relay/)
- [Azure Service Bus](/docs/integrations/microsoft-azure/azure-service-bus/)
- [Azure SQL](/docs/integrations/microsoft-azure/sql/)
- [Azure SQL Elastic Pool](/docs/integrations/microsoft-azure/azure-sql-elastic-pool/)
- [Azure SQL Managed Instance](/docs/integrations/microsoft-azure/azure-sql-managed-instance/)
- [Azure Storage](/docs/integrations/microsoft-azure/azure-storage/)
- [Azure Stream Analytics](/docs/integrations/microsoft-azure/azure-stream-analytics/)
- [Azure Synapse Analytics](/docs/integrations/microsoft-azure/azure-synapse-analytics/)
- [Azure Virtual Network](/docs/integrations/microsoft-azure/azure-virtual-network/)
- [Azure Web Apps](/docs/integrations/microsoft-azure/web-apps/)
Automation integration: [Azure AD](/docs/platform-services/automation-service/app-central/integrations/azure-ad/)
Collectors:
- [Azure Blob Storage](/docs/send-data/collect-from-other-data-sources/azure-blob-storage/block-blob/collect-logs)
- [Azure Event Hubs Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/azure-event-hubs-source/)
- [Microsoft Azure Activity Log - Cloud SIEM](/docs/cse/ingestion/ingestion-sources-for-cloud-siem/microsoft-azure-activity-log/)
- [Migrating to Azure Event Hubs Cloud-to-Cloud Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/azure-event-hubs-source-migration)
Webhook: [Webhook Connection for Microsoft Azure Functions](/docs/alerts/webhook-connections/microsoft-azure-functions/) | +| Thumbnail icon | [Azure](https://azure.microsoft.com/en-us) | Apps:
- [Azure Analysis Services](/docs/integrations/microsoft-azure/azure-analysis-services/)
- [Azure API Management](/docs/integrations/microsoft-azure/azure-api-management/)
- [Azure App Configuration](/docs/integrations/microsoft-azure/azure-app-configuration/)
- [Azure Application Gateway](/docs/integrations/microsoft-azure/azure-application-gateway/)
- [Azure App Service Environment](/docs/integrations/microsoft-azure/azure-app-service-environment/)
- [Azure App Service Plan](/docs/integrations/microsoft-azure/azure-app-service-plan/)
- [Azure Audit](/docs/integrations/microsoft-azure/audit/)
- [Azure Automation](/docs/integrations/microsoft-azure/azure-automation/)
- [Azure Backup](/docs/integrations/microsoft-azure/azure-backup/)
- [Azure Batch](/docs/integrations/microsoft-azure/azure-batch/)
- [Azure Cache for Redis](/docs/integrations/microsoft-azure/azure-cache-for-redis/)
- [Azure Cognitive Search](/docs/integrations/microsoft-azure/azure-cognitive-search/)
- [Azure Container Instances](/docs/integrations/microsoft-azure/azure-container-instances/)
- [Azure Cosmos DB](/docs/integrations/microsoft-azure/azure-cosmos-db/)
- [Azure Cosmos DB for PostgreSQL](/docs/integrations/microsoft-azure/azure-cosmos-db-for-postgresql/)
- [Azure Data Explorer](/docs/integrations/microsoft-azure/azure-data-explorer/)
- [Azure Data Factory](/docs/integrations/microsoft-azure/azure-data-factory/)
- [Azure Database for MariaDB](/docs/integrations/microsoft-azure/azure-database-for-mariadb/)
- [Azure Database for MySQL](/docs/integrations/microsoft-azure/azure-database-for-mysql/)
- [Azure Database for PostgreSQL](/docs/integrations/microsoft-azure/azure-database-for-postgresql/)
- [Azure Event Grid](/docs/integrations/microsoft-azure/azure-event-grid/)
- [Azure Event Hubs](/docs/integrations/microsoft-azure/azure-event-hubs/)
- [Azure Front Door](/docs/integrations/microsoft-azure/azure-front-door/)
- [Azure Functions](/docs/integrations/microsoft-azure/azure-functions/)
- [Azure HDInsight](/docs/integrations/microsoft-azure/azure-hdinsight/)
- [Azure IoT Hub](/docs/integrations/microsoft-azure/azure-iot-hub/)
- [Azure Key Vault](/docs/integrations/microsoft-azure/azure-key-vault/)
- [Azure Kubernetes Service (AKS) - Control Plane](/docs/integrations/microsoft-azure/kubernetes/)
- [Azure Load Balancer](/docs/integrations/microsoft-azure/azure-load-balancer/)
- [Azure Logic App](/docs/integrations/microsoft-azure/azure-logic-app/)
- [Azure Machine Learning](/docs/integrations/microsoft-azure/azure-machine-learning/)
- [Azure Monitor Logs](/docs/send-data/collect-from-other-data-sources/azure-monitoring/ms-azure-event-hubs-source)
- [Azure Monitor Metrics](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/)
- [Azure Monitoring](/docs/send-data/collect-from-other-data-sources/azure-monitoring/)
- [Azure Network Interface](/docs/integrations/microsoft-azure/azure-network-interface/)
- [Azure Network Watcher](/docs/integrations/microsoft-azure/network-watcher/)
- [Azure Notification Hubs](/docs/integrations/microsoft-azure/azure-notification-hubs/)
- [Azure Public IP Addresses](/docs/integrations/microsoft-azure/azure-public-ipAddress/)
- [Azure Relay](/docs/integrations/microsoft-azure/azure-relay/)
- [Azure Service Bus](/docs/integrations/microsoft-azure/azure-service-bus/)
- [Azure SQL](/docs/integrations/microsoft-azure/sql/)
- [Azure SQL Elastic Pool](/docs/integrations/microsoft-azure/azure-sql-elastic-pool/)
- [Azure SQL Managed Instance](/docs/integrations/microsoft-azure/azure-sql-managed-instance/)
- [Azure Storage](/docs/integrations/microsoft-azure/azure-storage/)
- [Azure Stream Analytics](/docs/integrations/microsoft-azure/azure-stream-analytics/)
- [Azure Synapse Analytics](/docs/integrations/microsoft-azure/azure-synapse-analytics/)
- [Azure Virtual Network](/docs/integrations/microsoft-azure/azure-virtual-network/)
- [Azure Web Apps](/docs/integrations/microsoft-azure/web-apps/)
Automation integration: [Azure AD](/docs/platform-services/automation-service/app-central/integrations/azure-ad/)
Collectors:
- [Azure Blob Storage](/docs/send-data/collect-from-other-data-sources/azure-blob-storage/block-blob/collect-logs)
- [Azure Event Hubs Source](/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/azure-event-hubs-source/)
- [Microsoft Azure Activity Log - Cloud SIEM](/docs/cse/ingestion/ingestion-sources-for-cloud-siem/microsoft-azure-activity-log/)
- [Migrating to Azure Event Hubs Cloud-to-Cloud Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/azure-event-hubs-source-migration)
Webhook: [Webhook Connection for Microsoft Azure Functions](/docs/alerts/webhook-connections/microsoft-azure-functions/) | ## B diff --git a/sidebars.ts b/sidebars.ts index 1640d78719..1bc8bd43fe 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -2167,6 +2167,7 @@ integrations: [ 'integrations/microsoft-azure/azure-batch', 'integrations/microsoft-azure/azure-cache-for-redis', 'integrations/microsoft-azure/azure-cognitive-search', + 'integrations/microsoft-azure/azure-container-instances', 'integrations/microsoft-azure/azure-cosmos-db-for-postgresql', 'integrations/microsoft-azure/azure-cosmos-db', 'integrations/microsoft-azure/azure-data-explorer', diff --git a/static/img/integrations/microsoft-azure/azure-container-instances.png b/static/img/integrations/microsoft-azure/azure-container-instances.png new file mode 100644 index 0000000000000000000000000000000000000000..0f93d3fb80dfbe13a4e053fa70f2a3491e659430 GIT binary patch literal 24884 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

rbcA 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 Date: Mon, 24 Feb 2025 11:07:46 -0600 Subject: [PATCH 03/20] Updates from review --- .../azure-container-instances.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index c0351c75be..d60419b2a1 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -22,7 +22,7 @@ For more information on supported dimensions, refer to [Azure documentation](htt ## Setup -Azure service sends monitoring data to Azure Monitor, which can then [stream data to Eventhub](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/stream-monitoring-data-event-hubs). Sumo Logic supports: +Azure service sends monitoring data to Azure Monitor, which can then [stream data to an event hub](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/stream-monitoring-data-event-hubs). Sumo Logic supports: * Logs collection from [Azure Monitor](https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-get-started) using our [Azure Event Hubs source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/ms-azure-event-hubs-source/). * Metrics collection using our [HTTP Logs and Metrics source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/) via Azure Functions deployed using the ARM template. @@ -132,9 +132,9 @@ If this rule already exists, there is no need to create it again. ### 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. +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. -1. [Configure an HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). +1. [Configure an HTTP source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). 1. [Configure and deploy the ARM Template](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-2-configure-azure-resources-using-arm-template). 1. [Export metrics to Event Hub](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-3-export-metrics-for-a-particular-resource-to-event-hub). Perform below steps for each Azure Container Instances namespace that you want to monitor. 1. Choose `Stream to an event hub` as destination. @@ -164,7 +164,7 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; ### Error Logs -**Azure Container Instance - Error Logs** This dashboard provides detailed information on what is happening (errors or recent events) in a container. +The **Azure Container Instance - Error Logs** dashboard provides detailed information on what is happening (errors or recent events) in a container. Use this dashboard to: * View Total Errors. @@ -177,18 +177,18 @@ Use this dashboard to: ### Administrative Operations -**Azure Container Instances - Administrative Operations** dashboard provides details on the operational activities and status of your Azure Container Instances resources. +The **Azure Container Instances - Administrative Operations** dashboard provides details on the operational activities and status of your Azure Container Instances resources. Use this dashboard to: * Monitor the distribution of operation types and their success rates to ensure proper functioning of your Container Instances system. * Identify potential issues by analyzing the top operations causing errors and correlating them with specific users or applications. -* Track recent write and delete operations to maintain an audit trail of changes made to your azure container instances configuration. +* Track recent write and delete operations to maintain an audit trail of changes made to your Azure Container Instances configuration. Azure Container Instances - Administrative Operations ### Resources -**Azure Container Instances - Resources** use this dashboard to get average memory usage, avg CPU usage, average network bytes received and transmitted per sec. +The **Azure Container Instances - Resources** dashboard shows average memory usage, avg CPU usage, average network bytes received and transmitted per sec. Use this dashboard to: * Monitor Average Memory and CPU usage and it's trend. @@ -198,11 +198,11 @@ Use this dashboard to: ### Policy and Recommendations -**Azure Container Instances - Policy and Recommendations** dashboard provides details on policy events and recommendations for your Azure Container Instances resources. +The **Azure Container Instances - Policy and Recommendations** dashboard provides details on policy events and recommendations for your Azure Container Instances resources. Use this dashboard to: * Monitor the success and failure rates of policy events to ensure proper configuration and compliance. -* Track and analyze recent recommendations to improve the performance and security of your azure container instances setup. +* Track and analyze recent recommendations to improve the performance and security of your Azure Container Instances setup. * Identify trends in policy events and recommendations over time to proactively address potential issues. Azure Container Instances - Policy and Recommendations @@ -211,4 +211,4 @@ Use this dashboard to: ### HTTP Logs and Metrics Source used by Azure Functions -To troubleshoot metrics collection, follow the instructions in [Collect Metrics from Azure Monitor > Troubleshooting metrics collection](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#troubleshooting-metrics-collection). +To troubleshoot metrics collection, follow the instructions in [Troubleshooting metrics collection](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#troubleshooting-metrics-collection) in *Collect Metrics from Azure Monitor*. From 8ec2546ab5f4c92e10241f09b84bdfe0b16e812c Mon Sep 17 00:00:00 2001 From: Sachin Magar Date: Tue, 25 Feb 2025 23:44:04 +0530 Subject: [PATCH 04/20] added logs and metrics collection --- .../azure-container-instances.md | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index d60419b2a1..f6f62dd62b 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -131,22 +131,15 @@ If this rule already exists, there is no need to create it again. | 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. - -1. [Configure an HTTP source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). -1. [Configure and deploy the ARM Template](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-2-configure-azure-resources-using-arm-template). -1. [Export metrics to Event Hub](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-3-export-metrics-for-a-particular-resource-to-event-hub). Perform below steps for each Azure Container Instances namespace that you want to monitor. - 1. Choose `Stream to an event hub` as destination. - 1. Select `AllMetrics`. - 1. 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.
Azure Container Instances metrics -1. Tag the location field in the source with right location value.
Azure Container Instances Tag Location + For metrics collection please follow guidlines mentioned in this [document](https://help.sumologic.com/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/) + While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location + Also you need to configure namespaces as mentioned below
Azure Container Instance Namespaces ### Configure logs collection - -In this section, you will configure a pipeline for shipping diagnostic logs from Azure Monitor to an Event Hub. -#### Diagnostic logs - #ToDo Replacement for Diagnostic logs +1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source) +2. Create and push custom image using [Dockerfile](/static/files/Dockerfile) and [output_conf.yaml](/static/files/output_conf.yaml) onto dockerhub. +3. Create new resource group in Azure +4. deploy [logging-sidecar-deploy.yaml](/static/files/logging-sidecar-deploy.yaml) azure template. #### Activity Logs From e286e419fdb94a090ae862f43f01a1d4a2544987 Mon Sep 17 00:00:00 2001 From: Sachin Magar Date: Tue, 25 Feb 2025 23:44:30 +0530 Subject: [PATCH 05/20] added logs and metrics collection --- static/files/Dockerfile | 8 +++ static/files/logging-sidecar-deploy.yaml | 50 ++++++++++++++++++ static/files/output_conf.yaml | 18 +++++++ .../azure-container-instance-namespaces.png | Bin 0 -> 79172 bytes 4 files changed, 76 insertions(+) create mode 100644 static/files/Dockerfile create mode 100644 static/files/logging-sidecar-deploy.yaml create mode 100644 static/files/output_conf.yaml create mode 100644 static/img/integrations/microsoft-azure/azure-container-instance-namespaces.png diff --git a/static/files/Dockerfile b/static/files/Dockerfile new file mode 100644 index 0000000000..4e92da1041 --- /dev/null +++ b/static/files/Dockerfile @@ -0,0 +1,8 @@ +# Use Fluent Bit base image +FROM index.docker.io/fluent/fluent-bit:latest + +# Set the working directory +WORKDIR /root + +# Copy the output_conf.yaml file into the container's root directory +COPY ./output_conf.yaml output_conf.yaml \ No newline at end of file diff --git a/static/files/logging-sidecar-deploy.yaml b/static/files/logging-sidecar-deploy.yaml new file mode 100644 index 0000000000..a84d866288 --- /dev/null +++ b/static/files/logging-sidecar-deploy.yaml @@ -0,0 +1,50 @@ +apiVersion: 2018-06-01 +location: westus +name: compress-nginx-logging +properties: + containers: + - name: nginx + properties: + volumeMounts: + - name: nginx-logs + mountPath: /var/log/nginx + readOnly: false + image: index.docker.io/library/nginx + ports: + - port: 80 + protocol: TCP + resources: + requests: + cpu: 1.0 + memoryInGB: 1.5 + - name: fluentbit + properties: + image: index.docker.io/{dockerhub-username}/{fluent-bit-custom-imagename}:{tagname} + volumeMounts: + - name: nginx-logs + mountPath: /var/log/nginx + readOnly: true + command: + - /fluent-bit/bin/fluent-bit + - -v + - -c + - /root/output_conf.yaml + resources: + requests: + cpu: 2.0 + memoryInGB: 1.5 + imageRegistryCredentials: + - server: "index.docker.io" + username: "{dockerhub-username}" + password: "{dockerhub-password}" + osType: Linux + restartPolicy: Always + ipAddress: + ports: + - port: 80 + protocol: TCP + type: Public + volumes: + - name: nginx-logs + emptyDir: {} +type: Microsoft.ContainerInstance/containerGroups diff --git a/static/files/output_conf.yaml b/static/files/output_conf.yaml new file mode 100644 index 0000000000..b9458c3eb7 --- /dev/null +++ b/static/files/output_conf.yaml @@ -0,0 +1,18 @@ +pipeline: + inputs: + - name: tail + path: /var/log/nginx/*.log + outputs: + - name: http + format: json_lines + compress: gzip + match: "*" + host: collectors.sumologic.com + port: 443 + tls: on + tls.verify: off + URI: /receiver/v1/http/[PrivateKey] + json_date_key: timestamp + header: + - X-Sumo-Fields resource_name=[resource_name],resource_type=[resource_type],provider_name=[provider_name],resource_group=[resource_group],subscription_id=[subscription_id],location=[location] + - X-SUMO-Client sumologic-azure-aci-fluentbit \ No newline at end of file diff --git a/static/img/integrations/microsoft-azure/azure-container-instance-namespaces.png b/static/img/integrations/microsoft-azure/azure-container-instance-namespaces.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c3eb3ac4e98b5914380490ec0fe20780bf9dbe GIT binary patch literal 79172 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 literal 0 HcmV?d00001 From c743fae2c21cfa360d1e2089583a86316ea874d9 Mon Sep 17 00:00:00 2001 From: Sachin Magar <159125519+sachin-sumologic@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:45:30 +0530 Subject: [PATCH 06/20] Update docs/integrations/microsoft-azure/azure-container-instances.md Co-authored-by: Kim (Sumo Logic) <56411016+kimsauce@users.noreply.github.com> --- docs/integrations/microsoft-azure/azure-container-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index f6f62dd62b..994e7d5aba 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -104,7 +104,7 @@ If this rule already exists, there is no need to create it again. resourceId=/SUBSCRIPTIONS/*/RESOURCEGROUPS/*/PROVIDERS/*/*/*/*/* tenant_name=* ``` | Fields extracted | Metric rule | - |------------------|----------------| + |:------------------|:----------------| | subscription_id | $resourceId._1 | | resource_group | $resourceId._2 | | provider_name | $resourceId._3 | From 0b9c56a675056761ee9fcab60c958188fdb90276 Mon Sep 17 00:00:00 2001 From: Sachin Magar <159125519+sachin-sumologic@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:46:30 +0530 Subject: [PATCH 07/20] Update docs/integrations/microsoft-azure/azure-container-instances.md Co-authored-by: Kim (Sumo Logic) <56411016+kimsauce@users.noreply.github.com> --- docs/integrations/microsoft-azure/azure-container-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 994e7d5aba..1c1451ab08 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -143,7 +143,7 @@ If this rule already exists, there is no need to create it again. #### Activity Logs -To collect activity logs, follow the instructions [here](/docs/integrations/microsoft-azure/audit). Do not perform this step in case you are already collecting activity logs for a subscription. +To collect activity logs, follow the instructions [here](/docs/integrations/microsoft-azure/audit). Skip this step if you are already collecting activity logs for a subscription. :::note Since this source contains logs from multiple regions, make sure that you do not tag this source with the location tag. From 0c68fdc2b2501299561b456ee695ad91791b3e7d Mon Sep 17 00:00:00 2001 From: Sachin Magar <159125519+sachin-sumologic@users.noreply.github.com> Date: Tue, 25 Feb 2025 23:46:37 +0530 Subject: [PATCH 08/20] Update docs/integrations/microsoft-azure/azure-container-instances.md Co-authored-by: Kim (Sumo Logic) <56411016+kimsauce@users.noreply.github.com> --- .../microsoft-azure/azure-container-instances.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 1c1451ab08..5d206c56ac 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -159,11 +159,11 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; The **Azure Container Instance - Error Logs** dashboard provides detailed information on what is happening (errors or recent events) in a container. -Use this dashboard to: -* View Total Errors. -* Top 10 Errors bar chart. -* Log Level Error distribution. -* Error Trend by Container. +Use this dashboard to view: +* Total Errors +* Top 10 Errors bar chart +* Log Level Error distribution +* Error Trend by Container * Recent Container Logs Azure Container Instance - Error Logs From a8545a81bade62550e1fcaf465793a3c44c377e1 Mon Sep 17 00:00:00 2001 From: John Pipkin Date: Tue, 25 Feb 2025 13:31:41 -0600 Subject: [PATCH 09/20] Fix build errors --- .../microsoft-azure/azure-container-instances.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 5d206c56ac..1a5ca94aec 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -131,15 +131,15 @@ If this rule already exists, there is no need to create it again. | resource_name | $resourceId._4 | ### Configure metrics collection - For metrics collection please follow guidlines mentioned in this [document](https://help.sumologic.com/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/) + For metrics collection please follow guidelines mentioned in this [document](https://help.sumologic.com/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/) While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location Also you need to configure namespaces as mentioned below
Azure Container Instance Namespaces ### Configure logs collection -1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source) -2. Create and push custom image using [Dockerfile](/static/files/Dockerfile) and [output_conf.yaml](/static/files/output_conf.yaml) onto dockerhub. -3. Create new resource group in Azure -4. deploy [logging-sidecar-deploy.yaml](/static/files/logging-sidecar-deploy.yaml) azure template. +1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). +2. Create and push a custom image using a
Docker file and output_conf.yaml onto a Docker hub. +3. Create new resource group in Azure. +4. Deploy the logging-sidecar-deploy.yaml Azure template. #### Activity Logs From 4a0f76464b12a40d187010c14eda664d8a99698a Mon Sep 17 00:00:00 2001 From: John Pipkin Date: Tue, 25 Feb 2025 13:51:45 -0600 Subject: [PATCH 10/20] Updates from second review --- .../microsoft-azure/azure-container-instances.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 1a5ca94aec..fc6a2d7155 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -131,9 +131,12 @@ If this rule already exists, there is no need to create it again. | resource_name | $resourceId._4 | ### Configure metrics collection - For metrics collection please follow guidelines mentioned in this [document](https://help.sumologic.com/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/) - While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location - Also you need to configure namespaces as mentioned below
Azure Container Instance Namespaces + + For metrics collection follow guidelines in [Azue Metrics Source](/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/). + + While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location + + Also you need to configure namespaces as shown below.
Azure Container Instance Namespaces ### Configure logs collection 1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). From 5f69558353acb3d642732e2d4c819124f7d72f84 Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Wed, 26 Feb 2025 10:43:35 +0530 Subject: [PATCH 11/20] created cid --- cid-redirects.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cid-redirects.json b/cid-redirects.json index c8d4dc0be6..0fc061d5e6 100644 --- a/cid-redirects.json +++ b/cid-redirects.json @@ -1863,6 +1863,7 @@ "/cid/1964": "/docs/integrations/security-threat-detection/f5-big-ip-ltm", "/cid/1965": "/docs/integrations/security-threat-detection/netskope", "/cid/19665": "/docs/integrations/microsoft-azure/azure-security-defender-for-cloud", + "/cid/19667": "/docs/integrations/microsoft-azure/azure-container-instances", "/cid/1966": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/carbon-black-cloud-source", "/cid/1987": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/symantec-endpoint-security-source", "/cid/1996": "/docs/send-data/hosted-collectors/cloud-to-cloud-integration-framework/sysdig-secure-source", From 7545f2197b0f835c8177639a005cc3f301e62d3f Mon Sep 17 00:00:00 2001 From: Amee Lepcha Date: Wed, 26 Feb 2025 10:53:06 +0530 Subject: [PATCH 12/20] created release note --- blog-service/2025-02-26-apps.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 blog-service/2025-02-26-apps.md diff --git a/blog-service/2025-02-26-apps.md b/blog-service/2025-02-26-apps.md new file mode 100644 index 0000000000..8bdc6c57e5 --- /dev/null +++ b/blog-service/2025-02-26-apps.md @@ -0,0 +1,14 @@ +--- +title: Azure Container Instances (Apps) +image: https://help.sumologic.com/img/sumo-square.png +keywords: + - apps + - azure container instances +hide_table_of_contents: true +--- + +import useBaseUrl from '@docusaurus/useBaseUrl'; + +icon + +We're excited to introduce the new Azure Container Instances app for Sumo Logic. This app enables you to deploy and manage containers in Azure without the need for virtual machines. It is ideal for event-driven applications, microservices, and batch processing workloads. [Learn more](/docs/integrations/microsoft-azure/azure-container-instances). \ No newline at end of file From 6f910cbe2f535db08ea52d6dffb52de3871fe2be Mon Sep 17 00:00:00 2001 From: Sachin Magar Date: Wed, 26 Feb 2025 11:59:37 +0530 Subject: [PATCH 13/20] updated file links --- .../integrations/microsoft-azure/azure-container-instances.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index f6f62dd62b..e9a1799ba1 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -137,9 +137,9 @@ If this rule already exists, there is no need to create it again. ### Configure logs collection 1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source) -2. Create and push custom image using [Dockerfile](/static/files/Dockerfile) and [output_conf.yaml](/static/files/output_conf.yaml) onto dockerhub. +2. Create and push custom image using [Dockerfile](https://github.com/sachin-sumologic/sumologic-documentation/blob/SUMO-255285-documentation/static/files/Dockerfile) and [output_conf.yaml](https://github.com/sachin-sumologic/sumologic-documentation/blob/SUMO-255285-documentation/static/files/output_conf.yaml) onto dockerhub. 3. Create new resource group in Azure -4. deploy [logging-sidecar-deploy.yaml](/static/files/logging-sidecar-deploy.yaml) azure template. +4. deploy [logging-sidecar-deploy.yaml](https://github.com/sachin-sumologic/sumologic-documentation/blob/SUMO-255285-documentation/static/files/logging-sidecar-deploy.yaml) azure template. #### Activity Logs From 06aafe2f5d45adaa423424b5fa70240baa1242af Mon Sep 17 00:00:00 2001 From: Sachin Magar Date: Thu, 27 Feb 2025 11:52:49 +0530 Subject: [PATCH 14/20] resolved more feedback comments --- .../azure-container-instances.md | 45 ++++++++--------- static/files/Dockerfile | 8 --- static/files/logging-sidecar-deploy.yaml | 50 ------------------- static/files/output_conf.yaml | 18 ------- 4 files changed, 22 insertions(+), 99 deletions(-) delete mode 100644 static/files/Dockerfile delete mode 100644 static/files/logging-sidecar-deploy.yaml delete mode 100644 static/files/output_conf.yaml diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 722ce3fa1f..9a37e94200 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -14,6 +14,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; For Azure Container Instances, you can collect the following logs and metrics: +* **Audit Logs** The activity log contains subscription-level events that track operations for each Azure resource as seen from outside that resource, for more details refer to the [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/monitor-azure-container-instances#azure-activity-log). * **Resource Logs**. Capture container creation, execution, and failure logs. The schema for resource logs is described [here](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#resource-logs). * **Metrics**. Metrics for Azure Container Instances are in the following namespaces: * [Microsoft.ContainerInstance/containerGroups](https://learn.microsoft.com/en-us/azure/azure-monitor/reference/supported-metrics/microsoft-containerinstance-containergroups-metrics) @@ -92,27 +93,6 @@ Create the following Field Extraction Rule(s) (FER) for Azure Storage by followi Create the following metrics rules by following the instructions in [Create a metrics rule](/docs/metrics/metric-rules-editor/#create-a-metrics-rule). -#### Azure observability metadata extraction service level - -If this rule already exists, there is no need to create it again. - - ```sql - Rule Name: AzureObservabilityMetadataExtractionServiceLevel - ``` - - ```sql title="Metric match expression" - resourceId=/SUBSCRIPTIONS/*/RESOURCEGROUPS/*/PROVIDERS/*/*/*/*/* tenant_name=* - ``` - | Fields extracted | Metric rule | - |:-----------------|:---------------| - | subscription_id | $resourceId._1 | - | resource_group | $resourceId._2 | - | provider_name | $resourceId._3 | - | resource_type | $resourceId._4 | - | resource_name | $resourceId._5 | - | service_type | $resourceId._6 | - | service_name | $resourceId._7 | - #### Azure observability metadata extraction container instance level ```sql @@ -140,9 +120,28 @@ If this rule already exists, there is no need to create it again. ### Configure logs collection 1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). -2. Create and push a custom image using a Docker file and output_conf.yaml onto a Docker hub. -3. Create new resource group in Azure. +2. Create and push a custom image using a Docker file and output_conf.yaml onto a Docker hub. +3. Use existing resource group or create new in Azure. +4. Update the logging-sidecar-deploy.yaml file with your own application image whose logs you want to collect. In the file we have used nginx application as an example whose log files(access logs and error logs) are created in a shared volume(/var/log/nginx) 4. Deploy the logging-sidecar-deploy.yaml Azure template. + * parameter - /fluent-bit/bin/fluent-bit is fluent-bit executable path + * parameter - -c /root/output_conf.yaml is fluent-bit configuration file path + * *inputs* parameters in output_conf.yaml + * *tail* - read logs command name + * *path* is log file path from where fluent bit collector is collecting logs + * *outputs* parameters in output_conf.yaml + * *name=http* - HTTP Output collector + * *format=json_lines* + * "compress" - payload compression mechanism(we used gzip) + * *match* - log matching rule + * *host* - sumologic collector host + * *port* - sumologic collector port + * *tls=on* - TLS support enabled + * *tls.verify=off* - certificate validation disabled + * *URI* - sumologic http collector URI + * *json_date_key* - name of the date field in output + * *header* - X-Sumo-Fields header used to tag fields during logs collection +5. for more details how to deploy azure container instance group please refer to [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-quickstart). #### Activity Logs diff --git a/static/files/Dockerfile b/static/files/Dockerfile deleted file mode 100644 index 4e92da1041..0000000000 --- a/static/files/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ -# Use Fluent Bit base image -FROM index.docker.io/fluent/fluent-bit:latest - -# Set the working directory -WORKDIR /root - -# Copy the output_conf.yaml file into the container's root directory -COPY ./output_conf.yaml output_conf.yaml \ No newline at end of file diff --git a/static/files/logging-sidecar-deploy.yaml b/static/files/logging-sidecar-deploy.yaml deleted file mode 100644 index a84d866288..0000000000 --- a/static/files/logging-sidecar-deploy.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: 2018-06-01 -location: westus -name: compress-nginx-logging -properties: - containers: - - name: nginx - properties: - volumeMounts: - - name: nginx-logs - mountPath: /var/log/nginx - readOnly: false - image: index.docker.io/library/nginx - ports: - - port: 80 - protocol: TCP - resources: - requests: - cpu: 1.0 - memoryInGB: 1.5 - - name: fluentbit - properties: - image: index.docker.io/{dockerhub-username}/{fluent-bit-custom-imagename}:{tagname} - volumeMounts: - - name: nginx-logs - mountPath: /var/log/nginx - readOnly: true - command: - - /fluent-bit/bin/fluent-bit - - -v - - -c - - /root/output_conf.yaml - resources: - requests: - cpu: 2.0 - memoryInGB: 1.5 - imageRegistryCredentials: - - server: "index.docker.io" - username: "{dockerhub-username}" - password: "{dockerhub-password}" - osType: Linux - restartPolicy: Always - ipAddress: - ports: - - port: 80 - protocol: TCP - type: Public - volumes: - - name: nginx-logs - emptyDir: {} -type: Microsoft.ContainerInstance/containerGroups diff --git a/static/files/output_conf.yaml b/static/files/output_conf.yaml deleted file mode 100644 index b9458c3eb7..0000000000 --- a/static/files/output_conf.yaml +++ /dev/null @@ -1,18 +0,0 @@ -pipeline: - inputs: - - name: tail - path: /var/log/nginx/*.log - outputs: - - name: http - format: json_lines - compress: gzip - match: "*" - host: collectors.sumologic.com - port: 443 - tls: on - tls.verify: off - URI: /receiver/v1/http/[PrivateKey] - json_date_key: timestamp - header: - - X-Sumo-Fields resource_name=[resource_name],resource_type=[resource_type],provider_name=[provider_name],resource_group=[resource_group],subscription_id=[subscription_id],location=[location] - - X-SUMO-Client sumologic-azure-aci-fluentbit \ No newline at end of file From 14cccf1837e287abac21faf3329fcf1c07a6dad8 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:46:50 +0530 Subject: [PATCH 15/20] Update azure-container-instances.md --- .../azure-container-instances.md | 60 +++++++++---------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 9a37e94200..e98c412765 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -112,35 +112,36 @@ Create the following metrics rules by following the instructions in [Create a me ### Configure metrics collection - For metrics collection follow guidelines in [Azue Metrics Source](/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/). +For metrics collection follow guidelines in [Azue Metrics Source](/docs/send-data/hosted-collectors/microsoft-source/azure-metrics-source/). - While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location +While you configure metrics collection you need to tag the location field in the source with right location value.
Azure Container Instance Tag Location - Also you need to configure namespaces as shown below.
Azure Container Instance Namespaces +Also you need to configure namespaces as shown below.
Azure Container Instance Namespaces ### Configure logs collection + 1. Add a hosted collector and [HTTP Source](/docs/send-data/collect-from-other-data-sources/azure-monitoring/collect-metrics-azure-monitor/#step-1-configure-an-http-source). 2. Create and push a custom image using a Docker file and output_conf.yaml onto a Docker hub. -3. Use existing resource group or create new in Azure. -4. Update the logging-sidecar-deploy.yaml file with your own application image whose logs you want to collect. In the file we have used nginx application as an example whose log files(access logs and error logs) are created in a shared volume(/var/log/nginx) -4. Deploy the logging-sidecar-deploy.yaml Azure template. - * parameter - /fluent-bit/bin/fluent-bit is fluent-bit executable path - * parameter - -c /root/output_conf.yaml is fluent-bit configuration file path - * *inputs* parameters in output_conf.yaml - * *tail* - read logs command name - * *path* is log file path from where fluent bit collector is collecting logs - * *outputs* parameters in output_conf.yaml - * *name=http* - HTTP Output collector - * *format=json_lines* - * "compress" - payload compression mechanism(we used gzip) - * *match* - log matching rule - * *host* - sumologic collector host - * *port* - sumologic collector port - * *tls=on* - TLS support enabled - * *tls.verify=off* - certificate validation disabled - * *URI* - sumologic http collector URI - * *json_date_key* - name of the date field in output - * *header* - X-Sumo-Fields header used to tag fields during logs collection +3. Use existing resource group or create a new one in Azure. +4. Update the **logging-sidecar-deploy.yaml** file with your own application image whose logs you want to collect. In the file we have used nginx application as an example whose log files(access logs and error logs) are created in a shared volume(/var/log/nginx). +4. Deploy the **logging-sidecar-deploy.yaml** Azure template. + * parameter - `/fluent-bit/bin/fluent-bit` is fluent-bit executable path. + * parameter - `-c /root/output_conf.yaml` is fluent-bit configuration file path. + * Inputs parameters in the `output_conf.yaml` file. + * **tail**. Read logs command name. + * **path**. Log file path from where fluent bit collector is collecting logs. + * Outputs parameters in the `output_conf.yaml` file. + * **name*. HTTP output collector. By default, the name key will be assigned with *http* as value. + * **format**. Data format by which you can send logs to Sumo Logic. By default, the format key will be assigned with *json_lines* as value, since, Sumo Logic only supports json format log line. + * **compress**. Payload compression mechanism. The recommended file type from Sumo Logic is `gzip`. + * **match**. Log matching rule. + * **host**. Sumo Logic collector host. + * **port**. Sumo Logic collector port. + * **tls=on**. By default, *on* value will be assigned to enable the TLS support. + * **tls.verify**. By default, *off* value will be assigned to disable the certificate validation. + * **URI**. Sumo Logic HTTP collector URI. + * **json_date_key**. Name of the date field in output. + * **header**. X-Sumo-Fields header used to tag fields during logs collection. 5. for more details how to deploy azure container instance group please refer to [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-quickstart). #### Activity Logs @@ -159,14 +160,7 @@ import ViewDashboards from '../../reuse/apps/view-dashboards.md'; ### Error Logs -The **Azure Container Instance - Error Logs** dashboard provides detailed information on what is happening (errors or recent events) in a container. - -Use this dashboard to view: -* Total Errors -* Top 10 Errors bar chart -* Log Level Error distribution -* Error Trend by Container -* Recent Container Logs +The **Azure Container Instance - Error Logs** dashboard provides detailed information on the container activity. This dashboard also provides comprehensive overview of Total Errors, Top 10 Errors bar chart, Log Level Error distribution, Error Trend by Container, and Recent Container Logs. Azure Container Instance - Error Logs @@ -183,10 +177,10 @@ Use this dashboard to: ### Resources -The **Azure Container Instances - Resources** dashboard shows average memory usage, avg CPU usage, average network bytes received and transmitted per sec. +The **Azure Container Instances - Resources** dashboard shows average memory usage, avg CPU usage, and average network bytes received and transmitted per sec. Use this dashboard to: -* Monitor Average Memory and CPU usage and it's trend. +* Monitor Average Memory and CPU usage with it's trend. * Monitor Average Received and Transmitted network bytes. Azure Container Instances - Errors From bd1d4c2ebb016fe048c9a66bcf0127e3b7177c87 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:47:02 +0530 Subject: [PATCH 16/20] Update docs/integrations/microsoft-azure/azure-container-instances.md --- docs/integrations/microsoft-azure/azure-container-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index e98c412765..f0beac5eff 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -14,7 +14,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; For Azure Container Instances, you can collect the following logs and metrics: -* **Audit Logs** The activity log contains subscription-level events that track operations for each Azure resource as seen from outside that resource, for more details refer to the [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/monitor-azure-container-instances#azure-activity-log). +* **Audit Logs**. The activity log contains subscription-level events that track operations for each Azure resource as seen from outside that resource. For more details, refer to the [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/monitor-azure-container-instances#azure-activity-log). * **Resource Logs**. Capture container creation, execution, and failure logs. The schema for resource logs is described [here](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#resource-logs). * **Metrics**. Metrics for Azure Container Instances are in the following namespaces: * [Microsoft.ContainerInstance/containerGroups](https://learn.microsoft.com/en-us/azure/azure-monitor/reference/supported-metrics/microsoft-containerinstance-containergroups-metrics) From 4d9060ccef4e5cfec81201fa71381a6be2d66009 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:47:11 +0530 Subject: [PATCH 17/20] Update docs/integrations/microsoft-azure/azure-container-instances.md --- docs/integrations/microsoft-azure/azure-container-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index f0beac5eff..5e8e12c1d6 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -15,7 +15,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; For Azure Container Instances, you can collect the following logs and metrics: * **Audit Logs**. The activity log contains subscription-level events that track operations for each Azure resource as seen from outside that resource. For more details, refer to the [Azure Documentation](https://learn.microsoft.com/en-us/azure/container-instances/monitor-azure-container-instances#azure-activity-log). -* **Resource Logs**. Capture container creation, execution, and failure logs. The schema for resource logs is described [here](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#resource-logs). +* **Resource Logs**. Capture container creation, execution, and failure logs. Refer to the [Microsoft Documentation](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-monitor#resource-logs) to know about the schema for resource logs. * **Metrics**. Metrics for Azure Container Instances are in the following namespaces: * [Microsoft.ContainerInstance/containerGroups](https://learn.microsoft.com/en-us/azure/azure-monitor/reference/supported-metrics/microsoft-containerinstance-containergroups-metrics) From 8f33529e92c98c9b79dc1737d653ee55e1a77b49 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:49:17 +0530 Subject: [PATCH 18/20] Update docs/integrations/microsoft-azure/azure-container-instances.md --- docs/integrations/microsoft-azure/azure-container-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 5e8e12c1d6..4285fe8ab2 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -132,7 +132,7 @@ Also you need to configure namespaces as shown below.
Date: Thu, 27 Feb 2025 15:50:18 +0530 Subject: [PATCH 19/20] Update and rename 2025-02-26-apps.md to 2025-02-27-apps.md --- blog-service/{2025-02-26-apps.md => 2025-02-27-apps.md} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename blog-service/{2025-02-26-apps.md => 2025-02-27-apps.md} (88%) diff --git a/blog-service/2025-02-26-apps.md b/blog-service/2025-02-27-apps.md similarity index 88% rename from blog-service/2025-02-26-apps.md rename to blog-service/2025-02-27-apps.md index 8bdc6c57e5..c8b2635829 100644 --- a/blog-service/2025-02-26-apps.md +++ b/blog-service/2025-02-27-apps.md @@ -2,8 +2,8 @@ title: Azure Container Instances (Apps) image: https://help.sumologic.com/img/sumo-square.png keywords: - - apps - - azure container instances + - microsoft-azure-apps + - azure-container-instances hide_table_of_contents: true --- @@ -11,4 +11,4 @@ import useBaseUrl from '@docusaurus/useBaseUrl'; icon -We're excited to introduce the new Azure Container Instances app for Sumo Logic. This app enables you to deploy and manage containers in Azure without the need for virtual machines. It is ideal for event-driven applications, microservices, and batch processing workloads. [Learn more](/docs/integrations/microsoft-azure/azure-container-instances). \ No newline at end of file +We're excited to introduce the new Azure Container Instances app for Sumo Logic. This app enables you to deploy and manage containers in Azure without the need for virtual machines. It is ideal for event-driven applications, microservices, and batch processing workloads. [Learn more](/docs/integrations/microsoft-azure/azure-container-instances). From 090bd045ff8d3f7473dfb7f21523eb916650cb49 Mon Sep 17 00:00:00 2001 From: Jagadisha V <129049263+JV0812@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:51:42 +0530 Subject: [PATCH 20/20] Update docs/integrations/microsoft-azure/azure-container-instances.md --- docs/integrations/microsoft-azure/azure-container-instances.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/integrations/microsoft-azure/azure-container-instances.md b/docs/integrations/microsoft-azure/azure-container-instances.md index 4285fe8ab2..f2a8aa6815 100644 --- a/docs/integrations/microsoft-azure/azure-container-instances.md +++ b/docs/integrations/microsoft-azure/azure-container-instances.md @@ -142,7 +142,8 @@ Also you need to configure namespaces as shown below.