AlarmArgs

data class AlarmArgs(val alarmActions: Output<List<String>>? = null, val cloudMonitorGroupId: Output<Int>? = null, val comparisonOperator: Output<String>? = null, val description: Output<String>? = null, val dimensions: Output<Map<String, Any>>? = null, val enable: Output<Boolean>? = null, val evaluationCount: Output<Int>? = null, val metricName: Output<String>? = null, val metricType: Output<String>? = null, val name: Output<String>? = null, val period: Output<Int>? = null, val scalingGroupId: Output<String>? = null, val statistics: Output<String>? = null, val threshold: Output<String>? = null) : ConvertibleToJava<AlarmArgs>

Provides a ESS alarm task resource. For information about ess alarm, see CreateAlarm.

NOTE: Available since v1.15.0.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.ecs.inputs.GetImagesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.ecs.SecurityGroup;
import com.pulumi.alicloud.ecs.SecurityGroupArgs;
import com.pulumi.alicloud.ecs.SecurityGroupRule;
import com.pulumi.alicloud.ecs.SecurityGroupRuleArgs;
import com.pulumi.alicloud.ess.ScalingGroup;
import com.pulumi.alicloud.ess.ScalingGroupArgs;
import com.pulumi.alicloud.ess.ScalingRule;
import com.pulumi.alicloud.ess.ScalingRuleArgs;
import com.pulumi.alicloud.ess.Alarm;
import com.pulumi.alicloud.ess.AlarmArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("terraform-example");
final var defaultZones = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableDiskCategory("cloud_efficiency")
.availableResourceCreation("VSwitch")
.build());
final var defaultInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.cpuCoreCount(2)
.memorySize(4)
.build());
final var defaultImages = EcsFunctions.getImages(GetImagesArgs.builder()
.nameRegex("^ubuntu_18.*64")
.mostRecent(true)
.owners("system")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("172.16.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vpcId(defaultNetwork.id())
.cidrBlock("172.16.0.0/24")
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.vswitchName(name)
.build());
var defaultSecurityGroup = new SecurityGroup("defaultSecurityGroup", SecurityGroupArgs.builder()
.vpcId(defaultNetwork.id())
.build());
var defaultSecurityGroupRule = new SecurityGroupRule("defaultSecurityGroupRule", SecurityGroupRuleArgs.builder()
.type("ingress")
.ipProtocol("tcp")
.nicType("intranet")
.policy("accept")
.portRange("22/22")
.priority(1)
.securityGroupId(defaultSecurityGroup.id())
.cidrIp("172.16.0.0/24")
.build());
var default2 = new Switch("default2", SwitchArgs.builder()
.vpcId(defaultNetwork.id())
.cidrBlock("172.16.1.0/24")
.zoneId(defaultZones.applyValue(getZonesResult -> getZonesResult.zones()[0].id()))
.vswitchName(String.format("%s-bar", name))
.build());
var defaultScalingGroup = new ScalingGroup("defaultScalingGroup", ScalingGroupArgs.builder()
.minSize(1)
.maxSize(1)
.scalingGroupName(name)
.defaultCooldown(20)
.vswitchIds(
defaultSwitch.id(),
default2.id())
.removalPolicies(
"OldestInstance",
"NewestInstance")
.build());
var defaultScalingRule = new ScalingRule("defaultScalingRule", ScalingRuleArgs.builder()
.scalingRuleName(name)
.scalingGroupId(defaultScalingGroup.id())
.adjustmentType("TotalCapacity")
.adjustmentValue(2)
.cooldown(60)
.build());
var defaultAlarm = new Alarm("defaultAlarm", AlarmArgs.builder()
.description(name)
.alarmActions(defaultScalingRule.ari())
.scalingGroupId(defaultScalingGroup.id())
.metricType("system")
.metricName("CpuUtilization")
.period(300)
.statistics("Average")
.threshold(200.3)
.comparisonOperator(">=")
.evaluationCount(2)
.build());
}
}

Module Support

You can use to the existing autoscaling-rule module to create alarm task, different type rules and scheduled task one-click.

Import

Ess alarm can be imported using the id, e.g.

$ pulumi import alicloud:ess/alarm:Alarm example asg-2ze500_045efffe-4d05

Constructors

Link copied to clipboard
fun AlarmArgs(alarmActions: Output<List<String>>? = null, cloudMonitorGroupId: Output<Int>? = null, comparisonOperator: Output<String>? = null, description: Output<String>? = null, dimensions: Output<Map<String, Any>>? = null, enable: Output<Boolean>? = null, evaluationCount: Output<Int>? = null, metricName: Output<String>? = null, metricType: Output<String>? = null, name: Output<String>? = null, period: Output<Int>? = null, scalingGroupId: Output<String>? = null, statistics: Output<String>? = null, threshold: Output<String>? = null)

Functions

Link copied to clipboard
open override fun toJava(): AlarmArgs

Properties

Link copied to clipboard
val alarmActions: Output<List<String>>? = null

The list of actions to execute when this alarm transition into an ALARM state. Each action is specified as ess scaling rule ari.

Link copied to clipboard
val cloudMonitorGroupId: Output<Int>? = null

Defines the application group id defined by CMS which is assigned when you upload custom metric to CMS, only available for custom metirc.

Link copied to clipboard
val comparisonOperator: Output<String>? = null

The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Supported value: >=, <=, >, <. Defaults to >=.

Link copied to clipboard
val description: Output<String>? = null

The description for the alarm.

Link copied to clipboard
val dimensions: Output<Map<String, Any>>? = null

The dimension map for the alarm's associated metric. For all metrics, you can not set the dimension key as "scaling_group" or "userId", which is set by default, the second dimension for metric, such as "device" for "PackagesNetIn", need to be set by users. See dimensions below.

Link copied to clipboard
val enable: Output<Boolean>? = null

Whether to enable specific ess alarm. Default to true.

Link copied to clipboard
val evaluationCount: Output<Int>? = null

The number of times that needs to satisfies comparison condition before transition into ALARM state. Defaults to 3.

Link copied to clipboard
val metricName: Output<String>? = null

The name for the alarm's associated metric. See dimensions below for details.

Link copied to clipboard
val metricType: Output<String>? = null

The type for the alarm's associated metric. Supported value: system, custom. "system" means the metric data is collected by Aliyun Cloud Monitor Service(CMS), "custom" means the metric data is upload to CMS by users. Defaults to system.

Link copied to clipboard
val name: Output<String>? = null

The name for ess alarm.

Link copied to clipboard
val period: Output<Int>? = null

The period in seconds over which the specified statistic is applied. Supported value: 60, 120, 300, 900. Defaults to 300.

Link copied to clipboard
val scalingGroupId: Output<String>? = null

The scaling group associated with this alarm, the 'ForceNew' attribute is available in 1.56.0+.

Link copied to clipboard
val statistics: Output<String>? = null

The statistic to apply to the alarm's associated metric. Supported value: Average, Minimum, Maximum. Defaults to Average.

Link copied to clipboard
val threshold: Output<String>? = null

The value against which the specified statistics is compared.