日志分析利器Splunk的搭建、使用、破解

博主对splunk的了解不多,博主的使用目的是为了同步,分析日志。当初的搭建也是为了公司申请牌照需要日志服务器分析日志,顺便自己也对这方面感兴趣就买了本书看了看搭建玩的,后来检查来了博主也给他们演示了下,splunk到底有多强大,博主现在也玩了个大概,具体的命令使用也只算初级水平,只能说很强大,至于splunk的原理还有更多功能感兴趣就去splunk官网或是百度查查看看。
     Splunk 分为免费 Free 版和企业 Enterprise 版。 SplunkFree 专供个人使用。 SplunkEnterprise 添加了支持多用户和分布式部署的功能,并包括警报、基于角色的安全、单一登录、预设的 PDF 交付以及对无限数据量的支持。 你可以使用浏览器访问 http://zh-hans.splunk.com/download 下载最新版的 Splunk .如果你是第一次访问 Splunk 网站,需要先注册一个 Splunk 用户,默认下载的是 60 天 Enterprise 试用版, 60 天试用之后将自动转化为 Free 版,转化位 Free 版后每日处理的日志量最高位 500M 。
     对于传统的syslog日志同步,博主只能说它们已经out了,算不上一种高大上的方法,awk,grep,sed这些运维人员自己玩玩就好了。splunk提供日志实时同步,客户只需要在可视化web 引擎上输入关键字就可以查询,也可以保存上次查询的命令,也可以选择查询时间的范围,最主要的是可以建立每个应用的索引,不至于应用日志混乱。
下载软件包:
splunkserver软件包 http://pan.baidu.com/s/1dFLOUkx  密码:2xxy
splunkforward插件 http://pan.baidu.com/s/1sl01KfF  密码:n7op
    博主的软件包是splunk-6.2.5-272645-linux-2.6-x86_64的rpm包,官网已经出6.2.7的,虽然算不上最新的,但是足够使用,感兴趣可以去官网下载。

splunk server搭建
安装server软件包:

#rpm -ivh splunk-6.2.5-272645-linux-2.6-x86_64.rpm
默认的安装路径在/opt/splunk目录下;
#cd /opt/splunkforwarder/bin
./splunk enable boot-start    生成/etc/init.d/splunk 启动脚本,以后就可以这样启动了
  
#netstat -antple | grep splunk
tcp        0      0 0.0.0.0:8089                0.0.0.0:*                   LISTEN      0          10651      1582/splunkd       
tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      0          11711      1582/splunkd
    splunk启动两个端口8000和8089,8000为server web端口,8089位splunkforward端口,同步日志时使用。
    浏览器输入:http://192.168.1.33:8000/  
默认的用户密码: admin  changme

添加接收数据同步的端口,首页默认的端口9997就好:

添加一个接收数据端口

添加默认的端口就好9997

#splunk server端操作
建立索引,每个索引代表一个应用的日志:

博主的splunk都是之前建好的,splunk已经在使用了,下面是一些应用日志的索引。

splunk forward的安装:
rpm -ivh splunkforwarder-6.2.5-272645-linux-2.6-x86_64.rpm

cd /opt/splunkforwarder/bin
#启动splunk
./splunk start
#自启动splunk
./splunk enable boot-start    生成/etc/init.d/splunk 启动脚本

#客户端添加转发器已经连接到接收器
./splunk add forward-server 192.168.160.98:9997  //node的ip,也就是splunk forward的ip,也就是n多个你想把日志同步到splunk server服务器的ip
 
#客户端查看可用splunk接收器列表
./splunk list forward-server

#客户端让转发器收集/var/log/messages日志,绝对路径。

./splunk add monitor /var/log/messages  //客户端转发messages的日志到splunk server

./splunk add monitor /var/log/nginx/mfront_access.log  //

查看splunk forward的配置转发文件,可以看到很多,要是命令运行完里面没有,就自己手动写下。
# pwd
/opt/splunkforwarder/etc/apps/search/local

# ls
inputs.conf

#cat inputs.conf
[monitor:///var/log/nginx/mfront_access.log] //日志的路径
index = nginx     //索引为nginx
sourcetype = mfront_access   //数据类型
disabled = false    //同步索引的状态为开启

[monitor:///var/log/nginx/pmout_access.log]
index = nginx
sourcetype = pmout_access
disabled = false

[monitor:///var/log/nginx/pm_access.log]
index = nginx
sourcetype = pm_access
disabled = false

[monitor:///var/log/nginx/pmout_error.log]
index = nginx
sourcetype = pmout_error
disabled = false

[monitor:///var/log/messages]
index = messages
disabled = false

[monitor:///var/log/secure]
index = secure
disabled = false

重启下fowrward的服务:
# /etc/init.d/splunk restart

重启下splunk server的服务:
# /etc/init.d/splunk restart

splunk服务日志查询:nginx日志的查询

防火墙日志的查询:(火墙日志同步,只需在火墙上面syslog选项通填写splunk服务器的ip和端口就ok)

Splunk字段的提取:

(提取关键字段,做日志分析,制表等等。splunk同步过来的日志都是一段,日志分析只需要关键字,所以要提取字段)

做关键字段提取,提取完成,下一步,下一步就完成了,一次可以提取N个字段。

提取字段后的搜索,比如火墙挡住的源ip,目的ip,类型等等,(table制表,reip,sourceip...是我提取字段的命名)

Splunk破解:

前面提到Splunk是收费的,免费的只有500M的空间,怎么破解呢?linux软件包的破解无非就是重新安装,但是里面的索引怎么办,不可能天天重新装吧,可以想办法卸载时把索引过滤掉,下面是我这块的脚本,感兴趣的看下:

这个脚本是破解脚本:(里面的路径可以自己改改,索引也是一样)

cat splunk.sh        //这个脚本是自己写的,官网可是没有的

#!/bin/bash
#/opt/splunk/bin/splunk start --accept-license
#/opt/splunk/bin/splunk enable boot-start
echo $(date "+%F %T")
warns=$(/opt/splunk/bin/splunk list licenser-messages -auth admin:changeme |grep license_window -A4|grep WARN|wc -l)
#上句中 admin:changeme 改成你的用户密码
if [ $warns -gt 3 ];then
    installflag=1
    /opt/splunk/bin/splunk stop
    rpm -e splunk-6.2.5-272645
    ls /opt/splunk/ |egrep -v "etc|var" |xargs rm -rf
    cd /opt/splunk/var/lib/splunk/
    rm -rf `ls /opt/splunk/var/lib/splunk/|grep -vE "access|java|tomcat"`
    #上一句中access|java|tomcat 修改为你自己建的索引名称
    rpm -ivh /opt/sh/splunk-6.2.5-272645-linux-2.6-x86_64.rpm
    expect <<EOF
spawn /opt/splunk/bin/splunk start
expect ""
send "q\r"
expect ""
send "y\r"
expect ""
send "y\r"
expect eof
EOF
    /opt/splunk/bin/splunk enable boot-start
    /opt/splunk/bin/splunk start
    echo current warns $warns  overload
    echo "Reinstall is successful!"
else
    echo current warns $warns, or password is wrong!
fi

python /opt/sh/check_status.py

splunk关闭服务,开启服务,重装服务的检查脚本。

cat   check_status.py

#!/usr/bin/python
#coding=utf-8
from email import Utils
from email.MIMEText import MIMEText
import smtplib
import socket
def mail(sender, subject, body):
    to_list = [‘[email protected]‘, ‘[email protected]‘,‘[email protected]‘‘]
    mail_host = "smtp.exmail.qq.com"
    mail_user = "[email protected].com"
    mail_pass = "xxxxxxxxxxxxxxxxxxx"
    me = "splunk" + "<" + mail_user + ">"
    #msg = MIMEText(body.decode(‘utf8‘).encode(‘gb2312‘), ‘html‘, ‘gb2312‘)
    msg = MIMEText(body)
    #msg[‘Subject‘] = subject.decode(‘utf8‘).encode(‘gb2312‘)
    msg[‘Subject‘] = subject
    msg[‘From‘] = me
    msg[‘To‘] = ";".join(to_list)
    msg[‘Date‘] = Utils.formatdate(localtime=1)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user, mail_pass)
        s.sendmail(me, to_list, msg.as_string())
        s.close()
        return True
    except Exception, e:
        print str(e)
        return False
   
def check_server(address, port):
        s = socket.socket()
        print "Attempting to connect to %s on port %s" %(address, port)
        try:
                s.connect((address, port))
                print "Connected to %s on port %s" % (address, port)
                return True
        except socket.error, e:
                print "Connection to %s on port %s failed: %s" % (address, port, e)
                return False

if __name__ == ‘__main__‘:
    if check_server(‘127.0.0.1‘, 9997):
        print "9997 up"
    else:
        mess = "9997 down"
        mail(sender="", subject=mess, body=mess)
    if check_server(‘127.0.0.1‘, 8000):
        print "8000 up"
    else:
        mess = "8000 down"
        mail(sender="", subject=mess, body=mess)

将脚本写到计划任务内,每天晚上或者周末运行就ok了,到此splunk就玩完了,有问题可以找我一块玩。

时间: 2024-10-14 19:53:10

日志分析利器Splunk的搭建、使用、破解的相关文章

大数据时代的全能日志分析专家--Splunk安装与实践

大数据时代的全能日志分析专家 --Splunk安装与实践 (  此文已刊发在<网络运维与管理>杂志  ) 0.背  景 随着大家对网络安全意识的提高,企业网管理人员,必须对IT基础设置进行监控及安全事件的管理,管理数据的数量和种类非常巨大,那么就需要有一款能否分析各种日志数据的工具,经过长期实践,为大家推荐Splunk这么一款全能型分析工具. 1.Splunk简介 Splunk是一款功能强大的.记录详细的日志分析软件,Splunk是基于原始日志数据(Raw data)内容建立索引,保存索引的同

开源日志分析系统ELK平台搭建部署

开源日志分析系统ELK平台搭建部署 一.前言 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总. 集中化管理

日志分析与splunk浅谈

难易程度:★★★ 阅读点:linux;python;web安全;日志分析; 文章作者:xiaoye 文章来源:i春秋 关键字:网络渗透技术 前言 linux下的日志分析对企业来说非常重要,对我们分析pv或者入侵事件溯源都有很大的价值,今天来简单谈一谈日志分析方向的利器splunk,splunk应该是站在日志分析应用的顶端了,应用广泛功能强大,本文只能简单说说其安装以及应用.p.s:本文环境是自己虚拟机搭建的,不是生产环境,仅仅做演示. 一.Nginx + uWSGI + Python + Dja

nginx日志分析利器GoAccess(转)

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

nginx日志分析利器GoAccess

面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记忆能力以外,唯一的作用只有装A或者装C了. 对于nginx日志分析,有很多工具,衡量好坏的标准大概就是三快:安装快,解析快,上手快.满足这三点的goaccess确实是居家必备良药. 话说这个标题其实有点委屈GoAccess了,它是一个日志分析工具,并不只是为nginx使用的.你也可以用它来分析apa

日志分析工具Splunk破解(4天重装)

#!/bin/bash echo $(date "+%F %T") warns=$(/opt/splunk/bin/splunk list licenser-messages -auth username:password |grep license_window -A4|grep WARN|wc -l) if [ $warns -gt 3 ];then installflag=1 /opt/splunk/bin/splunk stop rpm -e splunk-6.1.3-2206

大数据时代日志分析平台ELK的搭建

A,首先说说ELK是啥,  ELK是ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.Logstash是数据源,ElasticSearch是分析数据的,Kiabana是展示数据用的 B,开始搞 1,安装 Logstash 依赖包 JDK wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.tar.gz 要是没有wget可以yum -y install wge

CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源.分布式.restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分析功能的搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据.它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等.Elasticsearch集群采用主从模式,通过获取Logstash客户端收集来的日志信息同步到Elastic

实时海量日志分析系统的架构设计、实现以及思考

1 序 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈. 由于需要对日志进行实时分析,所以Storm是我们想到的首个框架.Storm是一个分布式实时计算系统,它可以很好的处理流式数据.利用storm我们几乎可以直接实现一个日志分析系统,但是将日志分析系统进行模块化设计可以收到更好的效果.模块化的设计至少有两方面的优点: 模块化设计可以使功能更加清晰.整个日志分析系统可以分