Splunk

简中官网文档)、GitHub

小小的书童 - 初学Splunk

splunk简介

splunk 简体中文版手册
Splunk - 日志分析软件 - 图1
Splunk 是面向云的日志搜索引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备(物理、虚拟和云中)生成的快速移动型计算机数据 。从一个位置搜索并分析所有实时和历史数据。使用 Splunking 处理计算机数据,可让您在几分钟内(而不是几个小时或几天)解决问题和调查安全事件。监视您的端对端基础结构,避免服务性能降低或中断。以较低成本满足合规性要求关联并分析跨越多个系统的复杂事件。获取新层次的运营可见性以及 IT 和业务智能。

功能特性

  1. 多平台支持
  2. 从任意源索引任意数据
  3. 从远程系统转发数据
  4. 关联复杂事件
  5. 专为大型数据构建
  6. 在整个数据中心扩展
  7. 提供角色型的安全性

    Splunk安装

    如果你是第一次访问Splunk网站,需要先注册一个Splunk用户,默认下载的是60天Enterprise试用版,60天试用之后将自动转化为Free版,
    转化位Free版后每日处理的日志量最高位500M。

    安装Splunk

  8. 确保/opt有足够的空间

  9. 安装Splunk ```shell [root@root rpms]# ls splunk-5.0.2-149561-linux-2.6-x86_64.rpm splunkforwarder-5.0.2-149561-linux-2.6-x86_64.rpm

[root@root rpms]# rpm -ivh splunk-5.0.2-149561-linux-2.6-x86_64.rpm [root@root rpms]# ls /opt/splunk/ bin lib share etc license-eula.txt splunk-5.0.2-149561-Linux-i686-manifest ftr openssl include README-splunk.txt

  1. <a name="DceEE"></a>
  2. ### 启动Splunk
  3. ```shell
  4. [root@root rpms]# /opt/splunk/bin/splunk start
  5. [root@root rpms]# /opt/splunk/bin/splunk status
  6. splunkd is running (PID: 9116).
  7. splunk helpers are running (PIDs: 9118).
  8. splunkweb is running (PID: 9167).

配置环境变量

  1. [root@root ~]# vim .bash_profile
  2. SPLUNK_HOME=/opt/splunk
  3. PATH=$PATH:$SPLUNK_HOME/bin
  4. export SPLUNK_HOME PATH
  5. [root@root ~]# source .bash_profile
  6. [root@root ~]# env |grep SPLUNK
  7. SPLUNK_HOME=/opt/splunk

设置开机启动

  1. [root@root ~]# splunk enable boot-start
  2. Init script installed at /etc/init.d/splunk.
  3. Init script is not configured to run at boot.
  4. [root@root ~]# chkconfig splunk --list
  5. splunk 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
  6. [root@root ~]# service splunk restart

登录Web管理界面

  1. [root@root ~]# firefox http://localhost:8000 &

Splunk - 日志分析软件 - 图2

Splunk授权使用

第一次安装好splunk后,Splunk会给你一个60天试用Enterprise版的授权,其允许最多每天500M的日志索引量,这个授权包含着我们的安装包中。
Enterprise授权提供如下Free版中没有的功能功能:

  1. 多用户使用和存取控制
  2. 分布式检索和数据路由
  3. 快捷管理部署及以tcp/http方式传输
  4. 告警和监控

60天后你将无法使用Enterprise版功能,splunk系统自动降级位Free版,如果你在试用后很喜欢splunk,并且需要更多的授权日志检索量,你可以向Splunk公司购买相应的授权。你付款成功后将收到由Splunk发送来的电子邮件,邮件中将以附件的形式发送授权文件,保存授权文件后,你可以进入splunk.uplooking.com页面添加授权文件来完成授权的动作。
打开浏览器后,登陆splunk,在右上角点击“管理器”,找到“系统”项目,点击其中的“授权”项目,点击“添加许可证”,找到你的授权文件,并添加入许可证组。

Splunk导入本地日志

添回数据

  1. 添加数据
  2. 选择数据类型(syslog)
  3. 使用此 Splunk 服务器上的任何 syslog 文件或目录
  4. 在索引之前预览数据(/var/log/messages)
  5. 继续
  6. 继续
  7. 保存

Splunk - 日志分析软件 - 图3
Splunk - 日志分析软件 - 图4
Splunk - 日志分析软件 - 图5
Splunk - 日志分析软件 - 图6

搜索日志示例

  1. source="/var/log/secure" 192.168.2.125
  2. source="/var/log/secure" AND 192.168.2.125
  3. source="/var/log/secure" AND 192.168.2.125 AND user=root NOT failures
  4. source="/var/log/secure" AND 192.168.2.125 AND user=root AND failures

Splunk导入远程Apache日志

Splunk server 192.168.2.126 端口9997:

  1. Splunk Forwarders 192.168.2.125

服务器端配置接收

  1. 管理器
  2. 数据(转发和接收)
  3. 接收数据(新增)
  4. 端口9997
  5. 保存注意iptables

Splunk - 日志分析软件 - 图7

客户端配置Forward

目标将该目录中的所有日志转发到Splunk server

  1. [root@web_splunk ~]# ls /var/log/httpd/
  2. access_log error_log

安装&启动

  1. [root@web_splunk rpms]# rpm -ivh splunkforwarder-5.0.2-149561.i386.rpm
  2. [root@web_splunk rpms]# /opt/splunkforwarder/bin/splunk enable boot-start
  3. [root@web_splunk rpms]# chkconfig splunk on
  4. [root@web_splunk rpms]# service splunk start

配置转发日志

  1. [root@web_splunk ~]# /opt/splunkforwarder/bin/splunk add forward-server 192.168.5.240:9997
  2. Splunk username: admin
  3. Password: changeme
  4. Added forwarding to: 192.168.2.126:9997.
  5. [root@web_splunk ~]# cd /opt/splunkforwarder/etc/system/local/
  6. [root@web_splunk local]# ls
  7. inputs.conf outputs.conf README server.conf
  8. [root@web_splunk local]# cat outputs.conf //转发目标地址
  9. [tcpout]
  10. defaultGroup = default-autolb-group
  11. [tcpout:default-autolb-group]
  12. server = 192.168.2.126:9997
  13. [tcpout-server://192.168.2.126:9997]
  14. [root@web_splunk local]# cat inputs.conf
  15. [default]
  16. host = web_splunk
  17. [monitor:///var/log/httpd] //要转发的日志
  18. [root@web_splunk ~]# service splunk restart

测试

注意:0字节的日志文件不会被转发我们多次访问网站后,日志会不断更新,splunk中也会不断更新。
Splunk - 日志分析软件 - 图8

Splunk应用扩展

Splunk作为一个可扩展的日志分析平台目前支持基于API的扩展,第三方可以基于Splunk的API编写Splunk应用扩展。通过Splunk 应用扩展,可以增强Splunk对数据的进一步分析。
安装Splunk应用可以通过Splunk的web界面,也可以通过Splunk的文本控制界面。
连接https://192.168.2.126:8000, 点选“管理器”: 点击“应用”,打开“应用管理界面”页:
Splunk - 日志分析软件 - 图9
此界面页中是已经安装的“应用”,包括Splunk默认应用。我们可以通过三种方式安装或创建新应用:

  1. 联机查找更多应用:如果你可以连接互联网,这是一个方便的安装应用方式
  2. 从文件安装应用:如果你无法连接互联网,可以通过这种方式将下载好的应用安装到Splunk中
  3. 创建应用:如果你是splunk第三方开发或是有自己的使用系统,可以通过这个选型创建自己的应用。

在此页中,我们可以控制“应用”的状态,可以通过web界面“启用”或“禁用”应用,并且配置应用的某些属性。
已经下载好的“Splunk for Unix and Linux”应用包,文件名为“unix.tar.gz”。可以通过“从文件安装应用”来安装它。
点击“应用管理界面”页里的“从文件安装应用”,进入“上载应用”页:
Splunk - 日志分析软件 - 图10
splunk服务重启完成后,会要求在浏览器中重新登陆。
登陆后在右上角的“应用”下拉菜单中,我们会发现一个新的应用“NIX 4.6”,点击“NIX 4.6”,进入“Splunk For Unix and Linux”应用。由于是第一次进入,我们需要去设置这个应用:
Splunk - 日志分析软件 - 图11
点击”Configure”,进入配置界面。
这个界面基本上需要我们改动的是在“Scripted Inputs:”中打开需要监控的项目,点击“Enable”就是打开,后面的“interval”是检查周期单位为秒。
按下图打开cpu、内存、I/O等检测项:
Splunk - 日志分析软件 - 图12
点击“save”保存。看到下面的界面就算安装正确了,点击“ok”:
Splunk - 日志分析软件 - 图13
接下来,等上3~5分钟后,查看“CPU”、“Memory”、“Disk”等下拉菜 单预定义的视图,通过它们分析splunk.master.com主机的运行状态。“Cpu Overview” 如下图所示:
Splunk - 日志分析软件 - 图14
“Memory Overview”如下图所示:
Splunk - 日志分析软件 - 图15

实例:Splunk Unix 异地性能监视应用

从运维的角度来讲,我们需要收集所以服务器的运行状态,并且将这些性能状态数据汇总起来。
接下来我们需要配置其他主机上的Splunk应用来转发其性能数据,并且在192.168.2.126 上汇总它们。
下载“Splunk for Unix and Linux technology add-on”应用文件,并且放置在web.master.com服务上,应用文件名为“Splunk_TA_nix.tar.gz”
“Splunk for Unix and Linux technology add-on”,这个应用并不安装在splunk.master.com主机上,而是安装在需要转发数据的服务器上,例如:web.master.com 服务器,转发服务器需要安装Splunk Forwarder,并且允许转发数据送达Splunk服务器。

被监控端

安装

  1. # tar xvzf Splunk_TA_nix.tar.gz -C /opt/splunkforwarder/etc/apps
  2. # chown splunk.splunk /opt/splunkforwarder/etc/apps/Splunk_TA_nix –R

配置

  1. # mkdir /opt/splunkforwarder/etc/apps/Splunk_TA_nix/local
  2. # cp /opt/splunkforwarder/etc/apps/Splunk_TA_nix/default/inputs.conf
  3. /opt/splunkforwarder/etc/apps/Splunk_TA_nix/local
  4. inputs.conf 文件从default目录下拷贝到local目录下,然后编辑inputs.conf文件。
  5. 将你需要转发的数据项disabled = 1改为disabled = 0
  6. :%s/disabled = 1/disabled = 0
  7. # Copyright (C) 2005-2011 Splunk Inc. All Rights Reserved.
  8. [script://./bin/vmstat.sh]
  9. interval = 60
  10. sourcetype = vmstat
  11. source = vmstat
  12. index = os
  13. disabled = 0s
  14. [script://./bin/iostat.sh]
  15. interval = 60
  16. sourcetype = iostat
  17. source = iostat
  18. index = os
  19. disabled = 0
  20. [script://./bin/ps.sh]
  21. interval = 30
  22. sourcetype = ps
  23. source = ps
  24. index = os
  25. disabled = 0
  26. [script://./bin/top.sh]
  27. interval = 60
  28. sourcetype = top
  29. source = top
  30. index = os
  31. disabled = 0
  32. [script://./bin/netstat.sh]
  33. interval = 60
  34. sourcetype = netstat
  35. source = netstat
  36. index = os
  37. disabled = 0
  38. [script://./bin/protocol.sh]
  39. interval = 60
  40. sourcetype = protocol
  41. source = protocol
  42. index = os
  43. disabled = 0
  44. [script://./bin/openPorts.sh]
  45. interval = 300
  46. sourcetype = openPorts
  47. source = openPorts
  48. index = os
  49. disabled = 0
  50. [script://./bin/time.sh]
  51. interval = 21600
  52. sourcetype = time
  53. source = time
  54. index = os
  55. disabled = 1
  56. [script://./bin/lsof.sh]
  57. interval = 600
  58. sourcetype = lsof
  59. source = lsof
  60. index = os
  61. disabled = 0
  62. [script://./bin/df.sh]
  63. interval = 300
  64. sourcetype = df
  65. source = df
  66. index = os
  67. disabled = 0
  68. # Shows current user sessions
  69. [script://./bin/who.sh]
  70. sourcetype = who
  71. source = who
  72. interval = 150
  73. index = os
  74. disabled = 1
  75. # Lists users who could login (i.e., they are assigned a login shell)
  76. [script://./bin/usersWithLoginPrivs.sh]
  77. sourcetype = usersWithLoginPrivs
  78. source = usersWithLoginPrivs
  79. interval = 3600
  80. index = os
  81. disabled = 1
  82. # Shows last login time for users who have ever logged in
  83. [script://./bin/lastlog.sh]
  84. sourcetype = lastlog
  85. source = lastlog
  86. interval = 300
  87. index = os
  88. disabled = 0
  89. # Shows stats per link-level Etherner interface (simply, NIC)
  90. [script://./bin/interfaces.sh]
  91. sourcetype = interfaces
  92. source = interfaces
  93. interval = 60
  94. index = os
  95. disabled = 0
  96. # Shows stats per CPU (useful for SMP machines)
  97. [script://./bin/cpu.sh]
  98. sourcetype = cpu
  99. source = cpu
  100. interval = 30
  101. index = os
  102. disabled = 0
  103. # This script reads the auditd logs translated with ausearch
  104. [script://./bin/rlog.sh]
  105. sourcetype = auditd
  106. source = auditd
  107. interval = 60
  108. index = os
  109. disabled = 1
  110. # Run package management tool collect installed packages
  111. [script://./bin/package.sh]
  112. sourcetype = package
  113. source = package
  114. interval = 3600
  115. index = os
  116. disabled = 0
  117. [script://./bin/hardware.sh]
  118. sourcetype = hardware
  119. source = hardware
  120. interval = 36000
  121. index = os
  122. disabled = 0

被监控端重启服务

保存文件后,需要重新启动splunk forwarder 服务:

  1. # /opt/splunkforwarder/bin/splunk restart

如果你的配置一切正常,你会在http://splunk.uplooking.com:8000上,“*NIX 4.6”应用页上看到“主机”部分新增了“web”服务器。
在“CPU by Host”标签页中,将看到两台主机cpu数据信息如下图示:
Splunk - 日志分析软件 - 图16
Splunk - 日志分析软件 - 图17
在“Memory by Host”标签页中,我们将看到两台主机内存数据信息如下图示:Splunk - 日志分析软件 - 图18
远方的风景走近了,就是自己现在的生活; 现在的生活放远了,就是别人眼中的风景!