上篇:


收集指标并监控应用

在可观察性里,指标是最能够从多方面去反映系统运行状况的。因为指标有各种各样,我们可以通过多维数据分析的方式来对系统的各个维度进行一个测量和监控。

Istio 默认是通过自带的 Promethuse 和 Grafana 组件来完成指标的收集和展示,但是监控系统这样的基础工具,通常在每个公司的生产环境上都是必备的,所以如果使用 Istio 自带的组件就重复了。

因此把现有的监控系统和 Istio 整合在一起是最好的解决方案。所以本小节就演示下用现有的监控系统和 Istio 进行一个指标收集方面的整合。

Istio 的指标接口

首先,我们需要了解 Istio 是怎么把它的指标暴露出来的。它主要提供了以下两个指标接口:

  • /metrics:提供 Istio 自身运行状况的指标信息
  • /stats/prometheus:Envoy 提供的接口,可获取网络流量相关的指标
    Service Mesh - Istio实战篇(下)

我们可以请求 /stats/prometheus 接口查看它提供的指标数据:

$ kubectl exec -it -n demo ${sleep_pod_name} -c sleep -- curl http://httpbin.demo:15090/stats/prometheus

istiod 服务的 /metrics 接口暴露了控制平面的一些指标,我们可以通过如下方式获取到:

$ kubectl exec -it -n demo ${sleep_pod_name} -c sleep -- curl http://istiod.istio-system:15014/metrics

Prometheus 配置方式

Service Mesh - Istio实战篇(下)

  • 静态配置局限性比较大,不能很好的适应变化,所以一般都是使用动态配置的方式

支撑动态配置的基础是 Prometheus 的服务发现机制:

  • 服务发现机制可以保证 Prometheus 能够通过服务暴露出来的接口来找到这