Splunk学习笔记
-
简述
-
Splunk的中文学习文档不多,下面的笔记参考了下面两个中文教程,以及splunk的英文官方帮助文档。
-
做这个学习的本源是期望实现如下功能:在一个监控多台服务器系统负载的仪表板上,点击某一台服务器的曲线,根据点击对应的时间,以及对应的服务器名称,自动生成一个页面,该新页面能够反映该服务器在对应时间点占用系统资源top5的进程信息。
-
中文教程链接:http://www.tuicool.com/articles/zErQFnrhttp://www.tuicool.com/articles/VrUneif
-
英文官方帮助文档:http://docs.splunk.com
-
Splunk是一款B/S架构的监控软件,服务器端根据查询流量来收费。监控节点需要安装Splunk Universal Forwarder,即通用转发器,无UI界面,免费,将被监控日志内容推送到服务器端,服务器端再进行查询,过滤,可视化操作。
-
-
安装
-
在虚拟机上进行调试。准备两台虚拟机,能够连接外网,用于下载代码包,相互能够ping通,有各自ip,配置好光盘yum源,iptables -F清空防火墙规则,关闭selinux。
-
PC1配置为服务器端,ip为192.168.75.128。PC2为客户端,ip为192.168.75.129
-
PC1上安装服务器端。
-
tar -zxvf splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt 解压缩到/opt下
-
Splunk的可执行程序在/opt/splunk/bin下,在该目录下调用常用CLI命令
-
./splunk start
-
./splunk start --accept-license 自动接收许可
-
./splunk restart
-
./splunk status
-
./splunk version
-
-
敲入命令./splunk start --accept-license启动splunk
-
敲入命令./splunk enable boot-start开机自启
-
Splunk安装之后开启8000端口,可以如下方式访问 firefoxhttp://192.168.75.128:8000
-
默认账号名和密码为admin changeme
-
Ps -ef | grep splunk查看
-
PC2上安装客户端,通用转发器
-
Tar -zxvf splunkforwarder-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt
-
切换到/opt/splunkforwarder/bin,执行./splunk start --accept-license
-
./splunk show splunkd-port 查看端口,需要输入账号名和密码,admin changeme
-
-
安装后的配置
-
在PC1上,setting---server setting---general settings
-
-
PC1上setting---forwarding and receiving上添加一个监听端口9997
-
-
【实例】监控客户端审计日志
-
PC1上添加一条index。敲入命令./splunk add index linuxaudit,需要重启生效
-
PC2上敲入命令./splunk list monitor,可以查看到监控的目录和文件。这里是默认的监控目录和文件。
-
PC2上敲入命令./splunk add monitor /var/log/audit/audit.log -index linuxaudit添加一条index,和a项对应
-
PC2上敲入命令./splunk add forward-server 192.168.75.128:9997添加转发的目的服务器ip和端口
-
在PC1上可以如下搜索到审计日志的内容
-
-
【实例】监控apache访问日志
-
在PC1得web上setting---indexes添加一条index,叫做apache_data
-
在PC2上vim /opt/splunkforwarder/etc/apps/search/local/inputs.conf,加入[monitor:///etc/httpd/logs/access_log]
disabled = false
index = apache_data -
在PC1的web上新搜索,可以看到PC2的apache访问日志内容
-
-
【实例】在服务器端使用API
-
下图是公司生产环境下splunk的一个仪表板截图
-
在搜索语句里面使用了vmstat,其实是调用了额外安装的插件,关键字叫add-on,*nix或者可以按照scripted inputs去查找相关内容。可以找到关于Splunk_TA_nix.tar.gz的内容,解压后可以看到里面会调用很多脚本,比如cpu.sh vmstat.sh top.sh。我看过这些脚本的源码,比如vmstat.sh,基本上就是调用vmstat的命令,然后将在客户端查询到的内容,格式化推送到服务器端。
-
在客户端安装在/opt/splunkforwarder/etc/apps/Splunk_TA_nix
-
客户端在/opt/splunkforwarder/bin下运行命令
-
./splunk set deploy-poll 192.168.75.128:8089 添加服务端,ip,端口
-
./splunk list forward-server查看服务端
-
./splunk enable deploy-client使能客户端
-
./splunk restart 重启客户端
-
服务端在这里安装NIX
-
-
服务端进行搜索,搜索命令是index=os sourcetype=vmstat host=PC2
-
使用timechart生成折线图。需要注意的是原生的loadAvg1mi是一个string的字段,这是不能使用avg()来统计的,这个坑害了我很久。。。于是自己做了一个loadAvg1mi_test的字段,类型是number
-
后续保存成为仪表板dashboard就可以了。
-
需要实现的功能是点击折现图的某一个点,然后将host和_time作为参数传递到后一个页面,后一个页面根据这两个参数,调用NIX的top.sh,查出在_time以及host的占用资源最高的前5个进程信息。后面的步骤可以参考,未完全验证。
-
使用到的关键字是drilldown。圈起来的地方是我改的,意思是打开一个新页面,叫做top,传递的参数是form.source_host,它的值是click.name2(其实就是PC2);form.souce_time,它的值是row._time(其实就是你点击的那个点对应的时间,传过去的值是linux时间戳)
-
下图是要跳转的页面
-
网页源码
-
-