Splunk实验室
](https://github.com/andrewkriley/splunk-lab/releases/latest)
一个演示环境,适合任何希望在自托管环境中开始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 (也在 )是实验室的单一界面。左侧边栏在四个设置步骤、实验室工具和文档之间导航。
第一步——建立实验室
先决条件、克隆、配置 .env,并以以下方式启动堆栈 docker compose up -d该步骤遍历每个动作,并在继续之前确认准备就绪。
第二步——探索Buttercup数据
描述三个Buttercup Games数据集(buttercup_web, buttercup_sales, buttercup_products)并为常见分析提供现成的SPL查询。每个查询包括 earliest=0 latest=now 无论Splunk的默认时间选择器如何,都可以匹配2025年1月的样本时间戳。
Step 2 – Explore Buttercup Data
步骤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秒自动刷新一次。
文档
架构参考、配置表、环境变量描述、数据流图和网络拓扑——所有这些都在实验室旁边的浏览器中。
______________________________________________________________________
先决条件
- 已安装并正在运行
- 用于MCP集成的Claude Code(v2.1+)或Claude Desktop(v0.10.5+)——如果您仅在浏览器中使用Ask Splunk,则可选
- A. Splunk开发者许可证 (免费)取消500 MB/天的索引限制
______________________________________________________________________
快速入门
选项A——引导安装(建议首次安装)
git clone
cd splunk-lab
./install.shinstall.sh 走过 .env 配置,启动堆栈,等待Splunk准备就绪,确认所有服务都已启动,并可选择创建 .claude/env.sh (gitignored)为 splunk-lab-dashboard-gen 技能。它还提供 更新 和 重置 从主菜单中选择模式。
选项B——手动设置
1.克隆和配置
git clone
cd splunk-lab
cp .env.example .env打开 .env 并为Splunk设置密码 admin 账户
SPLUNK_PASSWORD=YourPassword123密码必须至少包含8个字符,并且包含字母和数字。
2.启动实验室
docker compose up -dSplunk在首次启动时需要大约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文件
- 在Splunk Web中,转到 设置→ 添加数据→ 上传
- 选择您的CSV文件
- Splunk将自动检测分隔符并预览字段
- 设置 源类型 到
csv(或创建自定义) - 选择
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实例。
它的作用:
- 通过运行SPL
splunk-lab-guide主控程序 - 通过HuggingFace AI生成主题背景图像
- 构建内嵌图像的Dashboard Studio JSON
- 通过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// --背景PNG, dashboard.json,包装好的XML。实时仪表板打开于 http://localhost:8000/en-US/app/search/.
______________________________________________________________________
MCP集成
安全说明: MCP端点不需要身份验证,并绑定到127.0.0.1只是——它不能从网络上的其他机器访问。此配置仅供本地演示使用。不要暴露端口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 并且只能从这台机器访问。
| 端口 | 服务 | 可通过配置 |
|---|---|---|
3131 | 实验室指南(包括Ask Splunk) /ask/) | LAB_GUIDE_PORT |
8000 | Splunk Web用户界面 | -- |
8050 | Splunk MCP服务器(流式HTTP) | -- |
8088 | HTTP事件收集器(HEC) | -- |
8089 | Splunk REST API | - |
______________________________________________________________________
贡献
有关版本控制和发布的信息,请参阅 版本.md.
