使用Istio Mixer和Istio sidecar获取指标和日志,并在不同的服务间进行追踪
1.收集指标:配置Mixer,收集Bookinfo应用中所有服务的系列指标
从istio属性中生成instance(这里是指标值和日志条目)
# Configuration for metric instances
apiVersion: config.istio.io/v1alpha2
kind: instance
metadata:
name: doublerequestcount
namespace: istio-system
spec:
compiledTemplate: metric
params:
value: "2" # count each request twice
dimensions:
reporter: conditional((context.reporter.kind | "inbound") == "outbound", "client", "server")
source: source.workload.name | "unknown"
destination: destination.workload.name | "unknown"
message: '"twice the fun!"'
monitored_resource_type: '"UNSPECIFIED"'
提示:指标来自于Envoy汇报的属性
创建handler(配置Mixer适配器),用来处理生成的instance
# Configuration for a Prometheus handler
apiVersion: config.istio.io/v1alpha2
kind: handler
metadata:
name: doublehandler
namespace: istio-system
spec:
compiledAdapter: prometheus
params:
metrics:
- name: double_request_count # Prometheus metric name
instance_name: doublerequestcount.instance.istio-system # Mixer instance name (fully-qualified)
kind: COUNTER
label_names:
- reporter
- source
- destination
- message
reporter、source、destination、message将转化为汇报到Prometheus中数据的key
instance_name必须为全限定性名称:名称.类型.命名空间,如oublerequestcount.instance.istio-system
根据一系列的rule,把instance传递给handler
# Rule to send metric instances to a Prometheus handler
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: doubleprom
namespace: istio-system
spec:
actions:
- handler: doublehandler
instances: [ doublerequestcount ]
kubectl get ingress -n istio-system
kubectl get ingress -n istio-system
2.查询指标:安装Prometheus插件,用来收集指标,并在Prometheus服务中查询istio指标
3.分布式追踪:这个任务会使用Istio来对应用中请求的流动路径进行追踪
jaeger
zipkin
LightStep
4.使用Istio Dashboard:安装Grafana插件,这一插件中带有一个预配置DashBoard,可以用来对服务网格中的流量进行监控