接下来介绍如何配置Istio,对网格内服务的遥测数据进行自动收集,并创建一个新的指标,当网格内的服务被调用时触发收集过程。假定Mixer使用的是默认配置(--conf igDefaultNamespace=istio-system),如果使用的是不同的值,需要根据实际情况对文中提及的配置和命令进行变更。配量步骤如下:
1)新建一个YAML文件,用来配置新的指标以及数据流,Istio将会进行自动生成和收集的工作。以文件名new_telemetry.yaml保存下面的代码:
# 指标 instance 的配置
apiVersion: "config.istio.io/v1alpha2"
kind: metric
metadata:
name: myrequestcount
namespace: istio-system
spec:
value: "1" # 每次请求计数加一
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"'
---
# prometheus handler 的配置
apiVersion: "config.istio.io/v1alpha2"
kind: prometheus
metadata:
name: myrequestcounthandler
namespace: istio-system
spec:
metrics:
- name: my_request_count # Prometheus 指标名称
instance_name: myrequestcount.metric.istio-system # Mixer Instance 名称(全限定名称)
kind: COUNTER
label_names:
- source_service
- source_version
- destination_service
- destination_version
- response_code
---
# 将指标 Instance 发送给 prometheus handler 的 rule 对象
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
name: myrequestcountrule
namespace: istio-system
spec:
actions:
- handler: myrequestcounthandler.prometheus
instances:
- myrequestcount.metric
---
2)把新配置推送给集群,如下所示:
$ kubectl create -f new_telemetry.yaml metric.config.istio.io/myrequestcount created prometheus.config.istio.io/myrequestcounthandler created rule.config.istio.io/requestcountrule created