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

简介: 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中基于该维度查看特定用户的各种统计信息。

目录
相关文章
|
10月前
|
负载均衡 NoSQL Redis
不增加 GPU,首 Token 延迟下降50%|LLM 服务负载均衡的新实践
针对LLM服务的特点,Higress AI网关以插件形式提供了面向LLM服务的负载均衡算法,包括全局最小请求数负载均衡、前缀匹配负载均衡以及GPU感知负载均衡,能够在不增加硬件成本的前提下,提升系统的吞吐能力、降低响应延迟,并实现更公平、高效的任务调度。
1005 136
|
负载均衡 Kubernetes Java
MSE-Nacos测评
MSE-Nacos测评
884 0
|
Prometheus 监控 Cloud Native
hyperf| hyperf/metric 上手指南
这期又开始聊微服务的基础设施之一: 实时监控. 更准确的说法, 基于 prometheus 的实时监控. 关于技术选型这里就不多啰嗦啦, 很多时候「从众」或者「用脚投票」往往是最有效的
1294 0
|
8月前
|
人工智能 运维 Serverless
函数计算 × MSE Nacos : 轻松托管你的 MCP Server
本文将通过一个具体案例,演示如何基于 MCP Python SDK 开发一个标准的 MCP Server,并将其部署至函数计算。在不修改任何业务代码的前提下,通过控制台简单配置,即可实现该服务自动注册至 MSE Nacos 企业版,并支持后续的动态更新与统一管理。
883 86
|
24天前
|
存储 数据采集 SQL
数据治理是什么?数据治理怎么做?
本文直击企业AI落地困局——数据底子薄、治理缺方法。提出“理、聚、管、治、用”五步法:从数据盘点分类、打破孤岛汇聚,到标准管控、清洗分层治理,最终实现共享服务与业务赋能。实操性强,助企业夯实AI根基。
|
9月前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
3912 84
2025年阿里云域名备案流程(新手图文详细流程)
|
6月前
|
存储 数据管理 BI
什么是元数据?企业该如何进行元数据管理?
在数据驱动时代,元数据是描述数据的“数据”,涵盖业务、技术和管理信息。它能解决指标口径混乱、数据可信度低、变更影响难追溯等问题,是实现数据资产化、提升协作效率与合规水平的关键基础。
|
5月前
|
数据采集 人工智能 物联网
告别“炼丹”焦虑!4种大模型微调技术,总有一款适合你
本文系统解析大模型微调四大技术:全量微调、冻结微调、LoRA与QLoRA,结合原理、实战代码与选型指南,帮助开发者低成本打造专属AI助手,提升业务场景下的模型表现。
1707 14
|
6月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
Nacos配置中心通过集中化管理微服务配置,实现动态热更新与环境隔离,避免频繁重启服务。借助bootstrap.yml优先加载配置,支持@RefreshScope热刷新、@ConfigurationProperties绑定,并实现多环境共享及优先级控制,结合Nginx搭建高可用集群,提升系统稳定性与可维护性。
317 0
|
人工智能 运维 安全
Higress 开源 Remote MCP Server 托管方案,并将上线 MCP 市场
MCP(Model Context Protocol)正从事实标准迈向行业标准,OpenAI与Anthropic的推动使其生态快速发展。Higress作为AI原生API网关,提供开源Remote MCP Server托管方案,解决认证授权、服务可靠性等挑战,支持协议转换与扩展。其分层架构和Wasm插件机制助力企业灵活部署,即将上线的MCP市场将降低开发者成本,促进生态共建,推动AI助手智能化体验升级。
1148 2