Splunk学习环境

一个用于在自托管环境中快速启动Splunk学习旅程的演示环境,提供预加载的示例数据和内置的Ask Splunk界面。

  • by andrewkriley
  • HTML
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 andrewkriley/partner-mcp-splunk-lab

使用说明

Splunk实验室

一个演示环境,适合任何希望在自托管环境中开始Splunk学习之旅的人。在Docker中运行Splunk Enterprise,预装Buttercup Games示例数据,Splunk MCP服务器已准备好用于Claude Code或Claude Desktop,并内置 询问Splunk 用于探索MCP工具和通过自然语言查询Splunk的界面。更喜欢托管选项?试试 Splunk Cloud 14天免费试用.

docker compose up  →  Lab guide + Splunk Web UI + MCP server + Ask Splunk ready

实验室指南(在线预览): https://andrewkriley.github.io/splunk-lab/


实验指南

实验室指南 http://localhost:3131 (也在 Andrew Krley.github.io/splunk-lab)是实验室的单一界面。左侧边栏在四个设置步骤、实验室工具和文档之间导航。

第一步——建立实验室

先决条件、克隆、配置 .env,并以以下方式启动堆栈 docker compose up -d该步骤遍历每个动作,并在继续之前确认准备就绪。

第二步——探索Buttercup数据

描述三个Buttercup Games数据集(buttercup_web, buttercup_sales, buttercup_products)并为常见分析提供现成的SPL查询。每个查询包括 earliest=0 latest=now 无论Splunk的默认时间选择器如何,都可以匹配2025年1月的样本时间戳。

步骤3--连接到MCP

标签式连接说明 克劳德代码 和 克劳德桌面 使用Streamable HTTP连接到MCP服务器。包括可复制的配置片段和故障排除表。

克劳德代码 克劳德桌面

第4步——你的第一个仪表板(克劳德代码)

步行穿过 /splunk-lab-dashboard-gen 技能:先决条件(堆叠、MCP、拥抱脸、, .claude/env.sh 随着 SPLUNK_PASS 和 HF_TOKEN),使用复制就绪提示 buttercup 索引,以及运行完成时在哪里找到实时Splunk链接。

询问Splunk

基于浏览器的MCP接口——无需Claude订阅。 探索工具 列出了每个具有自动生成表单和快速查询预设的MCP工具。 聊天 (可选,必填 ANTHROPIC_API_KEY)通过Claude添加自然语言查询。

状态仪表板

所有实验室服务的实时健康状况——容器状态、Splunk Web和MCP可达性以及OpenTetry堆栈占位符。每10秒自动刷新一次。

文档

架构参考、配置表、环境变量描述、数据流图和网络拓扑——所有这些都在实验室旁边的浏览器中。


先决条件

  • Docker桌面 已安装并正在运行
  • 用于MCP集成的Claude Code(v2.1+)或Claude Desktop(v0.10.5+)——如果您仅在浏览器中使用Ask Splunk,则可选
  • A. Splunk开发者许可证 (免费)取消500 MB/天的索引限制

快速入门

选项A——引导安装(建议首次安装)

git clone <this-repo>
cd splunk-lab
./install.sh

install.sh 走过 .env 配置,启动堆栈,等待Splunk准备就绪,确认所有服务都已启动,并可选择创建 .claude/env.sh (gitignored)为 splunk-lab-dashboard-gen 技能。它还提供 更新 和 重置 从主菜单中选择模式。

选项B——手动设置

1.克隆和配置

git clone <this-repo>
cd splunk-lab
cp .env.example .env

打开 .env 并为Splunk设置密码 admin 账户

SPLUNK_PASSWORD=YourPassword123

密码必须至少包含8个字符,并且包含字母和数字。

2.启动实验室

docker compose up -d

Splunk在首次启动时需要大约60-90秒进行初始化。值班准备:

docker compose logs -f splunk

当你看到 Ansible playbook completeSplunk准备好了。

3.打开实验室

  • 实验室指南: http://localhost:3131--点击安装和搜索指南
  • Splunk Web用户界面: http://localhost:8000
  • 用户名: admin
  • 密码: 您设置的值 .env

Buttercup Games的样本数据在启动时会自动索引,无需手动步骤。

Splunk搜索时间范围: 样本时间戳在 2025年1月.In 搜索和报告,将时间选择器设置为 所有时间 (或粘贴包含以下内容的SPL earliest=0 latest=now 之后 index=buttercup).默认值 过去24小时 这个实验室经常没有任何活动。


包含什么

Buttercup Games示例数据

三个数据集被自动索引到 buttercup 指数:

源类型 描述
buttercup_web Web店面访问日志(Apache组合格式)
buttercup_sales 供应商销售交易——单位、收入、产品
buttercup_products 产品目录,包括价格和类别

在Splunk中尝试以下搜索:

示例事件已注明日期 2025年1月Splunk Web默认为一个较短的最近窗口(例如过去24小时),这将不会返回此数据的行。使用 所有时间 在时间范围选择器中,或保留 earliest=0 latest=now 以下搜索中的边界,因此它们始终与示例数据匹配。

# Traffic by HTTP status code
index=buttercup earliest=0 latest=now sourcetype=buttercup_web | stats count by status

# Sales revenue by vendor
index=buttercup earliest=0 latest=now sourcetype=buttercup_sales | stats sum(revenue) as total_revenue by vendor | sort -total_revenue

# Top products by units sold
index=buttercup earliest=0 latest=now sourcetype=buttercup_sales | stats sum(units_sold) as total_units by product | sort -total_units

# Revenue trend over time
index=buttercup earliest=0 latest=now sourcetype=buttercup_sales | timechart span=1d sum(revenue) by vendor

实验室指南和状态仪表板

实验室指南在 http://localhost:3131 并作为实验室的单一接口:

  • 步骤1-3 --点击设置和指导SPL练习
  • 状态 --实时仪表板显示容器运行状况、Splunk Web和MCP服务可达性以及OpenTetry堆栈占位符(每10秒自动刷新一次)
  • 文档 --实验室参考材料

状态后端(status-api)作为sidecar容器运行并公开 GET /api/status 通过nginx反向代理——不需要单独的端口。


导入您自己的数据

从CSV文件

  1. 在Splunk Web中,转到 设置→ 添加数据→ 上传
  2. 选择您的CSV文件
  3. Splunk将自动检测分隔符并预览字段
  4. 设置 源类型 到 csv (或创建自定义)
  5. 选择 main 索引并单击 审查→ 提交

您的数据可以立即搜索:

index=main sourcetype=csv | head 20

来自在线资源(HEC)

端口上预先启用了HTTP事件收集器(HEC) 8088.使用您的令牌 .env 用于从任何HTTP客户端发送事件的文件:

# Send a single event
curl -k https://localhost:8088/services/collector/event \
  -H "Authorization: Splunk ${SPLUNK_HEC_TOKEN}" \
  -d '{"event": {"message": "hello from HEC", "source": "my_app"}, "sourcetype": "my_sourcetype"}'
# Send a batch of events from a JSON file
curl -k https://localhost:8088/services/collector/event \
  -H "Authorization: Splunk ${SPLUNK_HEC_TOKEN}" \
  -d @events.json

然后搜索您的活动:

index=main sourcetype=my_sourcetype

询问Splunk

双选项卡界面 实验室指南内 在 http://localhost:3131/ask/ (侧边栏 实验室工具→ 询问Splunk)用于通过MCP探索和查询Splunk。FastAPI后端在 chat 仅限内部网络上的容器;nginx上的实验室指南代理 /ask/api/* 因此,您可以使用一个主机端口。

浏览工具(不需要API密钥)

默认选项卡列出了所有具有自动生成表单、常见SPL操作的快速查询预设和原始JSON结果的MCP工具。使用它来验证MCP服务器是否正常工作,学习工具模式,并运行查询——不需要人工智能订阅。

聊天(可选-需要Anthropic API密钥)

一个自然语言聊天界面,通过MCP工具将Claude与Splunk连接起来。用简单的英语提问,Claude将调用适当的MCP工具查询Splunk并格式化结果。

设置: 将您的Anthropic API密钥添加到 .env:

ANTHROPIC_API_KEY=sk-ant-...

然后重新启动: docker compose up -d.打开 http://localhost:3131/ask/ 并切换到 聊天 选项卡。

“聊天”选项卡需要一个Anthropic API密钥。“浏览工具”选项卡可以在没有工具的情况下工作。所有其他实验室功能不受影响。


技能

该项目提供了直接与实验室协同工作的Claude Code技能。这些技能是项目范围的——当从打开Claude Code时,它们会自动出现 splunk-lab 目录。

splunk实验室仪表板生成器

生成完整 Splunk仪表板工作室 从任何SPL查询中提取仪表板,并将其实时部署到本地Splunk实例。

它的作用:

  1. 通过运行SPL splunk-lab-guide 主控程序
  2. 通过HuggingFace AI生成主题背景图像
  3. 构建内嵌图像的Dashboard Studio JSON
  4. 通过REST API部署到Splunk并返回直接链接

先决条件:

要求 设置
实验室堆栈正在运行 docker compose up -d
splunk-lab-guide MCP 已配置 .mcp.json --无需采取任何行动
HuggingFace MCP 通过Claude Code MCP设置连接
.claude/env.sh SPLUNK_PASS,铸造 SPLUNK_API_TOKEN, HF_TOKEN --见下文(gignored,永不承诺)

一次性 env.sh 设置:

cp env.sh.example .claude/env.sh
chmod 600 .claude/env.sh

打开 .claude/env.sh 并设置 SPLUNK_PASS 以匹配 SPLUNK_PASSWORD 价值在你 .env 文件,以及 HF_TOKEN 到您的拥抱脸API代币(hf_...)用于仪表板背景图像。 SPLUNK_HOST 和 SPLUNK_USER 默认 localhost 和 admin --对当地实验室来说是正确的。正在运行 ./install.sh 接受技能提示会创建此文件, 创建Splunk REST SPLUNK_API_TOKEN (观众 splunkd)当Splunk启动时,通过管理API,并且可以提示 HF_TOKEN.

用法 --对克劳德说:

“从索引=buttercup生成仪表板,按状态统计数据,标题:Web流量” “/splunk实验室仪表板gen Buttercup销售概述”

输出: ~/dev/claude-created-dashboards/<slug>/ --背景PNG, dashboard.json,包装好的XML。实时仪表板打开于 http://localhost:8000/en-US/app/search/<slug>.


MCP集成

Splunk MCP服务器与Splunk一起运行 http://localhost:8050/mcp 使用 可流式传输的HTTP (MCP 2025-03-26),这样克劳德就可以调用Splunk搜索、仪表板和警报。该图像基于Splunk的 splunk-mcp-server2 带有实验室覆盖层 mcp/server.ts 和 mcp/splunkClient.ts. 实验室与上游——全三角洲.

安全说明: MCP端点不需要身份验证。默认情况下,它绑定到 127.0.0.1 只有--无法从其他机器访问。设置 BIND_HOST=0.0.0.0 在 .env 暴露端口 8050 到您的网络 无身份验证;只能在可信网络上执行此操作,切勿将其暴露在公共互联网上。

克劳德代码

克劳德代码CLI v2.1+ 本机支持流式HTTP(否 npx 或代理)。回购根 .mcp.json 寄存器 splunk-lab-guide → http://localhost:8050/mcp;当您在运行堆栈的Claude Code中打开此项目时,它会自动加载。

堆叠完成后开始对话:

“在Splunk中搜索过去24小时内的HTTP 500错误” “按收入显示前5名供应商” “创建一个按状态代码显示网络流量的仪表板”

克劳德桌面

克劳德桌面v0.10.5+ 支持流式HTTP。添加相同内容 mcpServers 对象如in .mcp.json 转到您的计算机配置,然后重新启动应用程序。

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

只要实验室堆栈正在运行,Splunk工具就会出现。

故障排除

工具未出现在Claude代码中

  • 确认堆栈正在运行: docker compose ps
  • 检查MCP服务器是否已注册: claude mcp list
  • 条目应显示 splunk-lab-guide 与类型 http 指向 http://localhost:8050/mcp
  • 如果丢失,请从内部重新打开Claude Code splunk-lab 目录(.mcp.json 项目范围)

工具未出现在Claude Desktop中

  • 编辑配置文件后重新启动Claude Desktop——它只在启动时读取文件
  • 确认克劳德桌面 v0.10.5或更高版本 (旧版本不支持Streamable HTTP)
  • 验证 type 字段是 "http" --老人 command/args 表单使用 mcp-remote 不再需要

MCP服务器在“状态”选项卡中显示不正常

  • 检查容器状态: docker compose ps
  • 查看MCP服务器日志: docker compose logs splunk-mcp
  • MCP服务器等待Splunk准备就绪——如果Splunk仍在启动,请等待 Ansible playbook complete 在 docker compose logs -f splunk

端口8050上的连接被拒绝

  • 实验室堆栈未运行。启动它: docker compose up -d

停止和重置

# Stop containers (data is preserved)
docker compose down

# Stop and delete all data (full reset)
docker compose down -v

港口

默认情况下,所有端口都绑定到 127.0.0.1 并且只能从这台机器访问。集 BIND_HOST=0.0.0.0 在 .env 将它们绑定到所有接口,以便网络上的其他主机可以访问实验室。这增加了 无需认证 连接到MCP、HEC或REST端点——仅在受信任的网络上进行。

端口 服务 可通过配置
3131 实验室指南(包括Ask Splunk) /ask/) LAB_GUIDE_PORT, BIND_HOST
8000 Splunk Web用户界面 BIND_HOST
8050 Splunk MCP服务器(流式HTTP) BIND_HOST
8088 HTTP事件收集器(HEC) BIND_HOST
8089 Splunk REST API BIND_HOST

贡献

有关版本控制和发布的信息,请参阅 版本.md.