tencent cloud

Feedback

Configuring Alarm Policies Using Terraform

Last updated: 2023-12-29 16:11:24

    Prerequisites

    Installing Terraform

    For detailed instructions on installing Terraform, see Installing Terraform.
    Note:
    The installed version of Terraform must not be below v1.6.3. You can verify the version of Terraform installed by using the command terraform --version.

    Configuring Tencent Cloud Account Information

    Before using Terraform for the first time, go to API Key to apply for a SecretID and SecretKey of the security credentials. If you already have valid credentials, skip this step.
    1. Log in to the CAM Console and choose Access Key > API Keys from the left sidebar.
    2. On the API Keys page, click Create Key to create a SecretId/SecretKey pair.

    There are two methods for configuring Tencent Cloud account information:

    Authentication by Static Credentials
    Create a provider.tf file in the user directory with the following content. Replace my-secret-id and my-secret-key with your SecretId and SecretKey, respectively.
    provider "tencentcloud" {
    secret_id = "my-secret-id"
    secret_key = "my-secret-key"
    }
    Authentication by Environment Variables
    Configure the computer environment variables or cloud environment variables by running the following command. Replace YOUR_SECRET_ID and YOUR_SECRET_KEY with your SecretId and SecretKey, respectively.
    export TENCENTCLOUD_SECRET_ID=YOUR_SECRET_ID
    export TENCENTCLOUD_SECRET_KEY=YOUR_SECRET_KEY

    Adding a Terraform Alarm Policy to a Prometheus Instance

    1. Create a new Terraform configuration file. Create a new directory and a file named main.tf in the directory. The following is the configuration information:
    #Specifying Provider Configuration Information
    
    terraform { required_providers { tencentcloud = { source = "tencentcloudstack/tencentcloud" } } }
    
    #Configuring Alarm for Prometheus (Cloud Monitoring Side Configuration)
    
    resource "tencentcloud_monitor_tmp_alert_rule" "foo" {
    duration = "2m"
    expr = "avg by (instance) (mysql_global_status_threads_connected) / avg by (instance) (mysql_global_variables_max_connections) > 0.8"
    instance_id = tencentcloud_monitor_tmp_instance.foo.id
    receivers = ["notice-zmjsavnp"] # Notifications templates can be created here using the Cloud Monitor's tf
    rule_name = "MySQL Excessive Connections--tf-Cloud Monitor Test"
    rule_state = 2
    type = "MySQL/Excessive MySQL Connections"
    
    annotations {
    key = "description"
    value = "Too many MySQL connections, instance: {{$labels.instance}}, current value: {{ $value | humanizePercentage }}."
    }
    annotations {
    key = "summary"
    value = "MySQL has too many connections(>80%)"
    }
    
    labels {
    key = "severity"
    value = "warning"
    }
    }
    Note:
    The fields of the configuration are as follows:
    duration: Rule persistence duration.
    expr: Alarm expression.
    instance_id: Instance ID.
    receivers: List of alarm recipients.
    rule_name: Alarm rule name.
    rule_state: Alarm rule status.
    type: Alarm rule type.
    2. To initialize the Terraform runtime environment, run the following command:
    terraform init
    Expected output:
    
    Initializing the backend...
    
    Initializing provider plugins...
    - Reusing previous version of tencentcloudstack/tencentcloud from the dependency lock file
    - Using previously-installed tencentcloudstack/tencentcloud v1.81.32
    
    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
    3. To generate a resource plan, run the following command:
    terraform plan
    Expected output:
    tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-jh0zntj2]
    tencentcloud_monitor_tmp_exporter_integration.tmpExporterIntegration: Refreshing state... [id=balck-box-tf-test#prom-jh0zntj2#1##blackbox-exporter]
    tencentcloud_monitor_tmp_tke_cluster_agent.foo: Refreshing state... [id=prom-jh0zntj2#cls-1uary7z2#eks]
    tencentcloud_monitor_tmp_exporter_integration.tmpExporterMointor: Refreshing state... [id=tf-test-cjtest#prom-jh0zntj2#1##qcloud-exporter]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
    following symbols:
    + create
    
    Terraform will perform the following actions:
    
    # tencentcloud_monitor_tmp_alert_rule.foo will be created
    + resource "tencentcloud_monitor_tmp_alert_rule" "foo" {
    + duration = "2m"
    + expr = "avg by (instance) (mysql_global_status_threads_connected) / avg by (instance) (mysql_global_variables_max_connections) > 0.8"
    + id = (known after apply)
    + instance_id = "prom-jh0zntj2"
    + receivers = [
    + "notice-zmjsavnp",
    ]
    + rule_name = "Excessive MySQL connections--tf-Cloud monitoring test"
    + rule_state = 2
    + type = "MySQL/Excessive MySQL Connections"
    
    + annotations {
    + key = "description"
    + value = "Excessive MySQL connections, instance: {{$labels.instance}}, Current value: {{ $value | humanizePercentage }}."
    }
    + annotations {
    + key = "summary"
    + value = "Excessive MySQL connections (>80%)"
    }
    
    + labels {
    + key = "severity"
    + value = "warning"
    }
    }
    
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    
    Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if
    you run "terraform apply" now.
    4. To create component integration of the Integration Center, run the following command:
    terraform apply
    Expected output:
    tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-jh0zntj2]
    tencentcloud_monitor_tmp_exporter_integration.tmpExporterIntegration: Refreshing state... [id=balck-box-tf-test#prom-jh0zntj2#1##blackbox-exporter]
    tencentcloud_monitor_tmp_exporter_integration.tmpExporterMointor: Refreshing state... [id=tf-test-cjtest#prom-jh0zntj2#1##qcloud-exporter]
    tencentcloud_monitor_tmp_tke_cluster_agent.foo: Refreshing state... [id=prom-jh0zntj2#cls-1uary7z2#eks]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
    following symbols:
    + create
    
    Terraform will perform the following actions:
    Instance content...
    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
    Terraform will perform the actions described above.
    Only 'yes' will be accepted to approve.
    
    Enter a value: yes
    
    tencentcloud_monitor_tmp_alert_rule.foo: Creating...
    tencentcloud_monitor_tmp_alert_rule.foo: Creation complete after 2s [id=prom-jh0zntj2#arule-n76kqshg]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

    Viewing the Status of the Prometheus Instance

    Log in to the TCOP, and choose Managed Service for Prometheus from the left-hand navigation bar. Existing instances are displayed in the Prometheus instance list.

    Deleting the Component Integration in the Prometheus Instance Integration Center

    To terminate the resources, run the following command:
    terraform destroy
    Expected output:
    tencentcloud_monitor_tmp_instance.foo: Refreshing state... [id=prom-8dyb6iny]
    
    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
    following symbols:
    - destroy
    
    Terraform will perform the following actions:
    Instance content...
    
    Do you really want to destroy all resources?
    Terraform will destroy all your managed infrastructure, as shown above.
    There is no undo. Only 'yes' will be accepted to confirm.
    
    Enter a value: yes
    
    tencentcloud_monitor_tmp_instance.foo: Destroying... [id=prom-8dyb6iny]
    tencentcloud_monitor_tmp_instance.foo: Destruction complete after 6s
    
    Destroy complete! Resources: 1 destroyed.
    Note:
    If Destroy complete! Resources: (numbers of existing instances) destroyed. is displayed, the instance has been deleted.
    
    Contact Us

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support