大语言模型(LLM)应用调用可观测MCP服务实现日志查询与分析

本文介绍了如何使用大语言模型(LLM)应用通过可观测MCP服务接入日志服务,提升查询和分析效率。

背景信息

阿里云可观测的 MCP(Model Context Protocol)是一种统一的数据访问和分析协议,旨在通过自然语言交互和工具集成,帮助用户高效查询和分析阿里云可观测产品(如日志服务 SLS、ARMS 等)中的数据。

以下是MCP地址:

MCP工具列表

日志工具(点击查看

工具名称

工具说明

参数说明

注意事项

sls_describe_logstore

检索日志存储的结构和索引信息。

  • project:SLS项目名称(必选)。

  • logStore:SLS日志存储名称(必选)。

  • regionId:阿里云区域ID。

  • 在查询前使用此工具了解可用字段及其类型。

  • 检查所需字段是否启用了索引。

sls_diagnose_query

诊断日志服务查询问题,提供失败原因分析。

  • query:待诊断的SLS查询(必选)。

  • errorMessage:查询失败的错误信息(必选)。

  • project:SLS项目名称(必选)。

  • logStore:SLS日志存储名称(必选)。

  • regionId:阿里云区域ID。

  • 查询失败时使用此工具了解根本原因。

  • 根据诊断建议修改查询语句。

sls_execute_sql_query

在指定时间范围内对日志存储执行SQL查询。

  • project:SLS项目名称(必选)。

  • logStore:SLS日志存储名称(必选)。

  • query:SQL查询语句(必选)。

  • fromTimestampInSeconds:查询开始时间戳(必选)。

  • toTimestampInSeconds:查询结束时间戳(必选)。

  • limit:返回结果数量上限(默认10)。

  • regionId:阿里云区域ID。

  • 使用适当的时间范围优化查询性能。

  • 限制返回结果数量避免获取过多数据。

sls_list_logstores

列出项目内的日志存储,支持名称模糊搜索。

  • project:SLS项目名称(必选)。

  • logStore:日志存储名称(可选,模糊搜索)。

  • limit:返回结果数量上限(默认10)。

  • isMetricStore:是否筛选指标存储。

  • logStoreType:日志存储类型。

  • regionId:阿里云区域ID。

  • 确定项目后使用此工具查找相关日志存储。

  • 可通过logStoreType筛选特定类型日志存储。

sls_list_projects

列出SLS项目,支持模糊搜索和分页。

  • projectName:项目名称(可选,模糊搜索)。

  • limit:返回项目数量上限(默认50,范围1-100)。

  • regionId:阿里云区域ID。

  • 在不确定可用项目时,首先使用此工具。

  • 使用合理的limit值避免返回过多结果。

sls_translate_text_to_sql_query

将自然语言描述转换为日志服务SQL查询语句。

  • text:查询的自然语言描述(必选)。

  • project:SLS项目名称(必选)。

  • logStore:SLS日志存储名称(必选)。

  • regionId:阿里云区域ID。

  • 对于复杂查询,可能需要优化生成的SQL。

ARMS工具(点击查看

工具名称

工具说明

参数说明

注意事项

arms_diff_profile_flame_analysis

对比不同时间段的火焰图性能变化。

  • pid:应用PID(必选)。

  • currentStartMs:当前时间段开始时间戳(必选)。

  • currentEndMs:当前时间段结束时间戳(必选)。

  • referenceStartMs:参考时间段开始时间戳(必选)。

  • referenceEndMs:参考时间段结束时间戳(必选)。

  • regionId:阿里云区域ID(必选)。

  • profileType:分析类型,如'cpu'、'memory'(默认:'cpu')。

  • ip:服务主机IP(可选)。

  • thread:线程ID(可选)。

  • threadGroup:线程组(可选)。

  • 用于发布前后性能对比。

  • 分析性能优化效果。

  • 识别性能退化点。

  • 支持CPU和内存类型的性能对比。

  • 适用于JavaGo应用。

arms_get_application_info

获取特定ARMS应用的详细信息。

  • pid:应用PID(必选)。

  • regionId:阿里云区域ID(必选)。

  • 当用户明确请求应用信息时使用。

  • 确定应用的开发语言。

  • 在执行其他操作前先获取应用基本信息。

arms_generate_trace_query

根据自然语言问题生成ARMS追踪数据的SLS查询。

user_id:阿里云账户ID(必选)。

pid:应用PID(必选)。

region_id:阿里云区域ID(必选)。

question:关于追踪的自然语言问题(必选)。

  • 用于查询应用的追踪信息。

  • 分析应用性能问题。

  • 跟踪特定请求的执行路径。

  • 分析服务调用关系。

  • 集成了自动重试机制处理瞬态错误。

arms_profile_flame_analysis

分析ARMS应用火焰图性能热点。

  • pid:应用PID(必选)。

  • startMs:分析开始时间戳(必选)。

  • endMs:分析结束时间戳(必选)。

  • regionId:阿里云区域ID(必选)。

  • profileType:分析类型,如'cpu'、'memory'(默认:'cpu')。

  • ip:服务主机IP(可选)。

  • thread:线程ID(可选)。

  • threadGroup:线程组(可选)。

  • 用于分析应用性能热点问题。

  • 支持CPU和内存类型的性能分析。

  • 可筛选特定IP、线程或线程组。

  • 适用于JavaGo应用。

arms_search_apps

根据应用名称搜索ARMS应用。

  • appNameQuery:应用名称查询字符串(必选)。

  • regionId:阿里云区域ID(必选)。

  • pageSize:每页结果数量(默认:20,范围:1-100)。

  • pageNumber:页码(默认:1)。

  • 用于查找特定名称的应用。

  • 用于获取其他ARMS操作所需的应用PID。

  • 使用合理的分页参数优化查询结果。

  • 查看用户拥有的应用列表。

指标工具(点击查看

工具名称

工具说明

参数说明

注意事项

cms_translate_text_to_promql

将自然语言描述转换为PromQL查询语句。

  • text: 要转换的自然语言文本(必选)。

  • project: 日志服务项目名称(必选)。

  • metricStore: 日志服务指标存储名称(必选)。

  • regionId: 阿里云区域ID(必选)。

  • 提供清晰、具体的指标描述。

  • 如已知,可在描述中提及特定的指标名称、标签或操作。

  • 排除项目或指标存储名称本身。

  • 检查并优化生成的查询以提高准确性和性能。

前提条件

  • 配置阿里云访问密钥 (AccessKey)

    • 服务运行需要有效的阿里云 AccessKey ID 和 AccessKey Secret。关于AccessKey请参见创建AccessKeyLinux、macOSWindows系统设置阿里云AccessKey

    • 当你初始化时候不传入 AccessKey 和 AccessKey Secret 时,会使用默认凭据链进行登录。

      1. 如果环境变量中的ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET均存在且非空,则使用它们作为默认凭据。

      2. 如果同时设置了ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRETALIBABA_CLOUD_SECURITY_TOKEN,则使用STS Token作为默认凭据。

  • 权限须知

    • 若您使用阿里云主账号登录,默认拥有所有操作权限,可直接对Project进行相关操作。

    • 若您使用RAM账号登录,请根据需要向主账号使用者申请如下权限。

      强烈建议遵循最小权限原则:仅授予运行您计划使用的MCP工具所必需的最小权限集,以降低安全风险。

      • 使用日志服务相关工具,参考日志服务RAM访问控制权限配置,授予必要的读取和查询权限。

      • 应用实时监控服务 (ARMS):如果您需要使用 arms_* 相关工具,请参考ARMS 权限说明 ,并授予必要的查询权限。

      • 如果需要使用SQL生成工具,需要单独授予sls:CallAiTools的权限。

  • 需要 Python 3.10 及以上版本。

注意事项

密钥安全

本 MCP Server 在运行时会使用您提供的 AccessKey 调用阿里云 OpenAPI,但不会以任何形式存储您的 AccessKey,也不会将其用于设计功能之外的任何其他用途。

访问控制(关键)

  • 当您选择通过 SSE (Server-Sent Events) 协议访问MCP Server时,您必须自行负责该服务接入点的访问控制和安全防护。

  • 强烈建议将 MCP Server部署在内部网络或授信环境中,例如您的私有VPC (Virtual Private Cloud) 内,避免直接暴露于公共互联网。

  • 推荐的部署方式是使用阿里云函数计算 ,并配置其网络设置为仅VPC内访问,以实现网络层面的隔离和安全。

  • 切勿在没有任何身份验证或访问控制机制的情况下,将配置了AccessKeyMCP Server SSE端点暴露在公共互联网上,这会带来极高的安全风险。

步骤一:安装MCP

方式一:PIP安装

  1. 使用命令pip install mcp-server-aliyun-observability安装MCP。

  2. 安装完成后,启动MCP。

    python -m mcp_server_aliyun_observability --transport sse --access-key-id your_accesskey_id --access-key-secret your_accesskey_secret

    参数

    说明

    --transport

    指定传输方式,可选值为 sse 或 stdio,默认值为 stdio。

    --access-key-id

    指定阿里云 AccessKeyId,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_ID。

    --access-key-secret

    指定阿里云 AccessKeySecret,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_SECRET。

    --log-level

    可选值为DEBUG、INFO、WARNING、ERROR,默认值为INFO。

    --transport-port

    指定传输端口,默认值为 8000,仅当--transportsse时有效。

方式二:源码安装

# clone 源码
git clone git@github.com:aliyun/alibabacloud-observability-mcp-server.git
# 进入源码目录
cd alibabacloud-observability-mcp-server
# 安装
pip install -e .
# 运行
python -m mcp_server_aliyun_observability --transport sse --access-key-id your_accesskey_id --access-key-secret your_accesskey_secret

参数

说明

--transport

指定传输方式,可选值为 sse 或 stdio,默认值为 stdio。

--access-key-id

指定阿里云 AccessKeyId,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_ID。

--access-key-secret

指定阿里云 AccessKeySecret,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_SECRET。

--log-level

可选值为DEBUG、INFO、WARNING、ERROR,默认值为INFO。

--transport-port

指定传输端口,默认值为 8000,仅当--transportsse时有效。

步骤二:AI工具集成

启动方式

  1. SSE 类型(远端服务托管):此类型的服务托管在远程服务器上,配置过程简单快捷,非常适合初次接触的新手用户快速上手体验

  2. STDIO 类型(本地服务运行):此类型的服务在您的本地环境中运行,需要依赖您本地环境准备,适合于专业开发者。

SSE

其中7897transport端口,使用时需要根据实际情况修改。

{
  "mcpServers": {
    "alibaba_cloud_observability": {
      "url": "http://localhost:7897/sse"
        }
  }
}

stdio

  • 从源码目录启动

    • 需要指定--directory参数,指定源码目录,最好是绝对路径。

    • uv命令最好也使用绝对路径,如果使用了虚拟环境,则需要使用虚拟环境的绝对路径。

    {
      "mcpServers": {
        "alibaba_cloud_observability": {
          "command": "uv",
          "args": [
            "--directory",
            "/path/to/your/alibabacloud-observability-mcp-server",
            "run",
            "mcp-server-aliyun-observability"
          ],
          "env": {
            "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_accesskey_id",
            "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_accesskey_secret"
          }
        }
      }
    }
  • 从 module 启动

    {
      "mcpServers": {
        "alibaba_cloud_observability": {
          "command": "uv",
          "args": [
            "run",
            "mcp-server-aliyun-observability"
          ],
          "env": {
            "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_accesskey_id",
            "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_accesskey_secret"
          }
        }
      }
    }

Cherry Studio集成

image

image

Cursor集成

image

image

image

ChatWise集成

image

image

常见问题

使用 SSE 访问时候,提示启动失败"Error invoking remote method 'mcp::list-tools':Error: SSE error: Non-200 status code (404)"

端口被其他服务占用,可以检查下端口是否被占用,或者更换端口。

IDEA、Visual Studio Code等工具使用MCP

  1. 在工具中下载和安装通义灵码

    image

  2. 单击MCP工具,在MCP广场中搜索mcp-server-aliyun-observability,单击安装,安装完成后即可使用。

    image