8.3.1 metric模板

metric模板用来描述运行时指标数据,发送给监控后端进行处理。如下所示:


apiVersion: "config.istio.io/v1alpha2"
kind: metric
metadata:
  name: requestsize
  namespace: istio-system
spec:
  value: request.size | 0
  dimensions:
    source_service: source.service | "unknown"
    source_version: source.labels["version"] | "unknown"
    destination_service: destination.service | "unknown"
    destination_version: destination.labels["version"] | "unknown"
    response_code: response.code | 200
  monitored_resource_type: '"UNSPECIFIED"'

编写上述模板配置时,字段既可以设定为一个常量,也可以设定为一个表达式。如果字段的数据类型不是istio.policy.v1beta1.Value,那么表达式的类型必须和字段的数据类型相匹配。

以下是metric protobuffer的定义内容,从中可以看到metric定义的字段及数据类型:


package metric;

import "policy/v1beta1/type.proto";
import "mixer/adapter/model/v1beta1/extensions.proto";

option (istio.mixer.adapter.model.v1beta1.template_variety) = TEMPLATE_VARIETY_REPORT;

message Template {
  // 用于上报的指标数据值
  istio.policy.v1beta1.Value value = 1;

  // 要上报的特定指标的唯一标识符
  map<string, istio.policy.v1beta1.Value> dimensions = 2;

  // 可选字段。这是一个表达式,用来生成将要上报的指标的监控资源的类型。
  // 如果目标后端支持这一资源,则接受这一字段并对相应的资源进行处理。否则这一字段会被适配器忽略。
  string monitored_resource_type = 3;

  // 可选字段。一组用于生成上报该指标对应监控资源的表达式,这些表达式将用于生成受监控资源的维度
  // 如果指标后端系统支持这些受监控资源,则这些字段用于填充该资源。否则,适配器将忽略这些字段。
  map<string, istio.policy.v1beta1.Value> monitored_resource_dimensions = 4;
}