当前位置: 首页 > article >正文

在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控

作者来自 Elastic Jessica Garson本文探讨如何使用 Elastic Observability、TypeScript 和 FastMCP 自动创建合成监控中的用户旅程journeys并演示该应用及其工作流程。Elastic Observability 中的 Synthetic Monitoring 允许你通过全球测试基础设施跟踪用户路径模拟完整的用户流程以衡量 Web 应用的影响。它还能从开发到生产阶段提供对网站性能、功能和可用性的全面洞察使你能够在问题影响客户之前发现并解决它们。Elastic Synthetic Monitoring 的核心能力之一是创建用户旅程这可以通过有代码或无代码的方式完成。系统提供 Synthetics agent这是一个 CLI 工具可以引导你创建 heartbeat 监控和用户旅程并将代码部署到 Elastic Observability。如果你使用代码来创建用户旅程本质上是在使用 Playwright并在其之上增加了一些配置使其更易于与 Elastic Observability 集成。要使用 TypeScript 自动创建用户旅程你可以基于 prompt 生成 Playwright 测试使用 WarpAI 辅助终端、Gemini 2.5 Pro 以及 MCP 来完成这一过程。该应用使用 Python 和 FastMCP 构建它对 synthetic agent 进行了封装使浏览器测试能够自动部署到 Elastic。本文将介绍该应用的工作原理、使用方法以及开发过程。完整代码可以在 GitHub 上获取。解决方案概览目前该方案在 Warp 中作为 MCP server 运行不过你也可以使用其他客户端例如 Claude Desktop 或 Cursor。在此基础上你会使用 FastMCP 创建一个 Python 脚本它允许你定义可以被 LLM 调用的函数。在 Warp 中你可以创建一个 JSON 配置文件用来指向你的 Python 脚本并传入你正在使用的所有环境变量。完成之后你需要切换到 agent mode并提出关于创建合成测试的问题或者直接调用 MCP 函数。在 LLM 选择方面有多种选项可以查看 Warp 的文档了解可用能力。之后你可以提出关于创建合成测试的问题或者直接调用目标 MCP 函数。以下三个函数可以使用diagnose_warp_mcp_config用于调试可能出现的环境变量配置问题。除非配置出现错误否则通常不需要使用。create_and_deploy_browser_test如果提供测试名称、测试 URL 和调度时间它会自动创建 Playwright 测试。这种方式基于模板而不是基于机器学习因此生成的测试结构通常比较一致。llm_create_and_deploy_test_from_prompt与 create_and_deploy_browser_test 类似但区别在于它使用 LLM 根据你提供的 prompt 生成测试。生成结果会反映你的描述。调用该函数时需要提供测试名称、URL、prompt 和调度时间。为什么将该方案设计为 MCP server这样做的原因是相比于单独的脚本或标准 CLI将其实现为 MCP server 可以让系统以更 “对话式” 的方式进行结构化交互。它使 LLM 能够生成动态的 Playwright 测试同时仍然保持一致的参数结构、环境变量以及响应格式从而保证准确性与可靠性。因此它形成了一种可靠的工作流可以与其他 agent 或开发工具进行组合使用。换句话说MCP 层将基于 LLM 的测试生成能力从 “一次性脚本” 提升为标准化、可复用的能力。要了解 MCP 的发展方向可以参考我们关于该主题的文章。实现考虑因素在构建类似方案时需要特别注意 token 的使用问题。该方案的早期版本生成合成测试大约需要 20 分钟并最终导致严重的速率限制rate-limiting问题。另一个开发过程中遇到的问题是如何在 “模板化 Playwright 脚本生成 ”和 “基于 prompt 的 LLM 生成” 之间取得平衡。一方面完全模板化的方式可以提高可靠性但生成结果容易显得机械、重复另一方面完全依赖 LLM 虽然更灵活但经常会生成无法运行的脚本或者依赖不存在的参数。最终版本尝试在两者之间折中使用模板结构作为基础同时通过调整 LLM 参数 temperature用于控制模型输出的随机性与创造性来增强生成多样性。在测试过程中还发现了一个失败的测试场景需要处理弹窗pop-up才能继续执行。在更复杂的场景中这类问题可能需要引入额外的领域知识才能构建完整可通过的 Playwright 测试。如何开始前置条件本项目使用 Python 3.12.1但任何高于 3.10 的 Python 版本均可使用。本应用使用 Elastic Observability 9.1.2但任何高于 8.10 的版本均可使用也支持 Elastic Cloud Serverless。你还需要一个 OpenAI API key 来使用该应用的 LLM 能力并将其配置为环境变量可在 OpenAI 开发者门户的 API keys 页面获取。步骤 1安装依赖并克隆仓库为了在本地运行该 MCP server你需要安装以下依赖pip install fastmcp openai npm install -g playwright elastic/synthetics你将使用 FastMCP 2.0 来创建 MCP server并使用 OpenAI 根据你提供的 prompt 生成测试。此外你还需要克隆该仓库以获取该 server 的本地副本。步骤 2在 Warp 中设置配置文件在 Warp 中你需要进入侧边栏中的 MCP servers然后点击 “add”。之后系统会提示你添加一个 JSON 配置文件其结构类似如下。请确保填入你自己的 Kibana URL更新正确的路径并包含你自己的密钥和 token。{ elastic-synthetics: { command: python, args: [elastic_synthetics_server.py], env: { PYTHONPATH: ., ELASTIC_KIBANA_URL: https://your-kibana-url.elastic-cloud.com, ELASTIC_API_KEY: your-api-key-here, ELASTIC_PROJECT_ID: mcp-synthetics-demo, ELASTIC_SPACE: default, ELASTIC_AUTO_PUSH: true, ELASTIC_USE_JAVASCRIPT: false, ELASTIC_INSTALL_DEPENDENCIES: true, OPENAI_API_KEY: sk-your-openai-key, LLM_MODEL: gpt-4o }, working_directory: /path/to/your/file, start_on_launch: true } }步骤 3提问或直接调用工具完成本地配置后你需要切换到 agent mode并选择你希望使用的 LLM。本篇博客选择 Gemini-Pro-2.5 的原因是它能提供更直接的回答而其他 LLM 往往会返回非常冗长的响应。要开始使用 MCP 工具你可以从 MCP server 发起一个请求其中包含测试名称、URL、prompt 以及 schedule。你也可以直接调用llm_create_and_deploy_test_from_prompt()程序会提示你输入相关的详细信息在 Kibana 中如果你点击 Applications并在 Synthetics 下选择 Monitors你应该可以看到你的监控任务列表。你也可以在 MCP 工具的响应中找到指向该监控的链接。内部发生了什么这个代码示例主要由三个函数组成它们是 MCP tools你可以从 MCP client 中调用包括 diagnose_warp_mcp_config、create_and_deploy_browser_test 和 llm_create_and_deploy_test_from_prompt。调试环境问题在构建该应用时环境变量加载过程中出现了多个问题因此需要创建一个 MCP 工具用于在出现错误时进行诊断调用。工具 diagnose_warp_mcp_config 通过 mcp.tool() 装饰器启动这使它可以被调用并显示在可用工具列表中。该工具用于排查 Elastic 相关环境变量的配置问题。首先它会加载环境变量并检查 Elastic 相关变量然后进行安全脱敏处理避免暴露敏感信息例如 API keys只显示前 8 个字符后面用 “...” 替代。该工具还会检查是否具备最基本的必要凭证Kibana URL 和 API Key以继续部署并输出一份报告提示用户需要修复的配置问题。mcp.tool() def diagnose_warp_mcp_config() - Dict[str, Any]: Diagnose Warp MCP environment configuration for Elastic Synthetics try: env_vars load_env_from_warp_mcp() # Check for required variables kibana_url env_vars.get(ELASTIC_KIBANA_URL) or env_vars.get(KIBANA_URL) api_key env_vars.get(ELASTIC_API_KEY) or env_vars.get(API_KEY) project_id env_vars.get(ELASTIC_PROJECT_ID) or env_vars.get(PROJECT_ID) space env_vars.get(ELASTIC_SPACE) or env_vars.get(SPACE, default) # Mask sensitive values for display masked_vars {} for key, value in env_vars.items(): if API_KEY in key or TOKEN in key: masked_vars[key] f{value[:8]}... if value and len(value) 8 else *** else: masked_vars[key] value deployment_ready bool(kibana_url and api_key) return safe_json_response({ status: success, environment_variables: masked_vars, required_check: { kibana_url: bool(kibana_url), api_key: bool(api_key), project_id: bool(project_id), space: bool(space) }, deployment_ready: deployment_ready, recommendations: [ Environment variables detected if env_vars else No environment variables found, Kibana URL configured if kibana_url else Missing ELASTIC_KIBANA_URL or KIBANA_URL, API Key configured if api_key else Missing ELASTIC_API_KEY or API_KEY, Ready for deployment if deployment_ready else Missing required credentials ] }) except Exception as e: return safe_json_response({ status: error, error: str(e), error_type: type(e).__name__ })基于模板创建合成测试在开发这个基于 prompt 生成测试的方案过程中过程并不总是顺利的。早期版本遇到了准确性问题、幻觉问题以及循环生成等情况。为了解决这些问题一个合理的下一步是先回到 “模板化测试”用来验证整个系统的基础机制例如测试是否可以成功运行并正确部署到 Elastic。该方案实现了自动化生成合成浏览器测试的完整流程定期检查网站是否正常运行并将测试部署到 Elastic Observability Synthetics。与 diagnose_warp_mcp_config 类似MCP 工具 create_and_deploy_browser_test 同样使用 mcp.tool() 装饰器并检查环境变量是否正确加载。随后它会生成一个基于模板的 TypeScript 测试文件并根据目标网站特性动态生成测试步骤包括访问网站、验证页面标题是否存在、检查页面加载性能、截图、验证页面内容可见性等最后将测试保存到 synthetic_tests 目录中。最终它封装 Elastic CLI 工具 elastic/synthetics将测试推送到 Kibana同时允许配置测试运行的地理位置、执行频率以及项目和 workspace 设置。完整代码可以在这里查看。基于 prompt 创建合成测试虽然基于模板生成浏览器测试是一个良好的起点但它显得较为固定和“模板化”。不过它为构建基于 LLM 的功能提供了一个很好的结构基础。MCP 工具 llm_create_and_deploy_test_from_prompt 首先会确保基础参数如 locations、schedule 和目录已正确配置。同时它会分析目标网站以提供给 AI 更丰富的上下文并初始化 OpenAI client 和模型这里使用 GPT-4o。在完成 LLM 初始化后它会将自然语言请求转换为 Playwright 测试代码并对 AI 生成的代码进行清理和校验以防止注入攻击或语法错误。它借鉴了模板化方法将 AI 生成的步骤封装在一个可靠的测试框架中。最后它以与前一个工具相同的方式将测试部署到 Elastic。该工具的完整代码可以在这里查看。结论与下一步Elastic Observability 中的合成监控可以轻松测试完整用户旅程帮助保持网站稳定性并与 Playwright 集成实现简单配置即可运行。这样的方案只是 MCP 实现的起点它可以自动生成 Playwright 测试并在未来扩展到 heartbeat monitor、Playwright MCP server 集成甚至可以尝试使用 Claude for Chrome 来生成合成测试。更多内容可以在 Observability Labs 上查看 Synthetic Monitoring 相关文章。原文https://www.elastic.co/observability-labs/blog/tag/synthetics

相关文章:

在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控

作者:来自 Elastic Jessica Garson 本文探讨如何使用 Elastic Observability、TypeScript 和 FastMCP 自动创建合成监控中的用户旅程(journeys),并演示该应用及其工作流程。 Elastic Observability 中的 Synthetic Monitoring 允许…...

别再只盯着算法了!手把手教你用ROS和Gazebo搭建第一个激光SLAM仿真环境(Ubuntu 20.04)

激光SLAM实战:从仿真环境搭建到算法验证全流程指南 在机器人导航领域,激光SLAM技术已经从实验室走向工业应用,成为自动驾驶、服务机器人等场景的核心组件。但许多初学者常陷入一个误区——过度关注算法理论而忽视工程实践。本文将打破这一惯性…...

Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%

作者:来自 Elastic Sri Kolagani 了解如何使用 elastic-caveman,在保留 Elastic 代理能力优势的同时减少 AI 响应的 token 消耗。 Agent Builder 现已正式发布。通过 Elastic Cloud Trial 开始使用,并查看这里的 Agent Builder 文档。 当通过…...

Navicat无限试用完整解决方案:三步彻底解决macOS版14天限制

Navicat无限试用完整解决方案:三步彻底解决macOS版14天限制 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为…...

Windows热键冲突终极指南:3分钟精准定位占用程序的免费工具

Windows热键冲突终极指南:3分钟精准定位占用程序的免费工具 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是…...

终极指南:如何免费解锁WeMod高级功能?Wand-Enhancer为你提供完整解决方案

终极指南:如何免费解锁WeMod高级功能?Wand-Enhancer为你提供完整解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否…...

5分钟掌握:终极免费图像转字节数组工具让OLED开发如此简单

5分钟掌握:终极免费图像转字节数组工具让OLED开发如此简单 【免费下载链接】image2cpp 项目地址: https://gitcode.com/gh_mirrors/im/image2cpp image2cpp图像转换工具是一个专为嵌入式开发者设计的强大在线工具,能够将普通图像快速转换为适用于…...

不只是MC和L4D2:用Python RCON库,我还能管理这些Steam游戏服务器

用Python RCON库解锁多款Steam游戏服务器的管理潜能 当你在《Rust》中需要紧急重启服务器,或想在《7 Days to Die》里实时调整僵尸数量时,是否厌倦了反复登录服务器控制面板?Python的RCON库能让你用代码直接与游戏服务器对话。这不仅仅是《我…...

ParroT框架实战:用指令与反馈数据驯化开源大模型,打造可控翻译助手

1. 项目概述:用“提示”与“反馈”驯化大语言模型,打造专属翻译助手 在机器翻译领域,我们正处在一个激动人心的十字路口。以ChatGPT、GPT-4为代表的大语言模型(LLMs)展现出了令人惊叹的对话和翻译能力,但它…...

DRIFT技术:动态微调提升多模态大模型推理性能

1. 项目概述 DRIFT(Dynamic Refinement through Injected Fine-Tuning)是一种针对多模态大模型的轻量级优化技术,通过在推理阶段动态注入梯度信号,显著提升模型在复杂任务中的表现。这项技术特别适合处理需要跨模态对齐的视觉-语言…...

阿里推AI生成视频模型Happy Horse,算力消耗与商业价值不匹配,打法或需调整

01 跑分第一名月月有,不必过于上心欲拒还迎的阿里把AI生成视频模型Happy Horse正式推上了台面。Happy Horse 1.0开启灰度测试,专业创作者和企业客户走阿里云百炼,大众用户在千问首页就能用上新加的胶囊入口。刊例价720P每秒0.9元、1080P每秒1…...

3分钟极速安装:Windows下iPhone USB网络共享驱动一键解决方案

3分钟极速安装:Windows下iPhone USB网络共享驱动一键解决方案 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com…...

如何彻底解决Dell G15散热问题:tcc-g15开源控制中心完整指南

如何彻底解决Dell G15散热问题:tcc-g15开源控制中心完整指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 想象一下,你正在用Dell G1…...

专业窗口调整工具:重新掌控你的Windows桌面布局

专业窗口调整工具:重新掌控你的Windows桌面布局 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer WindowResizer是一款基于C和MFC开发的免费开源工具,专门用于…...

解放STM32的串口潜力:Arduino环境下玩转多串口通信(Serial1/2/3实例化与数据收发实战)

解放STM32的串口潜力:Arduino环境下玩转多串口通信 当你第一次接触STM32时,可能会被它丰富的硬件资源所震撼——尤其是那些看似普通却功能强大的串口。不同于常见的Arduino Uno只有一个硬件串口,STM32系列单片机通常配备2-10个不等的硬件串口…...

3大核心优化,让你的魔兽争霸III在现代电脑上重获新生

3大核心优化,让你的魔兽争霸III在现代电脑上重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在现代电脑上的兼容…...

别再傻等画面了!海康/大华摄像头RTSP延迟高?试试这3个立竿见影的配置优化

海康/大华摄像头RTSP延迟优化实战指南 监控画面延迟3秒,关键事件发生时你还在看历史影像?这个问题困扰着无数安防工程师。上周某大型商超的防损案例就很典型——当值班人员通过监控发现货架商品被盗时,嫌疑人早已离开现场,3秒的延…...

精密低电流与高阻测量技术解析与应用

1. 精密低电流测量技术解析 在半导体材料特性分析、纳米器件测试以及光电探测器评估等前沿领域,皮安级甚至飞安级电流的精确测量已成为关键技术瓶颈。这类测量面临的核心挑战在于:待测信号极其微弱,而环境干扰和系统噪声往往比有用信号高出数…...

Swoole长连接承载LLM请求的5层熔断设计:连接层、协议层、推理层、缓存层、降级层——2024金融级容灾白皮书首次公开

更多请点击: https://intelliparadigm.com 第一章:Swoole长连接承载LLM请求的5层熔断设计全景概览 在高并发LLM服务场景中,Swoole协程长连接作为请求入口,需应对模型推理延迟突增、GPU显存溢出、网络抖动、客户端异常重连及上游限…...

遥感新手别踩坑:哥白尼Dataspace下载Sentinel-1数据时,关于‘单文件下载’和‘离线申请’的几点真相

遥感数据获取实战:避开Copernicus Dataspace的五个典型操作陷阱 当你第一次登录Copernicus Dataspace平台,面对琳琅满目的功能按钮时,是否感到无从下手?作为欧洲航天局最新的遥感数据门户,这个平台确实藏着不少新手容易…...

OpenClaw从入门到应用——Agent:订阅认证(OAuth)

通过OpenClaw实现副业收入:《OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南》 OpenClaw 通过 OAuth 支持"订阅认证",适用于提供此功能的提供商(特别是 OpenAI Codex (ChatGPT OAuth))。对于 Anthro…...

STM32H743飞控DIY:手把手教你搞定BMI088的SPI引脚配置与PX4驱动移植(避坑指南)

STM32H743飞控DIY:手把手教你搞定BMI088的SPI引脚配置与PX4驱动移植(避坑指南) 在DIY飞控板的开发过程中,传感器接口的正确配置往往是决定项目成败的关键环节。特别是当使用STM32H743这类高性能MCU搭配BMI088这样的高精度IMU时&a…...

QT6升级后,用qmake管理QML资源文件踩坑记:从.pro文件到.qrc的转变

QT6升级后qmake资源管理实战:从.qrc陷阱到高效配置指南 当我把一个运行多年的QT5 QML项目升级到QT6时,本以为只是简单的版本号变更,直到新建的QML页面反复报错"QQmlApplicationEngine failed to load component"——这个看似简单的…...

SSV6155/6255 WiFi模块调试日记:手把手解决‘驱动装了但搜不到网’的问题

SSV6x5x WiFi模块深度排障指南:从硬件信号到软件配置的完整解决方案 当你在Linux环境下成功加载了SSV6155/6255 WiFi模块驱动,dmesg显示一切正常,但执行ifconfig wlan0 up后却搜不到任何网络——这种看似简单的问题背后往往隐藏着硬件、驱动、…...

如何在Windows上免装iTunes快速安装苹果设备驱动:3分钟搞定iPhone连接问题

如何在Windows上免装iTunes快速安装苹果设备驱动:3分钟搞定iPhone连接问题 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https:/…...

Verilog有符号数比较的坑,我踩了!用Verdi波形带你复盘(附完整代码)

Verilog有符号数比较的坑,我踩了!用Verdi波形带你复盘(附完整代码) 数字电路设计中,有符号数的处理一直是工程师们容易踩坑的重灾区。最近我在一个FPGA项目中就遇到了这样的问题:仿真结果与预期完全不符&am…...

3步掌握全平台智能资源下载器:轻松捕获视频号、抖音、小红书等多媒体资源

3步掌握全平台智能资源下载器:轻松捕获视频号、抖音、小红书等多媒体资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-download…...

移动设备AI控制代理:强化学习实现跨应用自动化

1. 项目背景与核心目标 DigiData项目旨在构建一个能够通用化处理移动设备控制任务的AI代理系统。这个系统不同于传统的单一功能自动化工具,它需要具备跨应用、跨场景的自主决策能力,能够像人类用户一样灵活操作各类移动终端设备。 在移动互联网高度普及…...

AUTOSAR多核ECU启动与关闭:主从核EcuM如何协同工作(含代码示例)

AUTOSAR多核ECU启动与关闭:主从核EcuM协同设计与实战解析 当现代汽车电子架构从分布式向域集中式演进时,多核处理器已成为满足功能安全与实时性需求的标配方案。AURIX TC3xx系列和S32G等异构多核MCU的广泛应用,使得AUTOSAR标准中的ECU状态管理…...

AI 系统可观测性落地:从请求链路到管理后台的指标决策实践

凌晨 2:17,一个用户反馈工单被自动打上了「AI 回复超时」标签。这条请求来自客服助手的对话接口,用户连续追问了三个问题,前两个秒回,第三个等了 12 秒才返回「抱歉,当前服务繁忙,请稍后再试」。日志显示模…...