使用WASM插件扩展ASM中监控指标的维度信息

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: ASM提供多个内置监控指标及其维度,帮助用户了解应用运行状态。本文介绍如何通过WASM插件为ASM的监控指标添加自定义维度,如将请求头中的user-name解码后作为新维度加入istio_requests_total指标中,以实现更精细的监控与分析。

ASM内置多个监控指标以及丰富的指标维度来帮助您更好的了解应用的运行情况。本文介绍如何使用WASM插件为ASM中已有的监控指标新增自定义维度。

背景信息

ASM内置了多个默认的监控指标(比如:istio_requests_total、istio_request_duration_milliseconds等),并且这些监控指标都有默认的一些维度(比如:source_workload、destination_workload、response_code等)。您可以参考https://help.aliyun.com/zh/asm/user-guide/observability-settings#fcf66e001a00h来配置网格代理生成的监控指标。基于这些监控指标信息,您可以构建丰富的仪表盘以及一些告警规则。

如果默认的维度并不能满足您的需求,ASM提供了强大的扩展机制,您可以基于请求或响应信息自行编写处理逻辑,将处理后的结果添加到监控指标的维度中。这种方式有极高的自由度,您可以将任意信息添加到维度中。

示例说明

本文将演示如何使用WASM插件扩展监控指标的维度信息。

示例的请求如下:

# YXNtLXRlc3QtdXNlcgo=是"asm-test-user"进行base64编码后的结果
curl ${ASM网关IP}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="

本文将演示使用Rust开发WASM插件,将请求头中的user-name进行base64解码,然后将user-name作为一个维度添加到istio_requests_total指标中。

其他语言和Rust插件调用的API类似,如果你使用其他语言编写WASM插件,请自行查阅对应的SDK文档。

前提条件

步骤一:编写插件并将其应用至httpbin应用

该示例插件的示例代码:https://github.com/AliyunContainerService/asm-labs/tree/main/rust-add-metrics-tag,您可以自行下载查看。

插件编译及部署,请参考:https://help.aliyun.com/zh/asm/user-guide/developing-a-wasm-plugin-for-grid-agents-using-rust

这个插件中的主要步骤就是调用了一个SetProperty函数,将解析的结果设置为一个filter_state。

步骤二:修改可观测配置,输出自定义维度

进入对应ASM示例页面,选择左侧“可观测配置”,找到对应的“监控指标设置”,请分别为CLIENT和SERVER侧的REQUEST_COUNT指标添加自定义维度。点击“编辑维度”,按照下图所示进行配置:

image.png

确认配置后,点击提交。

该步骤会将WASM插件设置的filter_state添加到指标维度中。

步骤三:发起访问测试,并查看结果

测试命令:

curl ${ASM网关IP}:80/status/418 --header "user-name:YXNtLXRlc3QtdXNlcgo="
    -=[ teapot ]=-
       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`

访问完毕之后,使用对应ACK集群的kubeconfig,查看httpbin pod对应的prometheus指标。

kubectl exec deployments/httpbin -it -c istio-proxy -- curl localhost:15000/stats/prometheus | grep istio_requests_total
# TYPE istio_requests_total counter
istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",source_canonical_revision="latest",source_workload_namespace="default",source_principal="spiffe://cluster.local/ns/default/sa/sleep",source_app="sleep",source_version="unknown",source_cluster="xxxxxxxxxx",destination_workload="httpbin",destination_workload_namespace="default",destination_principal="spiffe://cluster.local/ns/default/sa/httpbin",destination_app="httpbin",destination_version="v1",destination_service="httpbin.default.svc.cluster.local",destination_canonical_service="httpbin",destination_canonical_revision="v1",destination_service_name="httpbin",destination_service_namespace="default",destination_cluster="xxxxxxxxxx",request_protocol="http",response_code="418",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls",user_name="asm-test-user"} 1

之后您可以在Prometheus中基于该维度查看特定用户的各种统计信息。

目录
相关文章
|
6月前
|
存储 JSON Prometheus
如何精简 Prometheus 的指标和存储占用
如何精简 Prometheus 的指标和存储占用
|
6月前
|
Prometheus 监控 Kubernetes
如何用 Prometheus Operator 监控 K8s 集群外服务?
如何用 Prometheus Operator 监控 K8s 集群外服务?
|
3月前
|
存储 Prometheus 监控
Prometheus 的扩展与集成
【8月更文第29天】Prometheus 是一款非常强大的监控系统,它不仅能够采集和存储时间序列数据,还提供了丰富的生态系统来扩展其功能。本文将介绍如何通过自定义 Exporters 和集成中间件(如 Thanos)来扩展 Prometheus 的能力。
53 0
|
4月前
|
测试技术 UED 存储
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
SLS Prometheus存储问题之在使用内置降采样时,SLS自动选择适配的指标库该如何解决
|
6月前
|
存储 Prometheus 监控
性能监控之国产时序库TDengine TDinsight dashboard 指标解析
【2月更文挑战第1天】性能监控之国产时序库TDengine TDinsight dashboard 指标解析
662 1
性能监控之国产时序库TDengine TDinsight dashboard 指标解析
|
6月前
|
Prometheus 监控 Kubernetes
在服务网格ASM中,如何实现限流防护的指标监控
阿里云服务网格ASM支持通过本地限流和全局限流两种方式对网格内服务以及网关实现流量限流防护。在使用限流防护的过程中,如何对限流的相关行为进行指标监控呢?本文主要介绍相关的实践示例。
|
缓存 前端开发 JavaScript
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
网站性能优化既离不开不断演进发展的技术,也离不开前人对技术优化的方法论和具体实践。如何通过观测云的RUM找到加载性能的瓶颈?
103 1
如何通过观测云的RUM找到前端加载的瓶颈--可观测性入门篇
|
运维 监控 微服务
在ASM中为应用服务启用SLO(1):服务等级目标SLO概览
服务等级目标 (SLO) 提供了一种形式化的方式来描述、衡量和监控微服务应用程序的性能、质量和可靠性。SLO 为应用开发和平台团队、运维团队提供了一个共享的质量基准,作为衡量服务水平质量以及持续改进的参考。SLO 由一个或多个服务等级指标 (SLI) 组成。使用 SLI 组合定义的 SLO 允许团队以更精确和相关的方式描述服务健康状况。 阿里云服务网格ASM提供了开箱即用的基于服务等级目标SLO的监控和告警能力,用于监控应用服务之间调用的延迟和错误率特征。
638 1
在ASM中为应用服务启用SLO(1):服务等级目标SLO概览
|
Prometheus 监控 Kubernetes
在ASM中为应用服务启用SLO(4):导入生成的规则到Prometheus中执行SLO
服务等级目标SLO可以用于衡量服务的水平。用户可以基于Prometheus指标手动定义SLO,但过程相对繁琐。ASM服务网格提供了生成SLO以及配套的告警规则的能力,能够通过自定义资源YAML配置的方式简化这一流程。本文将介绍如何将生成的规则导入到Prometheus中以及如何执行SLO。
312 0
在ASM中为应用服务启用SLO(4):导入生成的规则到Prometheus中执行SLO
|
Prometheus Cloud Native
在ASM中为应用服务启用SLO(2):服务网格中的SLO定义
阿里云服务网格ASM提供了生成服务等级目标SLO以及配套的告警规则的能力,能够通过自定义资源CRD配置的方式简化这一流程。本文将介绍对应的CRD具体字段内容含义。
386 0
在ASM中为应用服务启用SLO(2):服务网格中的SLO定义

热门文章

最新文章