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:
-
Abra el panel IBM Cloud Logs para su instancia de registro.
-
Haga clic en el icono Alertas
.
-
Haz clic en Gestión de alertas.
-
Selecciona la alerta que deseas importar.
-
Encuentre
Alert unique identifier:en la secciónHistory.
Obtenga el ID de alerta utilizando la CLI
Para obtener el ID de alerta mediante la CLI:
-
Inicie sesión en la CLI y establezca la configuración siguiendo estos pasos
-
Liste las alertas ejecutando el comando
ibmcloud logs alert-definitions. -
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:
-
Cree un archivo
main.tfcon 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 } -
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.
-
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"] } } -
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" } -
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. -
Ejecute el siguiente comando para ver el estado del recurso importado.
terraform state show ibm_logs_alert_definition.alert_managed_by_tf -
Copie el contenido necesario de la salida
terraform state showa su bloque de recursosibm_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 } } } } -
Elimine todas las referencias del recurso
ibm_logs_alert.alert_managed_by_tfde su archivomain.tf. -
Elimine todas las referencias del recurso
ibm_logs_alert.alert_managed_by_tfdel estado ejecutandoterraform state rm ibm_logs_alert.alert_managed_by_tf. -
Ejecute
terraform planpara generar un plan de ejecución Terraform para previsualizar las acciones propuestas.terraform plan -
Ejecute
terraform applypara 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.
-
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"] } } -
Añada el nuevo bloque de recursos a su archivo
main.tfy 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" } -
Inicie sesión en la CLI Schematics.
-
Ejecute Schematics
workspace updatecomando para extraer el código más reciente en su espacio de trabajo. -
Ejecute el Schematics
workspace importcomando 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> -
Ejecute la página Schematics
workspace state showcomando:ibmcloud schematics workspace state show --id <schematics workspace id> --address ibm_logs_alert_definition.alert_managed_by_tf` -
Copie el contenido necesario del espacio de trabajo Schematics
state show commandoutput a su bloque de recursosibm_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 } } } } -
Elimine todas las referencias del recurso
ibm_logs_alert.alert_managed_by_tfde su archivomain.tf. -
Actualice su repositorio GitHub con los cambios en el código y actualice el espacio de trabajo utilizando la dirección Schematics
workspace updatecomando. -
Elimine todas las referencias del recurso
ibm_logs_alert.alert_managed_by_tfdel estado del espacio de trabajo mediante la función Schematicsworkspace state rmcomando:ibmcloud schematics workspace state rm --id WORKSPACE_ID --address ibm_logs_alert_definition.alert_managed_by_tf
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.