入口流量与三方中间件监控
监控入口流量、时延等信息
入口流量监控有多种方式,非侵入式的主要有 Service Mesh 和网关两类:
- 如果只需要监控总入口的流量吞吐和时延,或者并没有复杂的微服务调用链、不需要监控 service 之间的调用情况,可以使用网关来实现。
- 如果需要在微服务之间追踪查看调用,可以使用 Service Mesh 来实现。
Gateway 监控
OpenResty 是用 Lua 语言编写 nginx 插件的 Web 服务和动态网关框架。比如 K8s 的 ingress-nginx 就是 OpenResty 应用:https://github.com/kubernetes/ingress-nginx,也可以使用另一个网关应用插件 Kong:https://github.com/Kong/kong。
ingress-nginx 新版本已经集成了指标监控。ingress-nginx 的部署、监控启用和配置可以按照 GitHub 官网操作。这里贴一下效果图。

与代码一致:本仓库提供 Kong 的 ServiceMonitor(
install/kubernetes/prometheus/servicemonitor/kong-sm.yml)。
Service Mesh 监控
可以使用 istio 或 linkerd2 来实现。由于配置服务网格会添加 sidecar 容器到业务容器旁边,比较麻烦,所以这里只给一个 linkerd2 的监控效果图。

与代码一致:本仓库提供 istio 的 ServiceMonitor(
install/kubernetes/prometheus/servicemonitor/istio-sm.yml)和 istio 服务看板(install/kubernetes/prometheus/grafana/dashboard/istio-service.json)。
监控三方中间件(exporter)
习惯上将监控中间件、形成 metrics 接口的组件称作 exporter。官方支持了很多三方中间件的 exporter 组件:
https://prometheus.io/docs/instrumenting/exporters/
比如想监控 Kafka,可以直接在页面上跳转到 kafka exporter 的 GitHub。这些 exporter 仓库一般都提供了 Docker 版本,需要自己封装成 K8s 的 Deployment,并配置 K8s Service,为该 exporter 的 Service 打上 label,使用 ServiceMonitor 将监控添加到 Prometheus 中,并且将仓库中的 Grafana 看板配置到 Grafana 中。
