Mixer组件用于遥测数据收集和服务的访问权限控制。Mixer组件工作机制如图13-4所示。
图13-4 Mixer组件工作机制图(图片来源:Istio官方网站)
Mixer配置基于adapter和template:
·adapter:封装对后端组件的操作。内置的adapter及配置可以参考如下官方文档:https://istio.io/docs/reference/config/policy-and-telemetry/adapters/ 。
·template:定义传递给后端adapter组件的数据格式。内置的template及配置可以参考如下官方文档:https://istio.io/docs/reference/config/policy-and-telemetry/templates/ 。
Mixer配置模型包括如下参数:
·rule:用来绑定handler和instance,把instance定义的数据发送给指定的handler。
·handler:指定后端adapter。
·instances:指定传递给后端的template数据格式,可以指定多个。
配置示例如下:
1 apiVersion: config.istio.io/v1alpha2 2 kind: logentry 3 metadata: 4 name: newlog 5 namespace: istio-system 6 spec: 7 severity: '"info"' 8 timestamp: request.time 9 variables: 10 source: source.labels["app"] | source.workload.name | "unknown" 11 user: source.principal | "unknown" 12 destination: destination.labels["app"] | destination.service.name | "unknown" 13 response_code: response.code | 0 14 response_size: response.size | 0 15 latency: response.duration | "0ms" 16 monitored_resource_type: '"UNSPECIFIED"' 17 --- 18 apiVersion: config.istio.io/v1alpha2 19 kind: fluentd 20 metadata: 21 name: fluentdhandler 22 namespace: istio-system 23 spec: 24 address: "fluentd-es.logging:24224" 25 --- 26 apiVersion: config.istio.io/v1alpha2 27 kind: rule 28 metadata: 29 name: newlogtofluentd 30 namespace: istio-system 31 spec: 32 match: "true" 33 actions: 34 - handler: fluentdhandler.fluentd 35 instances: 36 - newlog.logentry
第1~16行定义的logentry是一个template,用于定义日志收集时的日志格式。
第18~24行定义的fluentd是一个用于存储日志到fluentd的adapter。
第26~36行定义的rule表示把logentry收集到的日志数据发送给fluentd来处理。