安裝logstash及logstash的初步使用-處理DNS日誌

安裝logstash

須要高版本的java
使用1.4版本的java會有報錯
# Can't start up: not enough memory

查詢java信息java

rpm -qa | grep javagit

查詢yum源內含有的全部java的安裝包github

yum -y list java*web

選擇須要的版本redis

yum install java-xxx-openjdk.x86_64json

安裝完成後,驗證版本centos

java -verisonruby

下載logstash服務器

cd /opt/soft wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gzelasticsearch

解壓

tar zxvf logstash-6.3.2.tar.gz
cd logstash-6.3.2

若須要安裝插件,能夠經過logstash-plugin 來安裝

查看能夠安裝的插件

./bin/logstash-plugin list ./bin/logstash-plugin install pkg_name

安裝插件
https://github.com/logstash-plugins/logstash-patterns-core

須要安裝gem

yum install -y rubygem #centos6.5 yum install -y gem #centos7

安裝完成後,解壓github上的插件而後進入目錄執行

gem build *.gemspec

會產生一個新的*.gem文件

./bin/logstash-plugin install *.gem
而後就安裝成功了

logstash的使用方式
在任意文件夾下建立一個conf文件(這裏演示就直接建立在程序目錄下了)

touch /opt/soft/logstash /bin/std.conf vi /opt/soft/logstash/bin/std.conf

如下是一個實例

須要處理的日誌格式:17-Jul-2018 10:54:06.822 client 127.0.0.1 18524: view default: kugou.xdwscache.ourwebpic.com IN A NOERROR + NS NE NT ND NC H 25 Response: kugou.xdwscache.ourwebpic.com 50 IN A 127.0.0.1;kugou.xdwscache.ourwebpic.com 50 IN A 127.0.0.1;

std.conf內容以下

#input  日誌文件來源,還能夠使用redis等等具體可查詢官網的input選項
input {
    file {
    #指定路徑
    path => ["/home/dnslog/*.log"]
    }
}
#格式處理
filter{
    #判斷message是否含有字符「Respose」
    if "Response" in [message] {
        #經過正則的方式來切割日誌,而且賦予須要的數據變量。本文導入了模塊logstash-patterns-core
        #logstash-patterns-core此模塊來自於github:https://github.com/logstash-plugins/logstash-patterns-core
        grok{
            match =>{
        "message" => "%{BIND9_TIMESTAMP:timestamp} client %{IP:clientip} %{POSINT:clientport}: view %{DATA:view}\:\ %{DATA:query} IN %{DATA:aaa} %{DATA:status} \+ %{GREEDYDATA:res}"
        }
    }
        #在此經過正則過濾
        grok {
        match => {
        #這裏的res由上面grok過濾得到
        "res" => ".*?(%{HOSTNAME:query1} %{NONNEGINT:clientport1} IN A %{IP:resolution};)$.*?"
        }   
        }
    #if判斷失敗的就直接丟棄
    }else {
        drop {}
    }
    #geoip插件經過plugin install 安裝,這個插件對移動的地址識別有異常。
    geoip{
    #由以上第二個正則grok過濾獲得的resolution獲取IP
    source => "resolution"
    target => "geoip"
    #能夠註釋掉fields,那就是輸出完成的geoip的數據。這邊只取了須要的
    fields => ["city_name","country_name","region_name"]
    }

    #日期插件會替換本來自身的@timestamp項
    date {
    #將日期格式化爲標準輸出
    match => ["timestamp", "dd-MMM-yyyy HH:mm:ss.SSS"]
    locale => "en"
    timezone => "+00:00"

#   target=>"@timestamp"
#   timezone=>"Asia/Shanghai"
    }
    #格式化日誌將服務器名稱發送過去
    mutate {
    rename => { "[host][name]" => "host" }
    }
    #去除不須要的項
    mutate {
    remove_field => ["_type","_source","path","message", "@version","clientport","clientport1","res"]
    }
}
#輸出
output {
    #輸出到elasticsearch,而且定義index名字
    elasticsearch{
    index => "logstash_dns%{[host]}_%{+YYYY.MM.dd}"
        hosts => "127.0.0.1:8200"
    }
#輸出到界面,以rubydebug的格式,還有json等等格式
stdout {codec => rubydebug} 
}

這樣一個DNS的日誌格式就處理完成了

相關文章
相關標籤/搜索