Попытка создать собственную метрику диска, опубликованную унифицированным агентом CW для нескольких экземпляров в Terraform. - PullRequest
0 голосов
/ 30 ноября 2018

Сценарий - если к экземпляру подключено несколько томов ebs, то metric_name = "disk_used_percent" будет опубликовано для каждого устройства, через которое я хочу выполнить цикл, чтобы можно было создавать сигналы тревоги для каждого устройства и иметь имя с соответствующим идентификатором экземпляра.,Github - https://github.com/hirenshah005/cloudwatch

data "aws_instance" "x" {
count       = "${length(data.aws_instances.all_ec2.ids)}"
instance_id = "${element(data.aws_instances.all_ec2.*.id, count.index)}"
}

#------------Disk Alarms------------------
resource "aws_cloudwatch_metric_alarm" "disk_used_percent" {
count                     = "${length(data.aws_instance.x.*.ebs_block_device)}"
alarm_name                = "Disk_used_percent_below_10%_on-${data.aws_instance.x.id}-${element(data.aws_instance.x.ebs_block_device.device_name, count.index)}"
comparison_operator       = "LessThanOrEqualToThreshold"
evaluation_periods        = "2"
datapoints_to_alarm       = "2"
metric_name               = "disk_used_percent"
namespace                 = "Custim/CWAgent"
period                    = "900"
threshold                 = "10"
insufficient_data_actions = []

dimensions {
InstanceId = "${element(data.aws_instances.all_ec2.ids, count.index)}"
}

alarm_description = "This alarm will trigger when usable EBS storage is below 10% on --> ${data.aws_instances.all_ec2.ids[count.index]}"
alarm_actions     = ["${var.sns_notification_arn}"]
}

Ошибка ----------

data.aws_instances.all_ec2: Refreshing state...
data.aws_instance.x[0]: Refreshing state...
data.aws_instance.x[2]: Refreshing state...
data.aws_instance.x[4]: Refreshing state...
data.aws_instance.x[1]: Refreshing state...
data.aws_instance.x[3]: Refreshing state...

Error: Error refreshing state: 1 error(s) occurred:

* module.cloudwatch-metrics.data.aws_instance.x: 5 error(s) occurred:

* module.cloudwatch-metrics.data.aws_instance.x[1]: data.aws_instance.x.1: InvalidInstanceID.Malformed: Invalid id: "terraform-20181129025105352600000001"
        status code: 400, request id: 11c44ab9-06c0-466c-9d08-2e5cafcedb9a
* module.cloudwatch-metrics.data.aws_instance.x[0]: data.aws_instance.x.0: InvalidInstanceID.Malformed: Invalid id: "terraform-20181129025105352600000001"
        status code: 400, request id: 072d11e8-9067-41e2-a79b-6a4f09b5af07
* module.cloudwatch-metrics.data.aws_instance.x[3]: data.aws_instance.x.3: InvalidInstanceID.Malformed: Invalid id: "terraform-20181129025105352600000001"
        status code: 400, request id: 7a59d224-36bf-44be-ac17-ee8b65e6a6c5
* module.cloudwatch-metrics.data.aws_instance.x[4]: data.aws_instance.x.4: InvalidInstanceID.Malformed: Invalid id: "terraform-20181129025105352600000001"
        status code: 400, request id: 6ca1bfed-d38b-4868-86e5-bc042085ff90
* module.cloudwatch-metrics.data.aws_instance.x[2]: data.aws_instance.x.2: InvalidInstanceID.Malformed: Invalid id: "terraform-20181129025105352600000001"
        status code: 400, request id: f1dd970e-5faa-4c20-ae0f-00869e3bcdae

1 Ответ

0 голосов
/ 30 ноября 2018

Если я правильно понимаю ваш сценарий, к сожалению, я не верю, что это возможно в настоящее время с Terraform v0.11.x.

И вот почему: у вас есть переменная # экземпляров с присоединенной переменной # томов EBS.например, экземпляр № 1 имеет 2 тома EBS, экземпляр № 2 имеет 3, экземпляр № 3 имеет 1 и т. д.

count на aws_cloudwatch_metric_alarm должно быть сумма количество томов EBS.В v0.11.x нет более сложного цикла, кроме count.

Теперь, если количество томов, прикрепленных к каждому экземпляру, фиксировано, вы можете выполнить умножение, чтобы определить количество. -> Если это правда, обновите свой вопрос, и я обновлю этот ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...