指标采集配置
开启 Prometheus 的统计数据收集功能,将采集到的监控指标发送到 Prometheus 中,以便进行存储和分析。服务网格 ASM 集成了 ARMS Prometheus 功能,可以实现对服务网格的监控。
Prometheus 采集间隔会对指标收集开销产生重大影响,间隔越长,抓取的数据点就越少,从而减少处理、存储和计算开销。当前的默认配置为 15s,对于生产场景来说可能过于频繁。请根据实际需要在 Prometheus 侧进行调整。
如果使用的是 ARMS Prometheus,请到 ARMS 控制台中的设置页中进行配置,查看文档说明。
直方图关联的指标(包括 istio_request_duration_milliseconds_bucket、istio_request_bytes_bucket、istio_response_bytes_bucket)通常比较密集,开销较大,为了避免这些自定义指标继续产生费用,您可以废弃这些自定义指标。如果使用的是 ARMS Prometheus,请到 ARMS 控制台中的指标页中进行配置。
同时,也支持在 ASM 集成自建 Prometheus 实现网格监控。
通过 Grafana 可以查看对应的仪表盘,类似如下:
合并 Istio 与应用的监控指标
已有 Prometheus 监控端点的应用服务,通过启用合并 Istio 与应用的监控指标功能,可以借助网格代理输出原有业务指标。启用合并 Istio 与应用的监控指标功能后,服务网格会将应用程序指标合并到 Istio 指标中,相对应的 prometheus.io 注解会被加入到所有数据面 Pod 上,以启用 Prometheus 的指标抓取能力。如果这些注解已经存在,就会被覆盖。网格代理将应用指标和 Istio 指标进行合并,Prometheus 可以从 :15020/stats/prometheus 端点拉取合并后的指标。
网格拓扑展示
网格拓扑是一个服务网格可观测性工具,提供查看相关服务与配置的可视化界面。ASM 支持内置网格拓扑,类似如下。
服务等级目标 SLO
服务等级指标 SLI(Service Level Indicator)是衡量服务健康状况的指标。SLO 是指服务等级的目标值或范围值,由一个或多个服务等级指标 SLI 组成。
SLO 提供了一种形式化的方式来描述、衡量和监控微服务应用程序的性能、质量和可靠性。SLO 为应用开发和平台团队、运维团队提供了一个共享的质量基准,可作为衡量服务水平质量以及持续改进的参考。使用 SLI 组合定义的 SLO 能够帮助团队以更精确的方式描述服务健康状况。
SLO 示例如下:
- 每分钟平均 QPS > 100k/s
- 99% 访问延迟 < 500ms
- 99% 每分钟带宽 > 200 MB/s
阿里云服务网格 ASM 提供了开箱即用的基于服务等级目标 SLO(Service Level Objectives)的监控和告警能力,能够监控应用服务之间调用的延迟和错误率特征等。
ASM 支持的 SLI 类型如下:
- 服务可用性:服务成功响应的时间比例,对应的 SLI 插件类型为 availability。HTTP 响应码为 429 或以 5XX(以 5 开头的状态码)会被判断为不可用。
- 延迟时间:服务返回请求的响应所需的时间(单位为毫秒),对应的 SLI 插件类型为 lantency。您可自定义延迟上限,高于上限的响应会被判断为不合格。
阿里云服务网格 ASM 提供了定义 SLO 配置的 UI 界面,如下所示:
使用 ASM 定义应用服务级 SLO,可以自动生成 Prometheus 规则。将生成的规则导入 Prometheus 中之后可以执行 SLO。在 Prometheus 框架中,由 AlertManager 组件负责收集 Prometheus Server 产生的告警信息,并根据您的配置发送给各个接收者。当触发告警时,在 Alertmanager 页面,如下图所示,可以看到自定义告警信息采集成功。