本文介绍如何使用阿里云Prometheus监控服务实现对腾讯云云资源的监控。

前提条件

背景信息

利用开源的腾讯云监控Exporter(qcloud exporter)可以将腾讯云监控支持的产品监控指标自动批量导出为Prometheus格式,使用Prometheus拉取qcloud exporter指标即可实现对腾讯云资源的监控。

腾讯云云监控(Cloud Monitor,简称CM)是一项可对腾讯云云资源实时监控和告警的服务,为用户提供统一监控云服务器、云数据库等所有云产品的平台。qcloud exporter是Prometheus Third-party exporters一种实现,当前支持的腾讯云资源列表如下:

产品命名空间支持的指标
MongoDBQCE/CMONGO指标详情
CDBQCE/CDB指标详情
Redis标准版QCE/REDIS暂无指标详情说明
Redis集群版QCE/REDIS_CLUSTER暂无指标详情说明
Redis内存版监控指标QCE/REDIS_MEM指标详情
CVMQCE/CVM指标详情
COSQCE/COS指标详情
CDNQCE/CDN指标详情
CLB(公网)QCE/LB_PUBLIC指标详情
CLB(7层)QCE/LOADBALANCE指标详情
NATQCE/NAT_GATEWAY指标详情
物理专线QCE/DC指标详情
专用通道QCE/DCX指标详情
云硬盘QCE/CBS指标详情
SqlServerQCE/SQLSERVER指标详情
MariaDBQCE/MARIADB指标详情
ElasticsearchQCE/CES指标详情
CMQ队列服务QCE/CMQ指标详情
CMQ主题订阅QCE/CMQTOPIC指标详情
PostgreSQLQCE/POSTGRES指标详情
CKafka实例QCE/CKAFKA指标详情
MemcachedQCE/MEMCACHED暂无指标详情说明
LighthouseQCE/LIGHTHOUSE暂无指标详情说明
分布式数据库TDSQL MySQL实例QCE/TDMYSQL指标详情
弹性公网IPQCE/LB指标详情

操作流程

通过阿里云Prometheus配置监控腾讯云的操作流程如下图所示。ert

步骤一:部署qcloud exporter

  1. 构造镜像。
    git clone https://github.com/tencentyun/tencentcloud-exporter.git
    make build
  2. 定义产品实例配置。
    • 配置云API的credential认证信息
    • 配置产品products指标、实例导出信息

    例如,若您需要导出云服务器CVM所有指标和实例信息,您可以执行如下代码段。

    credential:
      access_key: "access_key"  #云API的SecretId
      secret_key: "secret_key"  #云API的SecretKey
      region: "ap-nanjing"      #实例所在区域信息
    
    rate_limit: 15              #云监控拉数据接口最大限制, 20/秒, 1200/分钟, https://cloud.tencent.com/document/product/248/31014
    
    products:
      - namespace: QCE/CVM      #指标详情: https://cloud.tencent.com/document/product/248/6843
        all_metrics: true       #导出支持的所有指标
        all_instances: true     #导出region下的所有实例
        #only_include_metrics: []
        #only_include_instances: [ins-xxxxxxxx]
        extra_labels: [InstanceId, InstanceName] #将实例的字段作为指标的lables导出
        #statistics_types: [last]
        #period_seconds: 60
        #metric_name_type: 2
    说明 更多qcloud.yaml配置详情,请参见 tencentcloud-exporter
  3. 部署qcloud exporter。
    将以上配置文件构建到Docker镜像并将镜像上传到镜像仓库,如DockerHub、阿里云容器镜像服务ACR
    1. 登录容器服务管理控制台
    2. 在左侧导航栏中,单击集群
    3. 集群列表页面,单击目标集群右侧操作应用管理
    4. 创建容器组。
      1. 在左侧导航栏,选择工作负载 > 无状态
      2. 无状态页面,单击使用YAML创建资源
      3. 创建页面的模板代码框输入以下内容,然后单击创建
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          generation: 5
          labels:
            app: qcloud-exporter-demo
          name: qcloud-exporter-demo
          namespace: default
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: qcloud-exporter-demo
          template:
            metadata:
              labels:
                app: qcloud-exporter-demo
            spec:
              containers:
                - args:
                    - '--config.file=/usr/local/etc/qcloud-cvm-product.yml'
                  image: 'registry.cn-hangzhou.aliyuncs.com/fuling/qcloud-exporter:v0.1'
                  imagePullPolicy: Always
                  name: qcloud-exporter
                  ports:
                    - containerPort: 9123
                      name: web-normal
                      protocol: TCP
        无状态页面会显示创建的容器组。rfv
    5. 创建服务。
      1. 在左侧导航栏,选择服务与路由 > 服务
      2. 服务页面,单击使用YAML创建资源
      3. 创建页面的模板代码框输入以下内容,然后单击创建
        apiVersion: v1
        kind: Service
        metadata:
          labels:
            app: qcloud-exporter-demo
          name: qcloud-exporter-demo-svc
          namespace: default
        spec:
          ports:
            - name: qcloud-exporter-metrics
              port: 9123
              protocol: TCP
              targetPort: 9123
          selector:
            app: qcloud-exporter-demo
        服务页面会显示创建的服务。enj

步骤二:配置服务发现

配置阿里云Prometheus监控的服务发现以接收qcloud exporter数据的操作步骤如下:
重要 请确认阿里云容器服务K8s集群已接入Prometheus监控。具体操作,请参见Prometheus实例 for 容器服务
  1. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表
  3. Prometheus监控页面的顶部菜单栏,选择K8s集群所在的地域,单击目标实例名称。
  4. 在左侧导航树单击服务发现,然后单击配置页签。
  5. 配置页面单击ServiceMonitor页签,然后单击添加ServiceMonitor,在弹出的添加ServiceMonitor对话框中输入以下内容,单击确定
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: qcloud-exporter-sm
      namespace: default
    spec:
      endpoints:
      - interval: 60s
        path: /metrics
        port: qcloud-exporter-metrics
        scrapeTimeout: 60s
      namespaceSelector:
        any: true
      selector:
        matchLabels:
          app: qcloud-exporter-demo
    ServiceMonitor页面会显示配置的服务发现。wert

步骤三:配置Grafana大盘

配置Grafana大盘以展示监控数据的操作步骤如下:

  1. 打开Grafana大盘概览页
  2. 在左侧导航栏选择+ > Dashboard
  3. Dashboard页面单击+Add new panel,在Edit Panel页面的Query区域的下拉列表中选择Prometheus数据源,然后在A折叠面板的Metrics中填写PromQL,然后在页面右侧Panel页签中设置Panel title等配置项,查看您所需要的监控数据信息。如下图所示展示了CPU使用率的监控数据详情。
    weu
  4. 参见上一步骤,继续添加Panel、Row、Variables等,然后设置大盘名称,单击Save Dashboard
    erty
    配置完毕后的Grafana大盘如下图所示。ert

步骤四:创建Prometheus监控报警

  1. 登录ARMS控制台
  2. 在左侧导航栏选择Prometheus监控 > Prometheus实例列表
  3. Prometheus监控页面的顶部菜单栏,选择K8s集群所在的地域,单击目标K8s集群的名称。
  4. 在左侧导航栏,选择报警配置
  5. 在报警配置页面右上角,单击创建报警
  6. 创建报警面板,执行以下操作:
    1. 可选:告警模板下拉列表,选择模板。
    2. 规则名称文本框,输入规则名称,例如:网络接收压力报警。
    3. 告警表达式文本框,输入告警表达式。例如:qce_cvm_cpuusage_avg >= 80
    4. 持续时间文本框,输入持续时间N,当连续N分钟满足告警条件的时候才触发告警。例如:1分钟,当告警条件连续1分钟都满足时才会发送告警。
    5. 告警消息文本框,输入告警消息。
    6. 可选:高级配置标签区域,单击创建标签可以设置报警标签,设置的标签可用作分派规则的选项。
    7. 可选:高级配置注释区域,单击创建注释,设置message,设置 {{变量名}}告警信息。设置完成后的格式为:message:{{变量名}}告警信息,例如:message:{{$labels.pod_name}}重启

      您可以自定义变量名,也可以选择已有的标签作为变量名。已有的标签包括:

      • 报警规则表达式指标中携带的标签。
      • 通过报警规则创建的标签。
    8. 通知策略下拉列表,选择通知策略。
      如何创建通知策略,请参见通知策略
    9. 单击确定
    报警配置页面显示创建的报警。weri