上报源说明-Prometheus

Prometheus是一个开源的系统监控和报警工具包,服务商通过模板或手动创建一个Prometheus实例,计算巢会通过Prometheus实例依据计量项调用不同的PromQL语句执行,将获取的返回值作为上报数据值推送至云市场。

使用说明

  • 推送频次:1次/小时。

  • 服务类型:全托管服务。

  • 适用场景:ECS部署与ACK部署场景。

  • 支持计量项:Unit、Memory、VirtualCpu、NetworkIn、NetworkOut。

    计量项说明

    • VirtualCpu:虚拟CPU核数。

      -Unit: 计量单位--个。

      -Memory: 内存(GB)。

    • NetworkIn:下行使用流量(Bit)。

    • NetworkOut:上行使用流量(Bit)。

    不同的计量项采集需执行不同的PromQL语句,请参见PromQL语句

操作步骤

开启Prometheus上报,需要创建Prometheus实例以及在计算巢中配置计量项上报源为Prometheus。

步骤一:创建Prometheus实例

需要创建Prometheus实例,计算巢才可通过此实例采集数据,计算巢支持ECS与ACK部署场景。

ACK场景

新建ACK

开启Prometheus组件,在模板Resources中添加资源ALIYUN::CS::ManagedKubernetesCluster中的Addons参数Name:arms-prometheus

ManagedKubernetesCluster:
  Type: ALIYUN::CS::ManagedKubernetesCluster
  Properties:
    ……
    Addons:
      - Name: arms-prometheus
    ……

已有ACK

开启Prometheus组件。

  1. 登录容器服务Kubernetes版ACK控制台

  2. 进入集群详情页并单击左侧运维管理

  3. 单击Prometheus监控,并单击开始安装

    image

ECS场景

新建VPC

新建VPC场景需要同步新建Prometheus实例。模板中需要创建资源ALIYUN::ARMS::EnvironmentALIYUN::ARMS::AddonReleaseALIYUN::ARMS::EnvironmentFeature

Resources:
  VPC: 	 // 新建的VPC
    ……
  Environment:
    Type: ALIYUN::ARMS::Environment
    Properties:
      ManagedType: agent-exporter
      EnvironmentSubType: ECS
      EnvironmentName:
        Ref: ALIYUN::StackName
      BindResourceId:
        Ref: Vpc
      EnvironmentType: ECS
  AddonRelease:
    DependsOn: Environment
    Type: ALIYUN::ARMS::AddonRelease
    Properties:
      EnvironmentId:
        Ref: Environment
      Name: ecs-node-exporter
      AddonVersion: 1.6.1
      Values: '{"install":{"mode":"auto-install","processExporter":{"enable":true},"listenPort":9100},"discoverMode":"none","collectTextFile":"","scrapeInterval":"15","enableSecurityGroupInjection":true,"metricTags":"serviceInstanceId"}'
  EnvironmentFeature:
    DependsOn: AddonRelease
    Type: ALIYUN::ARMS::EnvironmentFeature
    Properties:
      EnvironmentId:
        Ref: Environment
      FeatureVersion: 1.1.17
      FeatureName: metric-agent

已有VPC

已有VPC场景,除了在计算巢中配置VPC参数映射外,还需要手动创建Prometheus实例。

  1. 前往ARMS监控,在左侧导航栏中单击接入中心并选择主机监控

    image

  2. 选择已有的VPC()。

    说明

    与计算巢参数映射填写VPC一致。具体内容,请参见配置参数映射

    image

  1. 在配置信息部分,填写接入名称,主机服务发现方式选择无条件,自定义ECS Tag注入写入serviceInstanceId,单击确定即可创建完成。

    image

步骤二:配置上报源

  1. 配置计量项

    说明

    对于Unit计量项,可以选择平均Pod数(ACK场景)或自定义指标(ECS/ACK场景)中的一种指标。若选择自定义指标,则需要输入自定义的PromQL语句,计算巢将读取此语句,并替换namespace/serviceInstancename收集计量数据,具体请参见PromQL语句,请确保自定义语句的准确性。

    1. 登录计算巢控制台

    2. 前往服务详情,单击售卖配置

    3. 计量项配置区块单击修改上报方式,对需要开启Prometheus的计量项区块中单击修改上报方式

    4. 在弹框中选择计算巢上报,并在上报源选择Proemtehus

      image

  2. 绑定计量项

    1. 返回售卖配置页面。

    2. 计量项绑定区块单击编辑,绑定需要上报的计量项。

    image

PromQL语句

ACK场景计量项对应PromQL语句

不同的计量项采集需执行不同的PromQL语句,计算巢执行完成、获取指标值后将会适配云市场上报单位。

语句中Namespace参数值计算巢将会依据不同服务实例替换,下方语句示例默认为default。默认情况下,Namespace为服务实例名称,若服务商需要指定可采用如下方式:

已有ACK场景

若需指定Namespace,需在资源ALIYUN::CS::ClusterApplication - DefaultNamespace中指定,如下指定Namespacedefault

ClusterApplication:
  Type: ALIYUN::CS::ClusterApplication
  Properties:
    ……
    DefaultNamespace: default
    ……

新建ACK场景

若需指定Namespace,需在资源MODULE::ACS::ComputeNest::FluxOciHelmDeploy - Namespace中指定为default

WordpressComputenestHelmApplication:
  Type: MODULE::ACS::ComputeNest::FluxOciHelmDeploy
  Version: v1
  Properties:
    ……
    Namespace: default
    ……

Unit - 平均Pod数

avg_over_time(count(kube_pod_info{namespace="default"})[1h:1m])

PromQL单位:个。

云市场单位:个。

Unit - 自定义指标

选择自定义指标且Namespace为服务实例名称(ALIYUN::StackName),计算巢将会自动替换,示例如下:

avg_over_time(count(kube_pod_info{namespace="ALIYUN::StackName"})[1h:1m])

Memory - 平均内存

avg_over_time(sum(container_memory_working_set_bytes{namespace=~"default"}) [1h:10s])

PromQL单位:bytes。

云市场单位:GB(PromQL返回值/1024/1024/1024)。由于云市场必须为整数,因此计算巢上报时会进行四舍五入处理。

VirtualCpu - 平均虚拟CPU

avg_over_time(sum(rate(container_cpu_usage_seconds_total{namespace=~"arms-prom"}[2m]))[1h:10s])

PromQL单位:核数。

云市场单位:核数。

NetworkIn - 流入总流量

sum by(namespace) (increase(container_network_receive_bytes_total{namespace="default", pod_name!=\"\"}[1h]))

PromQL单位:bytes。

云市场单位:bits(PromQL返回值 * 8)。

NetworkOut - 流出总流量

sum by(namespace) (increase(container_network_transmit_bytes_total{namespace="default", pod_name!=\"\"}[1h]))

PromQL单位:bytes。

云市场单位:bits(PromQL返回值 * 8)。

ECS场景计量项对应PromQL语句

Unit - 自定义指标

服务实例ID需填写伪参数:ALIYUN::ServiceInstanceId

avg_over_time(node_memory_MemTotal_bytes{serviceInstanceId="ALIYUN::ServiceInstanceId"}[1h])

Memory - 平均内存

avg_over_time(node_memory_MemTotal_bytes{serviceInstanceId="si-xxx"}[1h])

PromQL单位:bytes。

云市场单位:GB(PromQL返回值/1024/1024/1024)。由于云市场必须为整数,因此计算巢上报时会进行四舍五入处理。

VirtualCpu - 平均虚拟CPU

avg_over_time(count(count(node_cpu_seconds_total{serviceInstanceId="si-xxx"}) by (cpu))[1h:])

PromQL单位:核数。

云市场单位:核数。

NetworkIn - 流入总流量

increase(node_network_receive_bytes_total{serviceInstanceId="si-xxx"}[1h])

PromQL单位:bytes。

云市场单位:bits(PromQL返回值 * 8)。

NetworkOut - 流出总流量

increase(node_network_transmit_bytes_total{serviceInstanceId="si-xxx"}[1h])

PromQL单位:bytes。

云市场单位:bits(PromQL返回值 * 8)。