1. How to send Azure Function App logs to Log Analytics workspace?


    Sure, to send Azure Function App logs to a Log Analytics workspace, you would need to use azure-native.insights.DiagnosticSetting where you can specify log analytics workspace and function app details.

    Let's start by defining the Azure resources required to accomplish this. First, you would require an instance of azure-native.appservice.WebApp which represents your Azure Function App. Second, an instance of azure-native.operationalinsights.Workspaces would represent our Log Analytics workspace.

    Now, the azure-native.insights.DiagnosticSetting performs an association between Function App and Log Analytics. In it, we define the logs and metrics we want to export and target Log Analytics workspace.

    These resources can be defined as shown below:

    using Pulumi; using Pulumi.AzureNative.Insights; using Pulumi.AzureNative.Insights.Inputs; using Pulumi.AzureNative.OperationalInsights; using Pulumi.AzureNative.AppService; using Pulumi.AzureNative.AppService.Inputs; using Pulumi.AzureNative.Storage; using Pulumi.AzureNative.Storage.Inputs; class MyStack : Stack { public MyStack() { // Create a Resource Group var resourceGroup = new Resources.ResourceGroup("resourceGroup"); // Create a storage account var storageAccount = new StorageAccount("sa", new StorageAccountArgs { ResourceGroupName = resourceGroup.Name, Sku = new SkuArgs { Name = SkuName.Standard_LRS }, Kind = Kind.StorageV2 }); // Create an azure function app var app = new WebApp("functionApp", new WebAppArgs { ResourceGroupName = resourceGroup.Name, ServerFarmId = new Plan("plan", new PlanArgs { ResourceGroupName = resourceGroup.Name, Kind = "FunctionApp", Sku = new SkuDescriptionArgs { Tier = "Dynamic", Name = "Y1" } }).Id, // other required args here... }); // Create a Log Analytics workspace var workspace = new Pulumi.AzureNative.OperationalInsights.Workspace("workspace", new WorkspaceArgs { ResourceGroupName = resourceGroup.Name, Sku = new Pulumi.AzureNative.OperationalInsights.Inputs.SkuArgs { Name = Pulumi.AzureNative.OperationalInsights.SkuName.PerGB2018 }, }); // setup diagnostic setting var diagnosticSetting = new DiagnosticSetting("diagnosticSetting", new DiagnosticSettingArgs { ResourceUri = app.Id, WorkspaceId = workspace.Id, Logs = new LogSettingsArgs { RetentionPolicy = new RetentionPolicyArgs { Enabled = true, Days = 7, }, Category = "FunctionAppLogs", Enabled = true, }, Metrics = new MetricSettingsArgs { RetentionPolicy = new RetentionPolicyArgs { Enabled = true, Days = 7, }, TimeGrain = "PT1M", Enabled = true, }, }); } }

    Please replace "FunctionAppLogs" with the name of specific logs you wish to export.

    This code accomplishes the user goal by defining a diagnostic setting that collects logs and metrics of a Function App and sends them to a specified Log Analytics workspace.

    Remember to replace placeholders and empty strings (like "your_functionapp_name") with your specific values.

    To run this code, you'll need to install the Pulumi CLI and the .NET Core SDK. Then, you can run pulumi up in the directory containing your .cs file.