zoukankan      html  css  js  c++  java
  • ELK——为调试 Logstash Grok 表达式,安装 GrokDebuger 环境

    内容

    • 安装 RVM
    • 安装 Ruby 和 Gems
    • 安装 Rails
    • 安装 jls-grok
    • Ruby grok 解析
    • 调试 grok

    迁移到:http://www.bdata-cap.com/newsinfo/1712686.html

    注意:不要用 root 执行以下操作。

    用 logstash 收集 IIS、tomcat 日志,或是其他时,你需要调试 grok 表达式,每次都需要重新加载文件,然后再把 sincedb 文件全部删除,否则 logstash 不会重复处理文件,很麻烦。

    本文主要介绍如何安装 GrokDebuger 环境,再在命令行调试 Grok 表达式。Logstash 是用 Ruby 编写的,而 Ruby 有专门的处理 grok 表达式的 gem。

    下面过程有先后顺序。

    安装 RVM

    rvm(Ruby Version Manager),是一个非常好用的ruby版本管理以及安装工具。

    curl -sSL https://get.rvm.io | sudo bash -s stable

    参见:http://rvm.io/

    参见:https://github.com/rvm/rvm

    这步可能要多试几次,不是你的问题,是它们的网络问题。

    若不能 sudo ,就自己设置下你用户的权限。

    RVM 安装位置自己 FIND 一下。

    安装 rvm 后,需要用 rvm 把你当前用户添加到 rvm 组。rvm 会自己创建 rvm 组。

    rvm group add rvm "$USER"
     
    rvm fix-permissions“$USER”

    表示你当前用户,然后重新登录。

    在 RVM 下安装 Ruby。


    安装 Ruby 和 Gems

    rvm install ruby
     
    ruby -v
     
    gem –v

    这步很简单~如果能看到版本信息,就说明成功了~


    安装 Rails

    gem install rails

    若不能访问,则添加淘宝镜像 https://ruby.taobao.org/


    安装 jls-grok

    gem install jls-grok

    这步也很简单~基本不会出问题~


    Ruby grok 解析

    编写一个 Ruby 脚本,用来调试 Grok 表达式。

    require 'rubygems'
     
    gem 'jls-grok', '=0.11.2'
     
    require 'grok-pure'
     
    require 'optparse'
     
    require 'json'
     
    options = {}
     
    ARGV.push('-h') if ARGV.size === 0
     
    OptionParser.new do |opts|
     
      opts.banner = 'Run grokdebug at your terminal.'
     
      options[:dirs] = %w(patterns)
     
      options[:named] = false
     
      opts.on('-d DIR1,DIR2', '--dirs DIR1,DIR2', Array, 'Set grok patterns directories. Default: "./patterns"') do |value|
     
        options[:dirs] = value
     
      end
     
      opts.on('-m MESSAGE', '--msg MESSAGE', 'Your raw message to be matched') do |value|
     
        options[:message] = value
     
      end
     
      opts.on('-p PATTERN', '--pattern PATTERN', 'Your grok pattern to be compiled') do |value|
     
        options[:pattern] = value
     
      end
     
      opts.on('-n', '--named', 'Named captures only') do
     
      end
     
    end.parse!
     
    grok = Grok.new
     
    options[:dirs].each do |dir|
     
      if File.directory?(dir)
     
        dir = File.join(dir, "*")
     
      end
     
      Dir.glob(dir).each do |file|
     
        grok.add_patterns_from_file(file)
     
      end
     
    end
     
    grok.compile(options[:pattern], options[:named])
     
    puts JSON.pretty_generate(grok.match(options[:message]).captures())
     

    调试 grok

    [ln@vcyber myruby]$ ruby grokdebug.rb -m '10.1.1.1' -p '%{IP:client}' 
    { 
      "client": [ 
        "10.1.1.1" 
      ], 
      "IPV6": [ 
        null 
      ], 
      "IPV4": [ 
        "10.1.1.1" 
      ] 
    }
     
    [ln@vcyber myruby]$ ruby  grokdebug.rb -m '10.1.8.166:8000' -p '%{HOSTPORT:test}' 
    { 
      "test": [ 
        "10.1.8.166:8000" 
      ], 
      "IPORHOST": [ 
        "10.1.8.166" 
      ], 
      "IP": [ 
        "10.1.8.166" 
      ], 
      "IPV6": [ 
        null 
      ], 
      "IPV4": [ 
        "10.1.8.166" 
      ], 
      "HOSTNAME": [ 
        null 
      ], 
      "POSINT": [ 
        "8000" 
      ] 
    } 
    [ln@vcyber myruby]$

    若提示找不到“pattern”,你可以将 logstash 目录底下的复制过来拿来用~

  • 相关阅读:
    2013-05-25 14:04 zend studio10正式版如何汉化?
    网页前端优化之滚动延时加载图片
    appium框架之bootstrap
    软件测试面试题(一)
    Java中的经典算法之冒泡排序(Bubble Sort)
    Git知识总览(一) 从 git clone 和 git status 谈起
    Webdriver获取多个元素
    idea注册码到期,破解idea
    安装appium桌面版和命令行版
    Python+Appium学习篇之WebView处理
  • 原文地址:https://www.cnblogs.com/liuning8023/p/5310541.html
Copyright © 2011-2022 走看看