规则指定何时使用特定实例调用特定处理程序。考虑一个示例,如果目标服务是service1,并且请求头中x-user对应特定值user1,你希望将requestduration度量值传递给prometheus处理程序,那么规则就需要如下定义:
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: promhttp
namespace: istio-system
spec:
match: destination.service == "service1.ns.svc.cluster.local" && request.headers
["x-user"] == "user1"
actions:
- handler: handler.prometheus
instances:
- requestduration.metric.istio-system
如上所示,一个规则包含了一个match谓词表达式以及谓词为true时要执行的操作列表。每一个操作需要指定一个处理程序以及要传递给该处理程序的实例列表。规则必须使用处理程序和实例的完全限定名称。如果规则、处理程序和实例都在同一命名空间中,则可以从完全限定名称中省略命名空间后缀,如上所示的handler.prometheus。