Alarm

class Alarm : KotlinCustomResource

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

Properties

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

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>?

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

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>?

The description for the alarm.

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

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>?

Whether to enable specific ess alarm. Default to true.

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

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

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val metricName: Output<String>

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

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

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>

The name for ess alarm.

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

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 pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val scalingGroupId: Output<String>

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

Link copied to clipboard
val state: Output<String>

The status of the event-triggered task. Valid values:

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

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>

The value against which the specified statistics is compared.

Link copied to clipboard
val urn: Output<String>