VictoriaMetrics-Community
服务介绍
VictoriaMetrics MCP 服务器
这是为 VictoriaMetrics 实现的 Model Context Protocol (MCP) 服务器。
这提供了对您的 VictoriaMetrics 实例的访问,并与 VictoriaMetrics APIs 和 文档 无缝集成。它能够为您提供一个全面的接口,用于监控、可观测性和调试任务,使工程师和工具能够实现高级自动化和交互功能。
功能
此 MCP 服务器允许您使用几乎所有的 VictoriaMetrics 只读 API,即在 VMUI 中可用的所有功能:
- 查询指标和探索数据(如果客户端支持,甚至可以绘制图表)
- 列出并导出可用的指标、标签、标签值和整个序列
- 分析您的告警和记录规则及告警
- 显示您的 VictoriaMetrics 实例参数
- 探索数据的基数和指标使用统计
- 分析您的查询
- 调试您的重命名规则、降采样和保留策略配置
此外,MCP 服务器包含最新的嵌入式文档,并能够在没有网络连接的情况下搜索这些文档。
有关确切可用工具和提示的更多详细信息,请参阅 使用方法 部分。
您可以结合工具的功能、文档搜索以及您的提示来发明适用于您的 VictoriaMetrics 实例的伟大使用场景。
只需查看 对话示例 部分,了解其工作方式。
请注意,MCP 服务器及其响应的质量很大程度上取决于您所使用的客户端的能力和模型的质量。
您还可以将 MCP 服务器与其他可观测性或文档搜索相关的 MCP 服务器结合使用,以获得更强大的结果。
要求
- VictoriaMetrics 实例(单节点 或 集群)
- Go 1.24 或更高版本(如果您想从源代码构建)
安装
Go
bash
go install github.com/VictoriaMetrics-Community/mcp-victoriametrics/cmd/mcp-victoriametrics@latest
源代码
bash
git clone https://github.com/VictoriaMetrics-Community/mcp-victoriametrics.git
cd mcp-victoriametrics
go build -o bin/mcp-victoriametrics ./cmd/mcp-victoriametrics/main.go
之后将 bin/mcp-victoriametrics 文件添加到您的 PATH 中
二进制文件
只需从 Releases 页面下载最新版本,并将其添加到您的 PATH 中。
Docker
即将推出...
配置
VictoriaMetrics 的 MCP 服务器通过环境变量进行配置:
| 变量 | 描述 | 是否必需 | 默认值 | 允许的值 |
|---|---|---|---|---|
VM_INSTANCE_ENTRYPOINT |
VictoriaMetrics 实例的 URL | 是 | - | - |
VM_INSTANCE_TYPE |
VictoriaMetrics 实例类型 | 是 | - | single, cluster |
VM_INSTANCE_BEARER_TOKEN |
用于 VictoriaMetrics API 的身份验证令牌 | 否 | - | - |
MCP_SSE_ADDR |
SSE 服务器监听地址 | 否 | localhost:8080 |
- |
配置示例
bash
对于单节点实例
export VM_INSTANCE_ENTRYPOINT="http://localhost:8428"
export VM_INSTANCE_TYPE="single"
export VM_INSTANCE_BEARER_TOKEN="your-token"
对于集群
export VM_INSTANCE_ENTRYPOINT="https://play.victoriametrics.com"
export VM_INSTANCE_TYPE="cluster"
服务器模式
export MCP_SERVER_MODE="sse"
export MCP_SSE_ADDR="0.0.0.0:8080"
客户端设置
Cursor
前往:设置 -> 光标设置 -> MCP -> 添加新的全局 MCP 服务器,并将以下配置粘贴到您的 Cursor ~/.cursor/mcp.json 文件中:
json
{
"mcpServers": {
"victoriametrics": {
"command": "/path/to/mcp-victoriametrics",
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
}
}
}
更多信息请参阅 Cursor MCP 文档。
Claude Desktop
将以下内容添加到您的 Claude Desktop claude_desktop_config.json 文件中(您可以通过打开 设置 -> 开发者 -> 编辑配置 找到该文件):
json
{
"mcpServers": {
"victoriametrics": {
"command": "/path/to/mcp-victoriametrics",
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
}
}
}
更多信息请参阅 Claude Desktop MCP 文档。
Claude Code
运行命令:
sh
claude mcp add victoriametrics -- /path/to/mcp-victoriametrics
-e VM_INSTANCE_ENTRYPOINT=<YOUR_VM_INSTANCE>
-e VM_INSTANCE_TYPE=<YOUR_VM_INSTANCE_TYPE>
-e VM_INSTANCE_BEARER_TOKEN=<YOUR_VM_BEARER_TOKEN>
更多信息请参阅 Claude Code MCP 文档。
Visual Studio Code
将以下内容添加到您的 VS Code MCP 配置文件中:
json
{
"servers": {
"victoriametrics": {
"type": "stdio",
"command": "/path/to/mcp-victoriametrics",
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
}
}
}
更多信息请参阅 VS Code MCP 文档。
Zed
将以下内容添加到您的 Zed 配置文件中:
json
"context_servers": {
"victoriametrics": {
"command": {
"path": "/path/to/mcp-victoriametrics",
"args": [],
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
},
"settings": {}
}
}
更多信息请参阅 Zed MCP 文档。
JetBrains IDEs
- 打开
设置->工具->AI 助手->模型上下文协议 (MCP)。 - 点击
添加 (+) - 选择
作为 JSON - 在输入框中放入以下内容:
json
{
"mcpServers": {
"victoriametrics": {
"command": "/path/to/mcp-victoriametrics",
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
}
}
}
Windsurf
将以下内容添加到您的 Windsurf MCP 配置文件中。
json
{
"mcpServers": {
"victoriametrics": {
"command": "/path/to/mcp-victoriametrics",
"env": {
"VM_INSTANCE_ENTRYPOINT": "<YOUR_VM_INSTANCE>",
"VM_INSTANCE_TYPE": "<YOUR_VM_INSTANCE_TYPE>",
"VM_INSTANCE_BEARER_TOKEN": "<YOUR_VM_BEARER_TOKEN>"
}
}
}
}请参阅Windsurf MCP 文档以获取更多信息。
Amazon Bedrock
即将推出....
使用 Docker 而不是二进制文件
即将推出...
使用方法
在安装并配置MCP 服务器后,您可以开始使用您喜欢的 MCP 客户端来使用它。
您可以从以下短语开始与 AI 助手进行对话:
在接下来的回答中使用 MCP VictoriaMetrics
但这不是必需的,您可以直接开始提问,助手将自动使用工具和文档为您提供最佳答案。
请查看对话示例部分,以便更好地了解您可以使用它的功能。
工具集
MCP VictoriaMetrics 提供了众多用于与您的 VictoriaMetrics 实例交互的工具。
以下是可用工具的列表:
| 工具 | 描述 |
|---|---|
query |
执行即时 PromQL/MetricsQL 查询 |
query_range |
在一段时间内执行范围 PromQL/MetricsQL 查询 |
metrics |
列出可用指标 |
labels |
列出可用标签名称 |
label_values |
列出特定标签的值 |
series |
列出可用时间序列 |
export |
将原始时间序列数据导出为 JSON 或 CSV |
rules |
查看告警和记录规则 |
alerts |
查看当前告警(触发和待处理) |
flags |
查看 VictoriaMetrics 实例的非默认标志 |
metric_statistics |
获取指标使用(查询中)统计信息 |
active_queries |
查看当前正在执行的查询 |
top_queries |
查看最频繁或最慢的查询 |
tsdb_status |
查看 TSDB 基数统计信息 |
tenants |
列出多租户集群设置中的可用租户 |
documentation |
搜索嵌入的 VictoriaMetrics 文档 |
metric_relabel_debug |
调试 Prometheus 兼容的重命名规则 |
downsampling_filters_debug |
调试降采样配置 |
retention_filters_debug |
调试保留过滤器配置 |
提示
服务器包括针对常见任务的预定义提示。
这些目前只是示例,将来会添加更多提示库:
| 提示 | 描述 |
|---|---|
unused_metrics |
查找从未被查询过的指标,并创建重命名配置以停止摄入它们 |
documentation |
在 VictoriaMetrics 文档中搜索特定主题 |
rarely_used_metrics_with_high_cardinality |
识别高基数但很少被查询的指标 |
对话示例
这只是与使用 MCP 服务器的助手进行对话的一个示例,可以帮助理解其工作方式(但这是使用 Claude Desktop 并配置到公共游乐场实例的真实对话):
-
您: 我的 VM 中有哪些租户可用?
-
助手 在您的 VictoriaMetrics 实例中,以下租户可用
0:0(默认租户),1:0,10:0,100:0 -
您: 从现在起,请仅使用默认租户
-
助手: 我明白了。从现在起,我将仅对您的 VictoriaMetrics 实例使用默认租户 (0:0) 进行所有操作。
-
您: 我们有哪些指标?
-
助手: 您的 VictoriaMetrics 实例中有许多可用指标。列表包括来自各种系统和组件的指标,例如:
- 系统指标 (
node_,machine_等),> - Kubernetes 指标 (kube_,container_,apiserver_等), - VictoriaMetrics 特定指标 (
vm_,vmagent_,vmalert_等), - Go 运行时指标 (
go_), - Prometheus 相关指标 (
scrape_,promhttp_), - 各种应用程序指标 (
argocd_,alertmanager_).
这是一个包含超过2000个可查询指标的综合列表。您是否对特定类型的指标感兴趣,希望进一步探索?
- 系统指标 (
-
You: 好的,从现在开始我们使用 Kubernetes 指标。请告诉我这些指标中哪些从未被查询过?
-
Assistant: 根据结果,我可以看到有两个 Kubernetes 指标从未被查询过(查询次数为0):
kube_persistentvolumeclaim_deletion_timestamp- 此指标提供有关 PersistentVolumeClaims 被标记为删除的时间信息。kube_pod_init_container_status_last_terminated_reason- 此指标显示 pod 中初始化容器最后一次终止的原因。
这些指标可能对监控和故障排除有价值:
- PVC 删除时间戳指标可以帮助跟踪删除模式或识别卡住的 PVC。
- 初始化容器终止原因指标可以帮助识别初始化容器中的常见故障模式。
您是否需要我进一步解释这些指标所追踪的内容,或者建议一些有用的查询来开始监控它们?
-
You: 是的,请这样做。另外,你能创建重命名规则以停止收集这些指标吗?
-
Assistant: 我会创建一个重命名配置以排除这些从未被查询过的指标的收集。这将有助于减少存储和处理开销。以下是您可以添加到 VictoriaMetrics 抓取配置中的重命名配置:
yaml
relabel_configs:- action: drop
source_labels: [name]
regex: kube_persistentvolumeclaim_deletion_timestamp|kube_pod_init_container_status_last_terminated_reason
此配置将:
- 查看每个指标的名称(
__name__标签) - 检查它是否与指定的任一指标匹配
- 丢弃匹配的指标,防止它们被收集和存储
您可以将其添加到您的 VictoriaMetrics 配置文件中,或者如果您使用 Prometheus 作为 VictoriaMetrics 的抓取器,则可以将其添加到相关的抓取作业配置中。
如果您想在实施之前测试此重命名配置,可以使用指标重命名调试工具来查看它如何影响您的指标。 - action: drop
-
You: 是的,请在实时时间序列上调试此重命名配置,看看它会如何影响我的指标。
-
Assistant: 很好!重命名配置按预期工作:
- 前两个测试用例显示
kube_persistentvolumeclaim_deletion_timestamp和kube_pod_init_container_status_last_terminated_reason指标都被正确丢弃(结果标签为空{})。 - 第三个测试用例确认其他指标如
kube_pod_status_phase被保留且不受我们的丢弃规则影响。
您可以放心地将此重命名配置添加到您的 VictoriaMetrics 或 Prometheus 配置中,以停止收集这些未使用的指标。这将节省存储空间并减少处理开销,而不会影响您当前的监控能力。
- 前两个测试用例显示
-
You: 但我使用的是 VictoriaMetrics Operator 的 vmagent 资源,能否给我一个带有此重命名配置的 agent 规范部分?
-
Assistant: 您说得对,由于您正在使用 VictoriaMetrics Operator 和 VMAgent 自定义资源,因此配置需要符合该 CR 的格式。以下是如何将重命名配置添加到您的 VMAgent 规范中的示例:
yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAgent> metadata:
name: your-vmagent-name
spec:... your existing configuration ...
添加此部分以配置全局指标重新标记
inlineRelabelConfig:
- action: drop
sourceLabels: ["name"]
regex: kube_persistentvolumeclaim_deletion_timestamp|kube_pod_init_container_status_last_terminated_reason... 其余配置 ...
关键点:
- 在 VMAgent 规格中,使用
inlineRelabelConfig进行内联重新标记规则 - 字段名称为
sourceLabels(而不是 Prometheus 配置中的source_labels) - 这是全局重新标记,在所有指标存储之前都会应用
- 在 VMAgent 规格中,使用
-
你: 我决定不移除这些指标,而是通过降采样来降低它们的采样率。我现在有哪些降采样参数?
-
助手: 我看到您目前有以下降采样配置:
-downsampling.period="7d:1m,30d:5m,180d:30m"
这意味着:
- 7天内的数据保持原始分辨率
- 7到30天的数据被降采样到1分钟分辨率
- 30到180天的数据被降采样到5分钟分辨率
- 超过180天的数据被降采样到30分钟分辨率
现在,如果您想为这些很少查询的指标添加特定的降采样规则,您可以使用降采样过滤器调试工具来测试新规则的效果。让我们测试一个配置,其中我们对这些特定指标应用更激进的降采样:
...获取序列并使用降采样过滤器调试器...
很好!现在我们的测试工作正常。根据当前配置和我们的测试,这里是一个建议的 VMAgent CR 降采样配置,它将对这些很少查询的指标应用更激进的降采样:
yaml
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMCluster
metadata:
name: monitoring-vm-cluster
spec:... 您现有的配置 ...
使用新的降采样参数更新 vmstorage 部分
vmstorage:
extraArgs:
downsampling.period: {name="kube_persistentvolumeclaim_deletion_timestamp"}:1d:10m,{name="kube_pod_init_container_status_last_terminated_reason"}:1d:10m,7d:1m,30d:5m,180d:30m... 其余配置 ...
此配置:
- 对很少查询的指标在1天后应用10分钟分辨率的降采样
- 保持其他所有指标的现有降采样策略降采样规则的顺序很重要 - 更具体的规则应该列在前面。
在对话过程中,助手使用了以下工具:
tenants获取可用租户列表documentation获取功能和数据格式的信息metrics获取可用指标列表metrics_statistics获取指标使用情况信息series获取用于调试的时间序列metric_relabel_debug调试重新标记规则flags获取实例参数信息downsampling_filters_debug调试降采样配置
但您可以使用任何其他工具,并以自己的方式组合它们。
免责声明
AI 服务和代理以及像这样的 MCP 服务器不能保证结果的准确性、完整性和可靠性。
您应该仔细检查 AI 获得的结果。
MCP 服务器及其响应的质量很大程度上取决于您的客户端能力和所使用的模型质量。
贡献
欢迎为 MCP VictoriaMetrics 项目做出贡献!请随时提交问题、功能请求或拉取请求。