多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Splunk 部署手册

Splunk 部署手册 本文使用 Ubuntu 搭建1. Splunk 简介Splunk 是一款企业级的统一安全与可观测性平台主要用于实时收集、索引、搜索、监控和分析海量机器生成的大数据核心做三件事采集—— 从日志文件、网络、数据库等来源收集数据索引—— 把原始数据解析、分字段、建立可搜索的索引搜索与可视化—— 用 SPL 查询语言分析生成报表、告警、仪表盘。几个核心概念概念说明事件Event一条日志记录是 Splunk 处理的基本单位索引Index存放事件的分区类似目录/文件夹SPLSplunk 查询语言Search Processing Language数据管道数据经过 Input输入→ Parsing解析→ Indexing索引→ Search搜索四个阶段2. 配置要求2.1 操作系统Ubuntu 16.04 LTS 及以上推荐 22.04 / 24.04 LTSLinux 内核 3.x 以上⚠️仅支持 x86_64amd64架构不支持 ARM含 Apple Silicon。2.2 硬件要求三档档位CPU内存磁盘适用场景官方参考12 物理核 / 24 vCPU2GHz12 GB≥250 GB生产 / 20GB 天级日志量虚拟机推荐 ✅4 vCPU8 GB60~100 GB测试、学习运行流畅最低能跑2 vCPU4 GB≥60 GB只够装起来体验较卡内存是最大瓶颈Splunk 是 Java C 混合进程8 GB 才比较舒服。磁盘别省安装本体约 3 GB索引数据会持续增长任何实例须始终保留≥5 GB 空闲空间。文件系统用默认ext4即可。2.3 端口端口用途8000Splunk Web 管理界面8089管理 API / 数据接收9997分布式下 Forwarder 转发数据到 Indexer单机用不到2.4 License注册 Splunk 账号下载安装包自带60 天企业试用 License到期后可切换Free 版每天 500 MB 数据量但是会少一些功能。3. Splunk 架构3.1 数据流日志源(文件/网络/数据库) │ ▼ Forwarder ← 采集与转发数据 │ ▼ Indexer ← 解析、分字段、建立索引 │ ▼ Search Head ← 搜索、分析、可视化3.2 核心组件组件职责Universal Forwarder轻量采集器部署在数据源上采集并转发日志Indexer索引器解析数据、建立索引、存储数据Search Head搜索头执行 SPL 搜索、生成仪表盘与报表3.3 单机 vs 分布式维度单机Standalone分布式Distributed角色采集、索引、搜索都在一台机器Forwarder / Indexer / Search Head 分离扩展性只能换更强服务器纵向加机器即可横向高可用单点宕机即中断可做集群冗余复杂度低高典型日志量 几十 GB/天几百 GB ~ TB 级/天本手册聚焦单机部署。单机里的角色以后可无缝拆到独立机器上升级到分布式。4. 单机部署Ubuntu4.1 下载当前版本最新为 Splunk Enterprise10.610.6.0.52026-09-30 发布版本号已改为四段式官网下载页也提供10.4.2。学习环境两者皆可下面示例用 9.4.0直链已实测可用。方式一命令行直链下载无需登录推荐wget-Osplunk.tgzhttps://download.splunk.com/products/splunk/releases/9.4.0/linux/splunk-9.4.0-6b4ebe426ca6-linux-amd64.tgz直链由「版本号 build hash」组成例如9.4.06b4ebe426ca6。要下载其他版本替换对应的版本号和 hash 即可可从官网下载页文件名看到.tgz也可换成.deb。方式二官网页面下载到 https://www.splunk.com/en_us/download/splunk-enterprise.html 注册/登录后选择 Linux 平台的.deb或.tgz安装包下载。4.2 安装方式 Adeb 包推荐sudodpkg-isplunk-9.x.x-xxxxxxxxxxxx-linux-2.6-amd64.deb# 默认安装目录/opt/splunk方式 Btgz 绿色包sudotarxvzf splunk-9.x.x-xxxxxxxxxxxx-linux-2.6-amd64.tgz-C/opt4.3 首次启动sudo/opt/splunk/bin/splunk start --accept-license首次启动时系统会提示设置管理员账号与密码密码需至少 8 位 ASCII 字符按提示完成输入即可。4.4 设置开机自启可选sudo/opt/splunk/bin/splunkenableboot-start -systemd-managed1--accept-license4.5 访问与登录浏览器打开http://虚拟机IP:8000用刚才设置的管理员账号登录进入首页即表示部署成功。5. 数据接入推荐使用命令行方式5.1 三种方式对比Splunk 官方Getting Data In把接入分三类对应「添加数据」页的三个按钮方式数据在哪特点上传你自己电脑上的文件一次性导入练手用监视Splunk 所在机器的文件/目录、TCP/UDP 端口、脚本持续采集安全告警靠它转发其他机器装 Universal Forwarder生产环境的标准做法5.2 上传文件入门练手设置 → 添加数据 →上传→ 选文件「设置来源类型」页保持自动检测可预览事件格式「输入设置」页选择目标索引可点「新建索引」见 5.4检查 → 提交 → 开始搜索。提示可以先在电脑上新建一个test.log随便粘十几行带时间戳、INFO/ERROR 字样的日志上传到索引test方便后面练搜索和告警。5.3 监视文件持续采集安全告警的数据基础以监控/var/log/auth.logSSH/登录日志为例设置 → 添加数据 →监视→ 选「文件和目录」路径填/var/log/auth.log监视方式选「持续监视」Continuously Monitor来源类型填linux_secure官方对认证日志的推荐值会自动提取 action、src_ip、user 等字段「输入设置」页新建索引os提交。完成后SSH 登录虚拟机时故意输错几次密码再搜indexos Failed password就能看到事件——告警练习就有了真实数据。等价命令行方式编辑/opt/splunk/etc/system/local/inputs.conf[monitor:///var/log/auth.log] index os sourcetype linux_secure保存后重启sudo /opt/splunk/bin/splunk restart --run-as-root。5.4 索引详解索引是什么Splunk 存数据的分柜子数据按指定索引落盘搜索时用indexxxx限定范围。系统自带的几个main默认不指定就进这、history搜索历史、summary汇总索引以及_internal、_auditSplunk 自身日志。为什么不建议全塞 main保留策略没法分开管安全日志留 1 年、练习数据留 7 天混一起只能一刀切权限没法分索引可按角色控权搜索性能indexos error只扫一个柜子比扫全库快清理互不干扰删一个索引不碰别的数据。新建索引各字段索引名称小写字母数字搜索时index名称索引数据类型事件普通日志选这个或指标纯数值监控数据。日志全是「事件」起始路径 / 冷路径 / 解冻路径热温/冷/归档数据的落盘位置学习环境留空用默认即可数据完整性检查对数据切片算哈希防篡改学习环境可 Disable整个索引最大大小默认 500 GB建议改成 10 GB 防止撑爆磁盘热/温/冷数据桶最大大小auto不用动。事件 vs 指标怎么选能用一句话描述发生了什么的是事件如10:00 用户 allen 登录成功只是读数/计数器/仪表值的是指标如10:00 CPU35%。日志全部选事件指标是给 collectd/statsd 这类监控数据用的。6. 搜索入门这里我们手动上传一个 test.log 文件测试内容如下2026-10-07 09:00:01 INFO app1 server started 2026-10-07 09:00:05 INFO app1 connected to db 2026-10-07 09:01:23 ERROR app2 connection timeout 2026-10-07 09:02:10 WARN app1 slow query detected 2026-10-07 09:03:45 ERROR app2 failed to send email 2026-10-07 09:05:11 INFO app1 user login ok 2026-10-07 09:06:40 ERROR app1 disk space low 2026-10-07 09:08:02 WARN app2 retry attempt 3 2026-10-07 09:10:55 ERROR app2 connection timeout 2026-10-07 09:12:30 INFO app1 backup finished进「搜索和报表」页时间范围选「所有时间」依次试把indextest换成你自己的索引indextestindextest errorindextest|tophostindextest|stats countbysourcetype# 查询 test 索引按不同日志来源类型分别统计各自的事件条数indextest|timechart count前两条是过滤top看谁最多stats count by分类统计timechart出时间趋势图。这五条摸熟日常搜索就够用了。7. 告警7.1 创建流程告警三要素搜索 触发条件 触发动作。搜索页写好 SPL → 另存为Save As→告警告警类型计划Scheduled定时跑省资源推荐或实时Real-time触发条件结果数 N / 每条结果触发 / 自定义条件触发动作加入已触发告警入门、发邮件需先配 SMTP、webhook节流Throttle设置 N 分钟内不重复触发防止告警轰炸。验证设置 → 搜索、报表和告警找到告警点「立即运行」触发后在「活动 → 已触发告警」查看记录。7.2 安全告警常见示例以下示例基于indexosauth.logsourcetypelinux_secure和indextest练习日志。1. SSH 暴力破解10 分钟内同一 IP 失败 ≥5 次indexos sourcetypelinux_secureFailed password|stats countbysrc_ip|wherecount5或当 src_ip 字段没提取出来时使用indexosFailed password|rexfrom (?src_ip\d\.\d\.\d\.\d)|stats countbysrc_ip|wherecount5配置Scheduled每 5 分钟跑cron*/5 * * * *时间范围 -10m结果数 0 触发。2. 爆破成功登录先失败多次、随后登录成功indexos sourcetypelinux_secure(Failed passwordORAccepted password)|rexfrom (?src_ip\d\.\d\.\d\.\d)|rex(?actFailed|Accepted) password|statscount(eval(actFailed))asfails,count(eval(actAccepted))asokbysrc_ip|wherefails3ANDok1监测配置每 15 分钟*/15 * * * *时间范围 -30m结果数 0 触发失败→成功有过程跨度窗口要够大。3. 非工作时间登录早 7 点前、晚 10 点后indexos sourcetypelinux_secureAccepted password|evalhourstrftime(_time,%H)|wherehour7ORhour22监测配置每 30 分钟*/30 * * * *时间范围 -60m结果数 0 触发。想只在夜里跑可用 cron*/30 0-6,22-23 * * *。4. root 直接登录很多环境禁止indexos sourcetypelinux_secureAccepted password for root监测配置每 5 分钟*/5 * * * *时间范围 -10m结果数 0 触发root 登录高危要快发现。5. ERROR 告警用练习日志验证告警功能indextest ERROR|stats count监测配置每 10 分钟*/10 * * * *时间范围 -15m结果数 0 触发。6. 以后接 Windows 日志时的三个经典SPL 换成indexwineventlog EventCodexxx1102审计日志被清除可疑4740账户被锁定爆破迹象4732用户被加入管理员组权限提升监测时间怎么定通用原则越紧急跑得越勤高危root 登录、爆破5 分钟级一般 10~30 分钟低频不紧急非工作时间30 分钟~1 小时时间范围 ≥ 2 倍运行间隔5 分钟跑查 -10m15 分钟跑查 -30m避免漏掉两次运行交界的数据有前后关联的检测如失败→成功窗口要放大覆盖整个过程。8. 仪表盘仪表盘就是把搜索结果变成图表、拼到一个页面。两条路径8.1 最快路径从搜索直接生成面板搜索页写一个 SPL如indexos Failed password | timechart count点搜索框下方的「可视化」标签选图表类型柱状图/折线图/饼图点右上角「另存为 → 仪表盘面板」选「新建仪表盘」起名保存之后再加面板时选「已有仪表盘」。8.2 正规做法Dashboard Studio顶部导航「搜索和报表」→ 左侧「仪表盘」→「新建仪表盘」选Dashboard Studio新版推荐或 Classic「添加面板」→ 每个面板填 SPL、选图表类型拖拽布局、加标题保存。8.3 现成示例SSH 登录监控仪表盘三个面板都基于indexos面板 1 · 失败登录趋势折线图indexosFailed password|timechart count面板 2 · 失败登录来源 IP条形图indexosFailed password|rexfrom (?src_ip\d\.\d\.\d\.\d)|topsrc_ip面板 3 · 失败 vs 成功登录饼图indexos(Failed passwordORAccepted password)|rex(?actFailed|Accepted) password|stats countbyact8.4 图表类型怎么选timechart结尾 → 折线图/柱状图时间趋势top/stats count by结尾 → 条形图/饼图占比、排行stats count单一数值 → 单值大数字卡片。附常用命令速查sudo/opt/splunk/bin/splunk start --run-as-root# 启动sudo/opt/splunk/bin/splunk stop --run-as-root# 停止sudo/opt/splunk/bin/splunk restart --run-as-root# 重启sudo/opt/splunk/bin/splunk status --run-as-root# 查看状态
返回列表