Splunk Enterprise手册学习笔记

一、Splunk Enterprise概览

1.1.关于

Splunk Enterprise 是一款可以进行数据搜索、分析、可视化的软件,它从IT基础设施收集数据。它从网站、应用、探测器和各类设备吸收数据,当你定义数据源后,它会对数据流进行索引,将其解析为一系列单独的可见可搜索的事件。
大多数用户都是通过Splunk Web界面来链接splunk,并通过该界面来管理他们的部署,管理创建知识对象,执行搜索,创建核心和报告等等。你也可以使用命令行来管理自己的部署。
你可以通过使用apps来扩展自己的Splunk Enterprise来适应组织的不同需求,一个App集合了配置、知识对象、视图、和运行在Splunk平台上的仪表盘。安装以一个单点的Splunk Enterprise就可以同步运行多个apps。你可以在Splunkbase上查看可用的app,也可以在Splunk Developer构建自己的app。

1.2.主要特性

Splunk Enterprise主要有七大特性,其他的特性可以到Splunk Enterprise Page去查看
索引
Splunk Enterprise可以把组成IT基础设施的数据进行索引,你也能够从网站、应用、服务器、数据库、操作系统等更多硬件软件上获取数据,你的Splunk实例的最大的索引卷依赖于Splunk Enterprise license
要了解更多关于数据获取的请看这里Getting Data
Search
搜索是用户在Splunk中导航数据的主要方式。你能将搜索保存成一个报告,然后用它去激活仪表盘,搜索可以提供以下几方面的对数据的了解

  • 通过索引检索数据
  • 计算指标
  • 在滚动时间内通过特定的条件来搜索
  • 在数据中显示样式
  • 预测将来的动向

Alert
当历史和实时的搜索结果都满足配置时会有告警通知,可以配置告警来触发一些操作比如发送告警信息到期望的邮箱,寄送告警信息到RSS feed,或者执行自定义脚本,比如邮寄一个告警事件到syslog
Dashboards
仪表盘包括了各个模块的控制面板,比如搜索盒、fields、图表等。它通常用于连接保存的搜索和核心,显示完整的搜索结果和后台的实时数据。
Pivot
pivots指的是表、图表或者是通过Pivot Editor创建的可视化数据.Pivot Editor可以让用户将根据data model定义的属性映射到表、图表和可视化数据中去,同时不必使用[SPL](Searching Processing Langurage)来编写搜索语句来产生。Pivot可以保存为报告并加入到Dashboard中。
Reports
Splunk Enterprise允许你将searches和pivots保存为报告然后以面板的形式将报告添加到Dashbboards中,以某种特别设置的去执行报告,安排它们以某个间隔执行或者当搜索结果符合条件时设置一个预期的告警
Data Model
Data Model会对与一个或多个索引数据集合有关的特殊域知识进行编码,它能让Pivot Editor使用者创建报告和仪表盘,而且不需要设计searches来产生。

二、Splunk Enterprise安装

2.1.docker安装SplunK Enterprise

使用docker来安装需要满足如下需求:

  • x86架构
  • os kernel大于4.0,这里是指linux
  • docker version 大于17.06.02
  • overlay2的docker存储驱动

cat docker-compose.yml

splunk_linuxwt:
    restart: always
    image: splunk/splunk:latest
    container_name: splunk_linuxwt
    volumes:
        - /etc/localtime:/etc/localtime
        - /etc/timezone:/etc/timezone
    ports:
        - "8000:8000"   
    privileged: true
    environment: 
        SPLUNK_START_ARGS: --accept-license
        SPLUNK_PASSWORD: sino@bridge

docker-compose up -d启动容器,可以使用命令docker ps -a -f id=<container_name>来查看容器状态
这里的密码不能是纯数字,相关的密码策略可以参考这里Configure a Splunk password policy in Authentication.conf
这里有个问题一直没有得到解决,我本想在docker的yml文件里将docker内部的/opt/splunk映射出来,但是只有一部分文件和目录映射了出来,/opt/splunk下的etc和var这个两个目录确是空的,网上查找资料发现这和docker持久化的两种方式的区别有关,一种是bind,另外一种是volume,前者我使用的较多,它是将外部的文件或目录映射到docker内部,修改外部文件可以达到修改内部文件的目的,需要重启容器,后者是将内部的文件映射出来,但是修改外部的文件是没有办法达到修改docker内部文件的目的,这里我们使用的是官方的docker image,容器内部运行splunk使用的是非root用户,运行容器的用户也是非root用户,也不是splunk用户,如果我们想修改这两个目录的配置文件很不方便,会有权限的问题,我的解决办法:以官方镜像为基础,使用参数USER root自定义Dockerfile来构建新的镜像,这样我们就可以到容器中去创建修改文件,但是这有一个缺点,就是一旦重启容器就会使得修改的文件失效,这是由容器的特性所决定的,解决此问题的一个方法是创建Dokcerfile的时候就去将我们想修改的文件修改好再构建镜像总的来说这个办法不是很方便,故我们还是需要去完全自己定义一个Dockerfile来完成splunk的容器部署,下面我们就以Centos7为基础镜像来部署Splunk Enterprise,可惜最终失败了,最后我在docker hub上找到了具体的docker部署的文档,限于篇幅实在太长,后面专门学习,下面我们就在宿主机上来实现splunk的安装

2.2.二进制包安装

具体的安装操作参考官方文档二进制安装splunk以及如何去启动并设置管理员账号密码启动splunk
这里有我自己用脚本实现自定义一键安装splunk,该脚本可以自定义安装目录$SPLUN_HOME、管理员账号和密码,同时将Splunk执行文件加入环境变量