Splunk 是什么 --- 一句话定义
Splunk 就是"企业机器数据的 Google"------一个可以对企业数据进行搜索、可视化、监控和报告的软件引擎。它把各种乱七八糟的日志变成可搜索、可分析、可看懂的数据。
Splunk 三大核心组件(记忆口诀:转 → 存 → 搜)
用 "F-I-S" 三个字母记:Forwarder(转发器)→ Indexer(索引器)→ Search Head(搜索头)
Forwarder 从数据源收集数据,Indexer 处理并存储数据,Search Head 让用户搜索、创建仪表盘和可视化结果。
Forwarder(转发器)------ 装在每台服务器/终端上的轻量级采集 Agent,负责收集日志并发到 Indexer。分两种:Universal Forwarder 很轻量,主要做数据收集;Heavy Forwarder 有额外的处理能力,可以在发送前对数据做过滤和脱敏。
Indexer(索引器)------ Splunk 的"胃",把收到的原始数据解析、切分、打标签、建索引。Indexer 有四个阶段:Hot(热数据,正在写入)→ Warm(温数据,近期的)→ Cold(冷数据,较老的)→ Frozen(冻结,归档或删除)。
Search Head(搜索头)------ 分析师直接打交道的界面,在这里写 SPL 查询、做仪表盘、设告警、出报告。
SPL 查询语言 --- 实战示例
SPL(Search Processing Language)是 Splunk 的查询语言,类似 SQL 但专门为日志数据设计。SPL 命令分三类:Search 命令用于过滤数据,Transforming 命令用于修改和聚合数据,Visualization 命令用于展示结果。
场景 1:查找暴力破解攻击
spl
index=security sourcetype=win_security EventCode=4625
| stats count by src_ip, user
| where count > 20
| sort -count
这段查询意思是:在安全日志里找所有登录失败事件(Windows 事件代码 4625),按来源 IP 和用户名统计次数,只显示超过 20 次的,按次数倒序排列。如果一个 IP 对某个账号失败了 200 次,大概率就是暴力破解。
场景 2:检测异常数据外传
spl
index=network sourcetype=firewall action=allowed dest_port=443
| stats sum(bytes_out) as total_bytes by src_ip
| where total_bytes > 1073741824
| sort -total_bytes
意思是:找出通过 443 端口(HTTPS)向外发送数据超过 1GB 的内部 IP,这可能是数据泄露。
场景 3:用 timechart 做趋势分析
spl
index=web sourcetype=access_log status=500
| timechart span=1h count by host
按小时统计每台 Web 服务器返回 500 错误的次数,生成时间趋势图,一眼就能看出哪台服务器什么时间段出了问题。
Splunk 六大核心功能(记忆口诀:"搜、警、盘、报、查、富")
搜(Search)------ 用 SPL 对海量日志进行实时搜索和过滤,这是一切的基础。
警(Alert)------ 告警监控数据中的特定条件,当阈值被触发时自动执行响应动作。比如安全团队设定一条告警,如果 10 分钟内同一 IP 出现超过 20 次 SSH 登录失败就发邮件通知 SOC。
盘(Dashboard)------ 把搜索结果做成实时可视化仪表盘,用图表、表格、地图等方式呈现。管理层看的是总览型 dashboard,分析师看的是细节型 dashboard。
报(Report)------ 定时生成合规报告,比如每周自动输出"Top 10 被封锁的 IP"报告给安全经理。
查(Lookup)------ Lookup 是用外部文件(比如 CSV)来丰富数据,为搜索结果添加额外上下文信息。比如你有一份"IP 地址 → 部门名称"的对照表,Lookup 可以在查询结果里自动把 IP 转成对应的部门。
富(Enrichment / Knowledge Objects)------ Knowledge Objects 包括 Fields(字段定义)、Event Types(事件分类)、Lookups(数据丰富)等,它们是可复用的实体,增强数据上下文和搜索效率。
企业实际应用案例
案例 1:澳洲某银行 --- 实时欺诈检测。 银行把所有 ATM 交易日志、网银登录日志、信用卡交易日志接入 Splunk。设置关联规则:如果一张信用卡在 30 分钟内从两个不同国家出现交易,立即触发 Critical 告警。SOC 分析师收到告警后在 Splunk 里用 SPL 追查这张卡最近 24 小时的所有交易记录、登录 IP、设备指纹,5 分钟内确认是盗刷还是客户本人在旅行。
案例 2:昆士兰医疗系统 --- 合规监控。 澳洲医疗机构需要遵守 Privacy Act 和 My Health Records Act,Splunk 自动监控谁在什么时间访问了哪些病人记录,生成审计日志。如果一个护士账号在非排班时间查看了不属于自己科室的病人信息,自动触发告警。
案例 3:矿业公司 --- IT 运维监控。 西澳某矿业公司用 Splunk 监控采矿设备的 IoT 传感器数据和内部 IT 系统日志。当 VPN 连接矿场的网络延迟超过阈值时 Splunk 自动告警,运维团队可以在 dashboard 上实时看到全澳所有矿场的网络健康状况。
案例 4:电商平台 --- 业务分析。 Splunk 不仅用于安全,也用于业务。分析 Web 服务器的 access log,实时监控网站性能(响应时间、错误率),大促期间在 dashboard 上看每秒订单量、支付成功率、库存变化。
澳洲面试 Splunk 常见问题
Q1: Explain the main components of Splunk architecture.
答题模板:说 Forwarder → Indexer → Search Head 三层架构,每层的职责,再补一句 Deployment Server 用于集中管理配置。
Q2: What is SPL and give me an example of a query you've written.
SPL 是 Splunk 的查询语言,用于搜索、过滤和分析机器数据,支持 140+ 命令进行统计分析、过滤和转换。然后给一个真实例子,比如上面的暴力破解检测查询。
Q3: How would you reduce false positives in Splunk alerts?
答题思路:调优告警规则(加白名单、缩小时间窗口、提高阈值)、用 Lookup 丰富上下文(比如排除已知的扫描器 IP)、用 Splunk 的机器学习工具包做异常检测模型,超越静态规则来识别可疑行为。
Q4: What is the difference between stats, eventstats, and transaction?
stats 生成汇总统计并只返回聚合结果;eventstats 类似但把统计值附加到每条事件上保留上下文;transaction 把相关事件分组成单个结果,常用于分析用户会话或多步骤流程。
Q5: How does Splunk handle data ingestion and indexing?
Splunk 分三个阶段处理数据:Data Input 阶段从多种来源摄入原始数据并切分成 64K 块,Data Storage 阶段包括 Parsing(解析)和 Indexing(索引),最后是 Data Searching 阶段。
Q6: What is notable event grouping in Splunk ES?
Notable event grouping 把相关的安全告警合并成一个事件,减少告警疲劳,分析师可以一起审查关联事件而不是逐个处理。
Splunk 数据处理流水线(面试必考)
SPL 搜索流水线是 Splunk 处理查询时的内部执行流程。命令从左到右依次执行,每个命令接收上一个命令的输出作为输入。记住三类命令:
Generating commands(生成数据)→ Filtering commands(过滤数据)→ Transforming commands(转换聚合)
尽早过滤数据是关键的性能优化原则------在查询开头就用 index 和 sourcetype 过滤,避免不必要的数据进入后续处理。面试里一定要提这一点。