A Rule is a selector and a set of intentions to be executed when the selector evaluates to
Required. Match is an attribute based predicate. When Mixer receives a request it evaluates the match expression and executes all the associated
A few example match:
|repeated Action||Optional. The actions that will be executed when match evaluates to |
The following example instructs Mixer to invoke ‘handler.prometheus’ handler for all services and pass it the instance constructed using the
RequestCount metric instance.
apiVersion: "config.istio.io/v1alpha2" kind: rule metadata: name: promcount namespace: istio-system spec: - match: destination.service == "*" actions: - handler: handler.prometheus instances: - RequestCount.metric
kind: CustomResourceDefinition apiVersion: apiextensions.k8s.io/v1beta1 metadata: name: rules.config.istio.io labels: package: istio.io.mixer istio: core spec: group: config.istio.io names: kind: rule plural: rules singular: rule scope: Namespaced version: v1alpha2
Action describes which Handler to invoke and what data to pass to it for processing.
|string||Required. Fully qualified name of the handler to invoke. Must match the |
|repeated string||Required. Each value must match the fully qualified name of the Instances. Referenced instances are evaluated by resolving the attributes/literals for all the fields. The constructed objects are then passed to the |
The following example instructs Mixer to invoke the
handler.prometheus handler and pass it the instance constructed using the
RequestCount metric instance.
handler: handler.prometheus instances: - RequestCount.metric
Handler allows the operator to configure a specific adapter implementation.
In the following example we define a
prometheus handler using the Mixer’s prepackaged prometheus adapter. Here, we define how the handler should generate prometheus metrics from the metric instances provided by Mixer.
apiVersion: "config.istio.io/v1alpha2" kind: prometheus metadata: name: handler namespace: istio-system spec: metrics: - name: request_count instance_name: RequestCount.metric.istio-system kind: COUNTER label_names: - source_service - source_version - destination_service - destination_version - response_code
A Instance tells Mixer how to create values for particular template.
Instance is defined by the operator. Instance is defined relative to a known template. Their purpose is to tell Mixer how to use attributes or literals to produce values for the specified template at runtime.
The following example instructs Mixer to construct an instance associated with metric template. It provides a mapping from the template’s fields to expressions. Instances produced with this instance configuration can be referenced by Actions using name
apiVersion: "config.istio.io/v1alpha2" kind: metric metadata: name: RequestCount 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"'