All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.insights.kotlin.MetricAlert.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.insights.kotlin

import com.pulumi.azurenative.insights.kotlin.outputs.MetricAlertActionResponse
import com.pulumi.azurenative.insights.kotlin.outputs.MetricAlertActionResponse.Companion.toKotlin
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map

/**
 * Builder for [MetricAlert].
 */
@PulumiTagMarker
public class MetricAlertResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: MetricAlertArgs = MetricAlertArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend MetricAlertArgsBuilder.() -> Unit) {
        val builder = MetricAlertArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): MetricAlert {
        val builtJavaResource = com.pulumi.azurenative.insights.MetricAlert(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return MetricAlert(builtJavaResource)
    }
}

/**
 * The metric alert resource.
 * Azure REST API version: 2018-03-01. Prior API version in Azure Native 1.x: 2018-03-01.
 * ## Example Usage
 * ### Create or update a dynamic alert rule for Multiple Resources
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.DynamicMetricCriteriaArgs
 *                 {
 *                     AlertSensitivity = AzureNative.Insights.DynamicThresholdSensitivity.Medium,
 *                     CriterionType = "DynamicThresholdCriterion",
 *                     Dimensions = new() { },
 *                     FailingPeriods = new AzureNative.Insights.Inputs.DynamicThresholdFailingPeriodsArgs
 *                     {
 *                         MinFailingPeriodsToAlert = 4,
 *                         NumberOfEvaluationPeriods = 4,
 *                     },
 *                     MetricName = "Percentage CPU",
 *                     MetricNamespace = "microsoft.compute/virtualmachines",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.DynamicThresholdOperator.GreaterOrLessThan,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "MetricAlertOnMultipleResources",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1",
 *             "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         TargetResourceRegion = "southcentralus",
 *         TargetResourceType = "Microsoft.Compute/virtualMachines",
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.DynamicMetricCriteria{
 * 						AlertSensitivity: insights.DynamicThresholdSensitivityMedium,
 * 						CriterionType:    "DynamicThresholdCriterion",
 * 						Dimensions:       []insights.MetricDimension{},
 * 						FailingPeriods: insights.DynamicThresholdFailingPeriods{
 * 							MinFailingPeriodsToAlert:  4,
 * 							NumberOfEvaluationPeriods: 4,
 * 						},
 * 						MetricName:      "Percentage CPU",
 * 						MetricNamespace: "microsoft.compute/virtualmachines",
 * 						Name:            "High_CPU_80",
 * 						Operator:        insights.DynamicThresholdOperatorGreaterOrLessThan,
 * 						TimeAggregation: insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("MetricAlertOnMultipleResources"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1"),
 * 				pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2"),
 * 			},
 * 			Severity:             pulumi.Int(3),
 * 			Tags:                 nil,
 * 			TargetResourceRegion: pulumi.String("southcentralus"),
 * 			TargetResourceType:   pulumi.String("Microsoft.Compute/virtualMachines"),
 * 			WindowSize:           pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .alertSensitivity("Medium")
 *                     .criterionType("DynamicThresholdCriterion")
 *                     .dimensions()
 *                     .failingPeriods(DynamicThresholdFailingPeriodsArgs.builder()
 *                         .minFailingPeriodsToAlert(4)
 *                         .numberOfEvaluationPeriods(4)
 *                         .build())
 *                     .metricName("Percentage CPU")
 *                     .metricNamespace("microsoft.compute/virtualmachines")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterOrLessThan")
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("MetricAlertOnMultipleResources")
 *             .scopes(
 *                 "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1",
 *                 "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2")
 *             .severity(3)
 *             .tags()
 *             .targetResourceRegion("southcentralus")
 *             .targetResourceType("Microsoft.Compute/virtualMachines")
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update a dynamic alert rule for Single Resource
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.DynamicMetricCriteriaArgs
 *                 {
 *                     AlertSensitivity = AzureNative.Insights.DynamicThresholdSensitivity.Medium,
 *                     CriterionType = "DynamicThresholdCriterion",
 *                     Dimensions = new() { },
 *                     FailingPeriods = new AzureNative.Insights.Inputs.DynamicThresholdFailingPeriodsArgs
 *                     {
 *                         MinFailingPeriodsToAlert = 4,
 *                         NumberOfEvaluationPeriods = 4,
 *                     },
 *                     IgnoreDataBefore = "2019-04-04T21:00:00.000Z",
 *                     MetricName = "Percentage CPU",
 *                     MetricNamespace = "microsoft.compute/virtualmachines",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.DynamicThresholdOperator.GreaterOrLessThan,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "chiricutin",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.DynamicMetricCriteria{
 * 						AlertSensitivity: insights.DynamicThresholdSensitivityMedium,
 * 						CriterionType:    "DynamicThresholdCriterion",
 * 						Dimensions:       []insights.MetricDimension{},
 * 						FailingPeriods: insights.DynamicThresholdFailingPeriods{
 * 							MinFailingPeriodsToAlert:  4,
 * 							NumberOfEvaluationPeriods: 4,
 * 						},
 * 						IgnoreDataBefore: "2019-04-04T21:00:00.000Z",
 * 						MetricName:       "Percentage CPU",
 * 						MetricNamespace:  "microsoft.compute/virtualmachines",
 * 						Name:             "High_CPU_80",
 * 						Operator:         insights.DynamicThresholdOperatorGreaterOrLessThan,
 * 						TimeAggregation:  insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("chiricutin"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme"),
 * 			},
 * 			Severity:   pulumi.Int(3),
 * 			Tags:       nil,
 * 			WindowSize: pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .alertSensitivity("Medium")
 *                     .criterionType("DynamicThresholdCriterion")
 *                     .dimensions()
 *                     .failingPeriods(DynamicThresholdFailingPeriodsArgs.builder()
 *                         .minFailingPeriodsToAlert(4)
 *                         .numberOfEvaluationPeriods(4)
 *                         .build())
 *                     .ignoreDataBefore("2019-04-04T21:00:00.000Z")
 *                     .metricName("Percentage CPU")
 *                     .metricNamespace("microsoft.compute/virtualmachines")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterOrLessThan")
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("chiricutin")
 *             .scopes("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme")
 *             .severity(3)
 *             .tags()
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update a web test alert rule
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[] {},
 *         Criteria = new AzureNative.Insights.Inputs.WebtestLocationAvailabilityCriteriaArgs
 *         {
 *             ComponentId = "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example",
 *             FailedLocationCount = 2,
 *             OdataType = "Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria",
 *             WebTestId = "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example",
 *         },
 *         Description = "Automatically created alert rule for availability test \"component-example\" a",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "rg-example",
 *         RuleName = "webtest-name-example",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example",
 *             "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example",
 *         },
 *         Severity = 4,
 *         Tags =
 *         {
 *             { "hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example", "Resource" },
 *             { "hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example", "Resource" },
 *         },
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{},
 * 			Criteria: &insights.WebtestLocationAvailabilityCriteriaArgs{
 * 				ComponentId:         pulumi.String("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example"),
 * 				FailedLocationCount: pulumi.Float64(2),
 * 				OdataType:           pulumi.String("Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria"),
 * 				WebTestId:           pulumi.String("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example"),
 * 			},
 * 			Description:         pulumi.String("Automatically created alert rule for availability test \"component-example\" a"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("rg-example"),
 * 			RuleName:            pulumi.String("webtest-name-example"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example"),
 * 				pulumi.String("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example"),
 * 			},
 * 			Severity: pulumi.Int(4),
 * 			Tags: pulumi.StringMap{
 * 				"hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example": pulumi.String("Resource"),
 * 				"hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example":      pulumi.String("Resource"),
 * 			},
 * 			WindowSize: pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions()
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .componentId("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example")
 *                 .failedLocationCount(2)
 *                 .odataType("Microsoft.Azure.Monitor.WebtestLocationAvailabilityCriteria")
 *                 .webTestId("/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example")
 *                 .build())
 *             .description("Automatically created alert rule for availability test \"component-example\" a")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("rg-example")
 *             .ruleName("webtest-name-example")
 *             .scopes(
 *                 "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example",
 *                 "/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example")
 *             .severity(4)
 *             .tags(Map.ofEntries(
 *                 Map.entry("hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example", "Resource"),
 *                 Map.entry("hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example", "Resource")
 *             ))
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update an alert rule for Multiple Resource
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.MetricCriteriaArgs
 *                 {
 *                     CriterionType = "StaticThresholdCriterion",
 *                     Dimensions = new() { },
 *                     MetricName = "Percentage CPU",
 *                     MetricNamespace = "microsoft.compute/virtualmachines",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.Operator.GreaterThan,
 *                     Threshold = 80.5,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "MetricAlertOnMultipleResources",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1",
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         TargetResourceRegion = "southcentralus",
 *         TargetResourceType = "Microsoft.Compute/virtualMachines",
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.MetricCriteria{
 * 						CriterionType:   "StaticThresholdCriterion",
 * 						Dimensions:      []insights.MetricDimension{},
 * 						MetricName:      "Percentage CPU",
 * 						MetricNamespace: "microsoft.compute/virtualmachines",
 * 						Name:            "High_CPU_80",
 * 						Operator:        insights.OperatorGreaterThan,
 * 						Threshold:       80.5,
 * 						TimeAggregation: insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("MetricAlertOnMultipleResources"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1"),
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2"),
 * 			},
 * 			Severity:             pulumi.Int(3),
 * 			Tags:                 nil,
 * 			TargetResourceRegion: pulumi.String("southcentralus"),
 * 			TargetResourceType:   pulumi.String("Microsoft.Compute/virtualMachines"),
 * 			WindowSize:           pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .criterionType("StaticThresholdCriterion")
 *                     .dimensions()
 *                     .metricName("Percentage CPU")
 *                     .metricNamespace("microsoft.compute/virtualmachines")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterThan")
 *                     .threshold(80.5)
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("MetricAlertOnMultipleResources")
 *             .scopes(
 *                 "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme1",
 *                 "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme2")
 *             .severity(3)
 *             .tags()
 *             .targetResourceRegion("southcentralus")
 *             .targetResourceType("Microsoft.Compute/virtualMachines")
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update an alert rule for Single Resource
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertSingleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.MetricCriteriaArgs
 *                 {
 *                     CriterionType = "StaticThresholdCriterion",
 *                     Dimensions = new() { },
 *                     MetricName = "\\Processor(_Total)\\% Processor Time",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.Operator.GreaterThan,
 *                     Threshold = 80.5,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "Pt1m",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "chiricutin",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         WindowSize = "Pt15m",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertSingleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: insights.MetricCriteriaArray{
 * 					&insights.MetricCriteriaArgs{
 * 						CriterionType:   pulumi.String("StaticThresholdCriterion"),
 * 						Dimensions:      insights.MetricDimensionArray{},
 * 						MetricName:      pulumi.String("\\Processor(_Total)\\% Processor Time"),
 * 						Name:            pulumi.String("High_CPU_80"),
 * 						Operator:        pulumi.String(insights.OperatorGreaterThan),
 * 						Threshold:       pulumi.Float64(80.5),
 * 						TimeAggregation: pulumi.String(insights.AggregationTypeEnumAverage),
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("Pt1m"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("chiricutin"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme"),
 * 			},
 * 			Severity:   pulumi.Int(3),
 * 			Tags:       nil,
 * 			WindowSize: pulumi.String("Pt15m"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .criterionType("StaticThresholdCriterion")
 *                     .dimensions()
 *                     .metricName("\\Processor(_Total)\\% Processor Time")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterThan")
 *                     .threshold(80.5)
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("Pt1m")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("chiricutin")
 *             .scopes("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.Compute/virtualMachines/gigwadme")
 *             .severity(3)
 *             .tags()
 *             .windowSize("Pt15m")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update an alert rule on Resource group(s)
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.MetricCriteriaArgs
 *                 {
 *                     CriterionType = "StaticThresholdCriterion",
 *                     Dimensions = new() { },
 *                     MetricName = "Percentage CPU",
 *                     MetricNamespace = "microsoft.compute/virtualmachines",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.Operator.GreaterThan,
 *                     Threshold = 80.5,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "gigtest1",
 *         RuleName = "MetricAlertAtResourceGroupLevel",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest1",
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest2",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         TargetResourceRegion = "southcentralus",
 *         TargetResourceType = "Microsoft.Compute/virtualMachines",
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.MetricCriteria{
 * 						CriterionType:   "StaticThresholdCriterion",
 * 						Dimensions:      []insights.MetricDimension{},
 * 						MetricName:      "Percentage CPU",
 * 						MetricNamespace: "microsoft.compute/virtualmachines",
 * 						Name:            "High_CPU_80",
 * 						Operator:        insights.OperatorGreaterThan,
 * 						Threshold:       80.5,
 * 						TimeAggregation: insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest1"),
 * 			RuleName:            pulumi.String("MetricAlertAtResourceGroupLevel"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest1"),
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest2"),
 * 			},
 * 			Severity:             pulumi.Int(3),
 * 			Tags:                 nil,
 * 			TargetResourceRegion: pulumi.String("southcentralus"),
 * 			TargetResourceType:   pulumi.String("Microsoft.Compute/virtualMachines"),
 * 			WindowSize:           pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .criterionType("StaticThresholdCriterion")
 *                     .dimensions()
 *                     .metricName("Percentage CPU")
 *                     .metricNamespace("microsoft.compute/virtualmachines")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterThan")
 *                     .threshold(80.5)
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("gigtest1")
 *             .ruleName("MetricAlertAtResourceGroupLevel")
 *             .scopes(
 *                 "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest1",
 *                 "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest2")
 *             .severity(3)
 *             .tags()
 *             .targetResourceRegion("southcentralus")
 *             .targetResourceType("Microsoft.Compute/virtualMachines")
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update an alert rule on Subscription
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.MetricCriteriaArgs
 *                 {
 *                     CriterionType = "StaticThresholdCriterion",
 *                     Dimensions = new() { },
 *                     MetricName = "Percentage CPU",
 *                     MetricNamespace = "microsoft.compute/virtualmachines",
 *                     Name = "High_CPU_80",
 *                     Operator = AzureNative.Insights.Operator.GreaterThan,
 *                     Threshold = 80.5,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1M",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "MetricAlertAtSubscriptionLevel",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         TargetResourceRegion = "southcentralus",
 *         TargetResourceType = "Microsoft.Compute/virtualMachines",
 *         WindowSize = "PT15M",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.MetricCriteria{
 * 						CriterionType:   "StaticThresholdCriterion",
 * 						Dimensions:      []insights.MetricDimension{},
 * 						MetricName:      "Percentage CPU",
 * 						MetricNamespace: "microsoft.compute/virtualmachines",
 * 						Name:            "High_CPU_80",
 * 						Operator:        insights.OperatorGreaterThan,
 * 						Threshold:       80.5,
 * 						TimeAggregation: insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1M"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("MetricAlertAtSubscriptionLevel"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7"),
 * 			},
 * 			Severity:             pulumi.Int(3),
 * 			Tags:                 nil,
 * 			TargetResourceRegion: pulumi.String("southcentralus"),
 * 			TargetResourceType:   pulumi.String("Microsoft.Compute/virtualMachines"),
 * 			WindowSize:           pulumi.String("PT15M"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .criterionType("StaticThresholdCriterion")
 *                     .dimensions()
 *                     .metricName("Percentage CPU")
 *                     .metricNamespace("microsoft.compute/virtualmachines")
 *                     .name("High_CPU_80")
 *                     .operator("GreaterThan")
 *                     .threshold(80.5)
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1M")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("MetricAlertAtSubscriptionLevel")
 *             .scopes("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7")
 *             .severity(3)
 *             .tags()
 *             .targetResourceRegion("southcentralus")
 *             .targetResourceType("Microsoft.Compute/virtualMachines")
 *             .windowSize("PT15M")
 *             .build());
 *     }
 * }
 * ```
 * ### Create or update an alert rules with dimensions
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var metricAlert = new AzureNative.Insights.MetricAlert("metricAlert", new()
 *     {
 *         Actions = new[]
 *         {
 *             new AzureNative.Insights.Inputs.MetricAlertActionArgs
 *             {
 *                 ActionGroupId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2",
 *                 WebHookProperties =
 *                 {
 *                     { "key11", "value11" },
 *                     { "key12", "value12" },
 *                 },
 *             },
 *         },
 *         AutoMitigate = true,
 *         Criteria = new AzureNative.Insights.Inputs.MetricAlertMultipleResourceMultipleMetricCriteriaArgs
 *         {
 *             AllOf = new[]
 *             {
 *                 new AzureNative.Insights.Inputs.MetricCriteriaArgs
 *                 {
 *                     CriterionType = "StaticThresholdCriterion",
 *                     Dimensions = new[]
 *                     {
 *                         new AzureNative.Insights.Inputs.MetricDimensionArgs
 *                         {
 *                             Name = "ActivityName",
 *                             Operator = "Include",
 *                             Values = new[]
 *                             {
 *                                 "*",
 *                             },
 *                         },
 *                         new AzureNative.Insights.Inputs.MetricDimensionArgs
 *                         {
 *                             Name = "StatusCode",
 *                             Operator = "Include",
 *                             Values = new[]
 *                             {
 *                                 "200",
 *                             },
 *                         },
 *                     },
 *                     MetricName = "Availability",
 *                     MetricNamespace = "Microsoft.KeyVault/vaults",
 *                     Name = "Metric1",
 *                     Operator = AzureNative.Insights.Operator.GreaterThan,
 *                     Threshold = 55,
 *                     TimeAggregation = AzureNative.Insights.AggregationTypeEnum.Average,
 *                 },
 *             },
 *             OdataType = "Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria",
 *         },
 *         Description = "This is the description of the rule1",
 *         Enabled = true,
 *         EvaluationFrequency = "PT1H",
 *         Location = "global",
 *         ResourceGroupName = "gigtest",
 *         RuleName = "MetricAlertOnMultipleDimensions",
 *         Scopes = new[]
 *         {
 *             "/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.KeyVault/vaults/keyVaultResource",
 *         },
 *         Severity = 3,
 *         Tags = null,
 *         WindowSize = "P1D",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	insights "github.com/pulumi/pulumi-azure-native-sdk/insights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := insights.NewMetricAlert(ctx, "metricAlert", &insights.MetricAlertArgs{
 * 			Actions: insights.MetricAlertActionArray{
 * 				&insights.MetricAlertActionArgs{
 * 					ActionGroupId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2"),
 * 					WebHookProperties: pulumi.StringMap{
 * 						"key11": pulumi.String("value11"),
 * 						"key12": pulumi.String("value12"),
 * 					},
 * 				},
 * 			},
 * 			AutoMitigate: pulumi.Bool(true),
 * 			Criteria: &insights.MetricAlertMultipleResourceMultipleMetricCriteriaArgs{
 * 				AllOf: pulumi.Array{
 * 					insights.MetricCriteria{
 * 						CriterionType: "StaticThresholdCriterion",
 * 						Dimensions: []insights.MetricDimension{
 * 							{
 * 								Name:     "ActivityName",
 * 								Operator: "Include",
 * 								Values: []string{
 * 									"*",
 * 								},
 * 							},
 * 							{
 * 								Name:     "StatusCode",
 * 								Operator: "Include",
 * 								Values: []string{
 * 									"200",
 * 								},
 * 							},
 * 						},
 * 						MetricName:      "Availability",
 * 						MetricNamespace: "Microsoft.KeyVault/vaults",
 * 						Name:            "Metric1",
 * 						Operator:        insights.OperatorGreaterThan,
 * 						Threshold:       55,
 * 						TimeAggregation: insights.AggregationTypeEnumAverage,
 * 					},
 * 				},
 * 				OdataType: pulumi.String("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria"),
 * 			},
 * 			Description:         pulumi.String("This is the description of the rule1"),
 * 			Enabled:             pulumi.Bool(true),
 * 			EvaluationFrequency: pulumi.String("PT1H"),
 * 			Location:            pulumi.String("global"),
 * 			ResourceGroupName:   pulumi.String("gigtest"),
 * 			RuleName:            pulumi.String("MetricAlertOnMultipleDimensions"),
 * 			Scopes: pulumi.StringArray{
 * 				pulumi.String("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.KeyVault/vaults/keyVaultResource"),
 * 			},
 * 			Severity:   pulumi.Int(3),
 * 			Tags:       nil,
 * 			WindowSize: pulumi.String("P1D"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.insights.MetricAlert;
 * import com.pulumi.azurenative.insights.MetricAlertArgs;
 * import com.pulumi.azurenative.insights.inputs.MetricAlertActionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var metricAlert = new MetricAlert("metricAlert", MetricAlertArgs.builder()
 *             .actions(MetricAlertActionArgs.builder()
 *                 .actionGroupId("/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/gigtest/providers/microsoft.insights/actiongroups/group2")
 *                 .webHookProperties(Map.ofEntries(
 *                     Map.entry("key11", "value11"),
 *                     Map.entry("key12", "value12")
 *                 ))
 *                 .build())
 *             .autoMitigate(true)
 *             .criteria(MetricAlertMultipleResourceMultipleMetricCriteriaArgs.builder()
 *                 .allOf(DynamicMetricCriteriaArgs.builder()
 *                     .criterionType("StaticThresholdCriterion")
 *                     .dimensions(
 *                         MetricDimensionArgs.builder()
 *                             .name("ActivityName")
 *                             .operator("Include")
 *                             .values("*")
 *                             .build(),
 *                         MetricDimensionArgs.builder()
 *                             .name("StatusCode")
 *                             .operator("Include")
 *                             .values("200")
 *                             .build())
 *                     .metricName("Availability")
 *                     .metricNamespace("Microsoft.KeyVault/vaults")
 *                     .name("Metric1")
 *                     .operator("GreaterThan")
 *                     .threshold(55)
 *                     .timeAggregation("Average")
 *                     .build())
 *                 .odataType("Microsoft.Azure.Monitor.MultipleResourceMultipleMetricCriteria")
 *                 .build())
 *             .description("This is the description of the rule1")
 *             .enabled(true)
 *             .evaluationFrequency("PT1H")
 *             .location("global")
 *             .resourceGroupName("gigtest")
 *             .ruleName("MetricAlertOnMultipleDimensions")
 *             .scopes("/subscriptions/14ddf0c5-77c5-4b53-84f6-e1fa43ad68f7/resourceGroups/gigtest/providers/Microsoft.KeyVault/vaults/keyVaultResource")
 *             .severity(3)
 *             .tags()
 *             .windowSize("P1D")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:insights:MetricAlert webtest-name-example /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Insights/metricAlerts/{ruleName}
 * ```
 */
public class MetricAlert internal constructor(
    override val javaResource: com.pulumi.azurenative.insights.MetricAlert,
) : KotlinCustomResource(javaResource, MetricAlertMapper) {
    /**
     * the array of actions that are performed when the alert rule becomes active, and when an alert condition is resolved.
     */
    public val actions: Output>?
        get() = javaResource.actions().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 -> toKotlin(args0) })
                })
            }).orElse(null)
        })

    /**
     * the flag that indicates whether the alert should be auto resolved or not. The default is true.
     */
    public val autoMitigate: Output?
        get() = javaResource.autoMitigate().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * defines the specific alert criteria information.
     */
    public val criteria: Output
        get() = javaResource.criteria().applyValue({ args0 -> args0 })

    /**
     * the description of the metric alert that will be included in the alert email.
     */
    public val description: Output?
        get() = javaResource.description().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * the flag that indicates whether the metric alert is enabled.
     */
    public val enabled: Output
        get() = javaResource.enabled().applyValue({ args0 -> args0 })

    /**
     * how often the metric alert is evaluated represented in ISO 8601 duration format.
     */
    public val evaluationFrequency: Output
        get() = javaResource.evaluationFrequency().applyValue({ args0 -> args0 })

    /**
     * the value indicating whether this alert rule is migrated.
     */
    public val isMigrated: Output
        get() = javaResource.isMigrated().applyValue({ args0 -> args0 })

    /**
     * Last time the rule was updated in ISO8601 format.
     */
    public val lastUpdatedTime: Output
        get() = javaResource.lastUpdatedTime().applyValue({ args0 -> args0 })

    /**
     * Resource location
     */
    public val location: Output
        get() = javaResource.location().applyValue({ args0 -> args0 })

    /**
     * Azure resource name
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * the list of resource id's that this metric alert is scoped to.
     */
    public val scopes: Output>
        get() = javaResource.scopes().applyValue({ args0 -> args0.map({ args0 -> args0 }) })

    /**
     * Alert severity {0, 1, 2, 3, 4}
     */
    public val severity: Output
        get() = javaResource.severity().applyValue({ args0 -> args0 })

    /**
     * Resource tags
     */
    public val tags: Output>?
        get() = javaResource.tags().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.key.to(args0.value)
                }).toMap()
            }).orElse(null)
        })

    /**
     * the region of the target resource(s) on which the alert is created/updated. Mandatory if the scope contains a subscription, resource group, or more than one resource.
     */
    public val targetResourceRegion: Output?
        get() = javaResource.targetResourceRegion().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * the resource type of the target resource(s) on which the alert is created/updated. Mandatory if the scope contains a subscription, resource group, or more than one resource.
     */
    public val targetResourceType: Output?
        get() = javaResource.targetResourceType().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Azure resource type
     */
    public val type: Output
        get() = javaResource.type().applyValue({ args0 -> args0 })

    /**
     * the period of time (in ISO 8601 duration format) that is used to monitor alert activity based on the threshold.
     */
    public val windowSize: Output
        get() = javaResource.windowSize().applyValue({ args0 -> args0 })
}

public object MetricAlertMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.azurenative.insights.MetricAlert::class == javaResource::class

    override fun map(javaResource: Resource): MetricAlert = MetricAlert(
        javaResource as
            com.pulumi.azurenative.insights.MetricAlert,
    )
}

/**
 * @see [MetricAlert].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [MetricAlert].
 */
public suspend fun metricAlert(name: String, block: suspend MetricAlertResourceBuilder.() -> Unit): MetricAlert {
    val builder = MetricAlertResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [MetricAlert].
 * @param name The _unique_ name of the resulting resource.
 */
public fun metricAlert(name: String): MetricAlert {
    val builder = MetricAlertResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy