使用Splunk监控远端

来源:互联网 发布:特效字体制作软件 编辑:程序博客网 时间:2024/06/05 18:57

Splunk学习笔记

  1. 简述

    1. Splunk的中文学习文档不多,下面的笔记参考了下面两个中文教程,以及splunk的英文官方帮助文档。

    2. 做这个学习的本源是期望实现如下功能:在一个监控多台服务器系统负载的仪表板上,点击某一台服务器的曲线,根据点击对应的时间,以及对应的服务器名称,自动生成一个页面,该新页面能够反映该服务器在对应时间点占用系统资源top5的进程信息。

    3. 中文教程链接:http://www.tuicool.com/articles/zErQFnrhttp://www.tuicool.com/articles/VrUneif

    4. 英文官方帮助文档:http://docs.splunk.com

    5. Splunk是一款B/S架构的监控软件,服务器端根据查询流量来收费。监控节点需要安装Splunk Universal Forwarder,即通用转发器,无UI界面,免费,将被监控日志内容推送到服务器端,服务器端再进行查询,过滤,可视化操作。

  2. 安装

    1. 在虚拟机上进行调试。准备两台虚拟机,能够连接外网,用于下载代码包,相互能够ping通,有各自ip,配置好光盘yum源,iptables -F清空防火墙规则,关闭selinux。

    2. PC1配置为服务器端,ip为192.168.75.128。PC2为客户端,ip为192.168.75.129

    3. PC1上安装服务器端。

      1. wget -chttps://download.splunk.com/products/splunk/releases/6.5.1/linux/splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz

      2. tar -zxvf splunk-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt 解压缩到/opt下

      3. Splunk的可执行程序在/opt/splunk/bin下,在该目录下调用常用CLI命令

        1. ./splunk start

        2. ./splunk start --accept-license 自动接收许可

        3. ./splunk restart

        4. ./splunk status

        5. ./splunk version

      4. 敲入命令./splunk start --accept-license启动splunk

      5. 敲入命令./splunk enable boot-start开机自启

      6. Splunk安装之后开启8000端口,可以如下方式访问 firefoxhttp://192.168.75.128:8000

      7. 默认账号名和密码为admin  changeme

      8. Ps -ef | grep splunk查看

    4. PC2上安装客户端,通用转发器

      1. wget -chttps://download.splunk.com/products/splunk/releases/6.5.1/linux/splunkforwarder-6.5.1-00f5bb3fa822-Linux-x86_64.tgz

      2. Tar -zxvf splunkforwarder-6.5.1-f74036626f0c-Linux-x86_64.tgz -C /opt

      3. 切换到/opt/splunkforwarder/bin,执行./splunk start --accept-license

      4. ./splunk show splunkd-port 查看端口,需要输入账号名和密码,admin changeme

  3. 安装后的配置

    1. 在PC1上,setting---server setting---general settings

    2. PC1上setting---forwarding and receiving上添加一个监听端口9997

  4. 【实例】监控客户端审计日志

    1. PC1上添加一条index。敲入命令./splunk add index linuxaudit,需要重启生效

    2. PC2上敲入命令./splunk list monitor,可以查看到监控的目录和文件。这里是默认的监控目录和文件。

    3. PC2上敲入命令./splunk add monitor /var/log/audit/audit.log -index linuxaudit添加一条index,和a项对应

    4. PC2上敲入命令./splunk add forward-server 192.168.75.128:9997添加转发的目的服务器ip和端口

    5. 在PC1上可以如下搜索到审计日志的内容

  5. 【实例】监控apache访问日志

    1. 在PC1得web上setting---indexes添加一条index,叫做apache_data

    2. 在PC2上vim /opt/splunkforwarder/etc/apps/search/local/inputs.conf,加入[monitor:///etc/httpd/logs/access_log]
      disabled = false
      index = apache_data

    3. 在PC1的web上新搜索,可以看到PC2的apache访问日志内容

  6. 【实例】在服务器端使用API

    1. 下图是公司生产环境下splunk的一个仪表板截图

    2. 在搜索语句里面使用了vmstat,其实是调用了额外安装的插件,关键字叫add-on,*nix或者可以按照scripted inputs去查找相关内容。可以找到关于Splunk_TA_nix.tar.gz的内容,解压后可以看到里面会调用很多脚本,比如cpu.sh  vmstat.sh  top.sh。我看过这些脚本的源码,比如vmstat.sh,基本上就是调用vmstat的命令,然后将在客户端查询到的内容,格式化推送到服务器端。

    3. 在客户端安装在/opt/splunkforwarder/etc/apps/Splunk_TA_nix

    4. 客户端在/opt/splunkforwarder/bin下运行命令

    5. ./splunk set deploy-poll 192.168.75.128:8089 添加服务端,ip,端口

    6. ./splunk list forward-server查看服务端

    7. ./splunk enable deploy-client使能客户端

    8. ./splunk restart 重启客户端

    9. 服务端在这里安装NIX

    10. 服务端进行搜索,搜索命令是index=os sourcetype=vmstat host=PC2

    11. 使用timechart生成折线图。需要注意的是原生的loadAvg1mi是一个string的字段,这是不能使用avg()来统计的,这个坑害了我很久。。。于是自己做了一个loadAvg1mi_test的字段,类型是number

    12. 后续保存成为仪表板dashboard就可以了。

    13. 需要实现的功能是点击折现图的某一个点,然后将host和_time作为参数传递到后一个页面,后一个页面根据这两个参数,调用NIX的top.sh,查出在_time以及host的占用资源最高的前5个进程信息。后面的步骤可以参考,未完全验证。

    14. 使用到的关键字是drilldown。圈起来的地方是我改的,意思是打开一个新页面,叫做top,传递的参数是form.source_host,它的值是click.name2(其实就是PC2);form.souce_time,它的值是row._time(其实就是你点击的那个点对应的时间,传过去的值是linux时间戳)

    1. 下图是要跳转的页面

    1. 网页源码

0 0