tencent cloud

Feedback

Custom Integration with CVM

Last updated: 2022-10-11 16:32:05

    This document describes how to integrate CVM with TMP.

    Purchasing a TMP Instance

    Note:

    The purchased TMP instance must be in the same VPC as the monitored CVM instance for network connectivity.

    1. Log in to the TMP console and click Create to purchase a TMP instance.
    2. On the purchase page, select the target instance specification and network. Make sure that the TMP and CVM instances have the same VPC IP range so that data can be collected. Select the instance specification based on your reported data volume.
    3. Click Buy Now and make the payment.

    Integrating CVM Basic Metrics

    1. Download and install Node Exporter.
      Download and install Node Exporter (used to collect basic metric data) in the target CVM instance. Click here or run the following command for download:
      wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz && tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
      

    The file directory is as follows:

    2. Run Node Exporter to collect basic monitoring data.

    1. Go to the target folder and run Node Exporter.
      cd node_exporter-1.3.1.linux-amd64
      ./node_exporter
      

    If the following result is displayed, basic monitoring data has been collected successfully.

    2. Run the following command to expose the basic monitoring data to port 9100:

    curl 127.0.0.1:9100/metrics
    

    You can see the following metric monitoring data that is exposed after the command is executed.

    3. Add a scrape task.
    Log in to the TMP console, select Integration Center > CVM, and configure the information in Task Configuration as prompted.
    Below is a sample configuration of a scrape task:

    job_name: example-job-name
    metrics_path: /metrics
    cvm_sd_configs:
    - region: ap-guangzhou
     ports:
     - 9100
     filters:         
     - name: tag: Sample tag key
       values: 
       - Sample tag value
    relabel_configs: 
    - source_labels: [__meta_cvm_instance_state]
     regex: RUNNING
     action: keep
    - regex: __meta_cvm_tag_(.*)
     replacement: $1
     action: labelmap
    - source_labels: [__meta_cvm_region]
     target_label: region
     action: replace
    
    1. Check whether data is reported successfully.
      Log in to the TMP console and click the Grafana icon to enter Grafana.
      Search for {job="cvm_node_exporter"} in Explore to see whether there is data, and if so, data is reported successfully.
    2. Configure the dashboard page: Every product has some existing JSON files that can be directly imported into the dashboard.
    3. Download a dashboard file: Go to the Dashboard page, search for node_exporter, and select the latest dashboard for download.

      ii. Import a JSON file into the dashboard: Log in to the TMP console, select Basic Info > Grafana Address to enter Grafana. In the Grafana console, select Create > Import and upload the dashboard file in Upload JSON file.

    Integrating CVM Metrics at the Business Layer

    Prometheus provides four metric types for different monitoring scenarios: Counter, Gauge, Histogram, and Summary. The Prometheus community provides SDKs for multiple programing languages, which are basically similar in usage and mainly differ in the syntax. The following uses Go as an example to describe how to report custom monitoring metrics. For detailed directions of other metric types, see Custom Monitoring.

    Counter

    A metric in Counter type increases monotonically and will be reset after service restart. You can use counters to monitor the numbers of requests, exceptions, user logins, orders, etc.

    1. You can use a counter to monitor the number of orders as follows:
      package order
      import (
      "github.com/prometheus/client_golang/prometheus"
      "github.com/prometheus/client_golang/prometheus/promauto"
      )
      // Define the counter object to be monitored
      var (
      opsProcessed = promauto.NewCounterVec(prometheus.CounterOpts{
          Name: "order_service_processed_orders_total",
          Help: "The total number of processed orders",
      }, []string{"status"}) // Processing status
      )
      // Process the order
      func makeOrder() {
      opsProcessed.WithLabelValues("success").Inc() // Success
      // opsProcessed.WithLabelValues("fail").Inc() // Failure
       // Order placement business logic
      }
      

    For example, you can use the rate() function to get the order increase rate:

    rate(order_service_processed_orders_total[5m])
    
    1. Expose Prometheus metrics:
      Use promhttp.Handler() to expose the metric tracking data to the HTTP service.
      package main
      import (
      "net/http"
       "github.com/prometheus/client_golang/prometheus/promhttp"
      )
      func main() {
          // Business code
           // Expose Prometheus metrics in the HTTP service
          http.Handle("/metrics", promhttp.Handler())
           // Business code
      }
      
    1. Collect data:
      After the tracking of custom metrics for your business is completed and the application is released, you can use Prometheus to collect the monitoring metric data. After the collection is completed, wait a few minutes and then you can view the business metric monitoring data in Grafana integrated in TMP.
      img
    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