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来处理。