Cambios necesarios en Terraform para convertir las alertas existentes en IBM Cloud Logs

IBM® Cloud Logs Se ha modificado la configuración y el procesamiento de las alertas, así como la forma en que se definen sus prioridades. Estos cambios podrían afectar a cualquier automatización configurada mediante Terraform para su entorno.

Los proveedores de recursos ibm_logs_alert_definition y ibm_logs_alert ofrecen funciones similares para las alertas IBM® Cloud Logs, pero se accede a ellas utilizando métodos de API diferentes. El recurso ibm_logs_alert_definition amplía las capacidades del recurso tradicional ibm_logs_alert al admitir configuraciones avanzadas, como:

Para ser compatible con la configuración de alerta actual, desea actualizar su Terraform de usar ibm_logs_alert a ibm_logs_alert_definition.

La API de definición de alertas es totalmente compatible con la API de alertas. Se puede acceder y gestionar todas las alertas creadas mediante la API de definición de alertas.

Para reconfigurar las alertas existentes, utilice el recurso ibm_logs_alert_definition para importarlas. Con el recurso ibm_logs_alert_definition, puede seguir gestionando las alertas existentes utilizando la estructura de recursos actualizada.

Importe su ibm_logs_alert y cree un recurso ibm_logs_alert_definition

Obtener el ID de la alerta existente

En primer lugar, debe obtener el ID de alerta de la alerta existente para importar la definición de alerta al nuevo recurso ibm_logs_alert_definition.

Obtener el ID de la alerta mediante la interfaz de usuario

Para obtener el ID de alerta mediante la interfaz de usuario:

  1. Abra el panel IBM Cloud Logs para su instancia de registro.

  2. Haga clic en el icono Alertas icono Alertas.

  3. Haz clic en Gestión de alertas.

  4. Selecciona la alerta que deseas importar.

  5. Encuentre Alert unique identifier: en la sección History.

Obtenga el ID de alerta utilizando la CLI

Para obtener el ID de alerta mediante la CLI:

  1. Inicie sesión en la CLI y establezca la configuración siguiendo estos pasos

  2. Liste las alertas ejecutando el comando ibmcloud logs alert-definitions.

  3. Busque el ID de la alerta que desea importar en la columna ID de la respuesta comando CLI.

Obtener el ID de alerta mediante Terraform

Para obtener el ID de alerta mediante Terraform:

  1. Cree un archivo main.tf con la siguiente fuente de datos. Esta fuente de datos enumera todas las alertas de la instancia.

        data "ibm_logs_alert_definitions" "alerts" {
            instance_id = "guid-of-logs-instance"
            region      = "region-of-logs-instance"
        }
        locals {
            alertdefs  = data.ibm_logs_alert_definitions.alerts.alert_definitions
            alertids   = [for adf in local.alertdefs : "${data.ibm_logs_alert_definitions.alerts.region}/${data.ibm_logs_alert_definitions.alerts.instance_id}/${adf.id}"]
            alertnames = [for adf in local.alertdefs : adf.name]
        }
        output "alertids" {
            value = local.alertids
        }
        output "alertnames" {
            value = local.alertnames
        }
    
  2. Ejecute terraform apply.

Los ID y nombres de las alertas se devuelven como salida. Identifique el ID de la alerta que desea importar de la salida.

Creación del identificador de alerta construido

El recurso ibm_logs_alert_definition puede importarse utilizando un ID de alerta construido. El identificador de alerta construido es una combinación de la región IBM Cloud Logs, el instance_id, y el alert_id único recuperado. Para más información, consulte la documentación de ibm_logs_alert_definition Terraform.

Debe crear un identificador de alerta construido con el siguiente formato: <region>/<instance_id><alert_id>. Este ID de alerta construido se utiliza en los pasos de importación.

Importación y conversión de la alerta en un recurso ibm_logs_alert_definition en un sistema local

Utilice estos pasos para importar y convertir una alerta existente ejecutando los pasos en un sistema local, consola o máquina virtual.

En este ejemplo, Terraform gestiona una alerta denominada alert-managed-by-tf.

  1. Edita tu archivo main.tf.

    resource "ibm_logs_alert" "alert_managed_by_tf" {
      instance_id = "d58f8c45-f781-4aca-b18d-71ad17825867"
      region      = "eu-es"
      name        = "alert-managed-by-tf"
      is_active   = true
      severity    = "info_or_unspecified"
      description = "alert managed by tf"
      notification_groups {
        notifications {
          retriggering_period_seconds = 3600
          notify_on                   = "triggered_and_resolved"
          integration_id              = "27"
        }
      }
      incident_settings {
        retriggering_period_seconds  = 3600
        notify_on                    = "triggered_and_resolved"
        use_as_notification_settings = false
      }
      condition {
        less_than {
          parameters {
            threshold          = 1
            timeframe          = "timeframe_1_h"
            relative_timeframe = "hour_or_unspecified"
        cardinality_fields = []
          }
        }
      }
      filters {
        filter_type = "text_or_unspecified"
        text        = "action:tf"
        severities  = ["info"]
      }
    }
    
  2. Añada un bloque de recursos a su archivo main.tf.

    resource "ibm_logs_alert_definition" "alert_managed_by_tf" {
        instance_id = "d58f8c45-f781-4aca-b18d-71ad17825867"
        region      = "eu-es"
    }
    
  3. Ejecute el siguiente comando con el <ID_alerta_construida> de la alerta que desea convertir.

    terraform import ibm_logs_alert_definition.alert_managed_by_tf <constructed_alert_ID>
    

    El estado se importa para el recurso ibm_logs_alert_definition.alert_managed_by_tf.

  4. Ejecute el siguiente comando para ver el estado del recurso importado.

    terraform state show ibm_logs_alert_definition.alert_managed_by_tf
    
  5. Copie el contenido necesario de la salida terraform state show a su bloque de recursos ibm_logs_alert_definition.

    El bloque de recursos actualizado sería similar al siguiente ejemplo:

        resource "ibm_logs_alert_definition" "alert_managed_by_tf" {
            deleted      = false
            description  = "alert managed by tf"
            enabled      = true
            instance_id  = "d58f8c45-f781-4aca-b18d-71ad17825867"
            name         = "alert-managed-by-tf"
            phantom_mode = false
            priority     = "p5_or_unspecified"
            region       = "eu-es"
            type         = "logs_threshold"
            incidents_settings {
                minutes   = 60
                notify_on = "triggered_and_resolved"
            }
            logs_threshold {
                condition_type              = "less_than"
                evaluation_delay_ms         = 0
                notification_payload_filter = []
                logs_filter {
                    simple_filter {
                        lucene_query = "action:tf"
                         label_filters {
                            severities = [
                                "info",
                            ]
                        }
                    }
                }
                rules {
                    condition {
                        threshold = 1
                        time_window {
                            logs_time_window_specific_value = "hour_1"
                        }
                    }
                    override {
                        priority = "p5_or_unspecified"
                    }
                }
                undetected_values_management {
                    auto_retire_timeframe     = "never_or_unspecified"
                    trigger_undetected_values = true
                }
            }
            notification_group {
                group_by_keys = []
                webhooks {
                    minutes   = 60
                    notify_on = "triggered_and_resolved"
                    integration {
                        integration_id = 27
                    }
                }
            }
        }
    
  6. Elimine todas las referencias del recurso ibm_logs_alert.alert_managed_by_tf de su archivo main.tf.

  7. Elimine todas las referencias del recurso ibm_logs_alert.alert_managed_by_tf del estado ejecutando terraform state rm ibm_logs_alert.alert_managed_by_tf.

  8. Ejecute terraform plan para generar un plan de ejecución Terraform para previsualizar las acciones propuestas.

    terraform plan
    
  9. Ejecute terraform apply para crear los recursos definidos en el plan.

    terraform apply
    

La salida dice No infrastructure changes. Ahora puede gestionar su alerta alert-managed-by-tf utilizando el recurso ibm_logs_alert_definition.

Importación y conversión de su alerta en un recurso ibm_logs_alert_definition en IBM Cloud Schematics

Siga estos pasos para importar y convertir una alerta existente gestionada por Terraform en Schematics.

Para este ejemplo, se convierte una alerta denominada alert-managed-by-tf.

  1. Edita tu archivo main.tf.

    resource "ibm_logs_alert" "alert_managed_by_tf" {
      instance_id = "d58f8c45-f781-4aca-b18d-71ad17825867"
      region      = "eu-es"
      name        = "alert-managed-by-tf"
      is_active   = true
      severity    = "info_or_unspecified"
      description = "alert managed by tf"
      notification_groups {
        notifications {
          retriggering_period_seconds = 3600
          notify_on                   = "triggered_and_resolved"
          integration_id              = "27"
        }
      }
      incident_settings {
        retriggering_period_seconds  = 3600
        notify_on                    = "triggered_and_resolved"
        use_as_notification_settings = false
      }
      condition {
        less_than {
          parameters {
            threshold          = 1
            timeframe          = "timeframe_1_h"
            relative_timeframe = "hour_or_unspecified"
            cardinality_fields = []
          }
        }
      }
      filters {
        filter_type = "text_or_unspecified"
        text        = "action:tf"
        severities  = ["info"]
      }
    }
    
  2. Añada el nuevo bloque de recursos a su archivo main.tf y envíelo a su repositorio GitHub.

    resource "ibm_logs_alert_definition" "alert_managed_by_tf" {
        instance_id = "d58f8c45-f781-4aca-b18d-71ad17825867"
        region      = "eu-es"
    }
    
  3. Inicie sesión en la CLI Schematics.

  4. Ejecute Schematics workspace update comando para extraer el código más reciente en su espacio de trabajo.

  5. Ejecute el Schematics workspace import comando con el <identificación_de_alerta_construida> para que la alerta importe su recurso:

    ibmcloud schematics workspace import --id <schematics workspace id> --address ibm_logs_alert_definition.alert_managed_by_tf --resourceID <constructed_alert_ID>
    
  6. Ejecute la página Schematics workspace state show comando:

    ibmcloud schematics workspace state show --id <schematics workspace id>  --address ibm_logs_alert_definition.alert_managed_by_tf`
    
  7. Copie el contenido necesario del espacio de trabajo Schematics state show command output a su bloque de recursos ibm_logs_alert_definition.

    El bloque de recursos actualizado sería similar al siguiente ejemplo:

        resource "ibm_logs_alert_definition" "alert_managed_by_tf" {
            deleted      = false
            description  = "alert managed by tf"
            enabled      = true
            instance_id  = "d58f8c45-f781-4aca-b18d-71ad17825867"
            name         = "alert-managed-by-tf"
            phantom_mode = false
            priority     = "p5_or_unspecified"
            region       = "eu-es"
            type         = "logs_threshold"
            incidents_settings {
                minutes   = 60
                notify_on = "triggered_and_resolved"
            }
            logs_threshold {
                condition_type              = "less_than"
                evaluation_delay_ms         = 0
                notification_payload_filter = []
                logs_filter {
                    simple_filter {
                        lucene_query = "action:tf"
                         label_filters {
                            severities = [
                                "info",
                            ]
                        }
                    }
                }
                rules {
                    condition {
                        threshold = 1
                        time_window {
                            logs_time_window_specific_value = "hour_1"
                        }
                    }
                    override {
                        priority = "p5_or_unspecified"
                    }
                }
                undetected_values_management {
                    auto_retire_timeframe     = "never_or_unspecified"
                    trigger_undetected_values = true
                }
            }
            notification_group {
                group_by_keys = []
                webhooks {
                    minutes   = 60
                    notify_on = "triggered_and_resolved"
                    integration {
                        integration_id = 27
                    }
                }
            }
        }
    
  8. Elimine todas las referencias del recurso ibm_logs_alert.alert_managed_by_tf de su archivo main.tf.

  9. Actualice su repositorio GitHub con los cambios en el código y actualice el espacio de trabajo utilizando la dirección Schematics workspace update comando.

  10. Elimine todas las referencias del recurso ibm_logs_alert.alert_managed_by_tf del estado del espacio de trabajo mediante la función Schematics workspace state rm comando:

    ibmcloud schematics workspace state rm --id WORKSPACE_ID --address ibm_logs_alert_definition.alert_managed_by_tf
    
  11. Ejecute el sitio Schematics plan y apply comandos.

La salida dice No infrastructure changes. Ahora puede gestionar su alerta alert-managed-by-tf mediante el recurso ibm_logs_alert_definition utilizando el espacio de trabajo Schematics.