第三篇:Logstash 安裝配置


Logstash 簡介:

  Logstash 是一個實時數據收集引擎,可收集各類型數據並對其進行分析,過濾和歸納。按照自己條件分析過濾出符合數據導入到可視化界面。Logstash 建議使用java1.8 有些版本是不支持的,比如java1.9。

 

 一. 下載安裝jdk1.8

            下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

            下載好的安裝包上傳到cpy04.dev.xjh.com的/usr/local/ 目錄下並三執行如下操作:

#解壓文件
tar xf /usr/local/jdk1.8.0_111.tar.gz -C /usr/local
mv /usr/local/jdk1.8.0_111 /usr/local/jdk-1.8.0
#添加環境變量
alternatives --install /usr/bin/java java /usr/local/jdk1.8.0/jre/bin/java 3000
alternatives --install /usr/bin/jar jar /usr/local/jdk1.8.0/bin/jar 3000
alternatives --install /usr/bin/javac javac /usr/local/jdk1.8.0/bin/javac 3000
alternatives --install /usr/bin/javaws javaws /usr/local/jdk1.8.0/jre/bin/javaws 3000
alternatives --set java /usr/local/jdk1.8.0/jre/bin/java
alternatives --set jar /usr/local/jdk1.8.0/bin/jar
alternatives --set javac /usr/local/jdk1.8.0/bin/javac 
alternatives --set javaws /usr/local/jdk1.8.0/jre/bin/javaws
#切換java 版本
alternatives --config java

 

二. 安裝logstash

            1. 登陸cpy04.dev.xjh.com(需下載其他版本請點擊:https://www.elastic.co/downloads/logstash  )

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.1.tar.gz -o /opt/logstash-5.6.1.tar.gz
tar xf /opt/logstash-5.6.1.tar.gz -C /usr/local
mv /usr/local/logstash-5.6.1 /usr/local/logstash

三、配置logstash

  1. 編輯 /usr/local/logstash/config/logstash.yml配置文件修改如下內容:

node.name: cpy04.dev.xjh.com    #設置節點名稱,一般寫主機名
path.data: /usr/local/logstash/plugin-data    #創建logstash 和插件使用的持久化目錄 
config.reload.automatic: true    #開啟配置文件自動加載
config.reload.interval: 10    #定義配置文件重載時間周期
http.host: "cpy04.dev.xjh.com"    #定義訪問主機名,一般為域名或IP

  2. 新建持久化目錄:

mkdir -p /usr/local/logstash/plugin-data

  3. 配置logstash 從Filebeat 輸入、過濾、輸出至elasticsearch(logstash 有非常多插件,詳見官網,此處不列舉)

    3.1 安裝logstash-input-jdbc 和logstash-input-beats-master 插件

/usr/local/logstash/bin/logstash-plugin install  logstash-input-jdbc
wget https://github.com/logstash-plugins/logstash-input-beats/archive/master.zip -O /opt/master.zip
unzip -d /usr/local/logstash /opt/master.zip

    3.2 配置logstash input 段

                    vim /usr/local/logstash/from_beat.conf

input {
beats {
port => 5044
}
}
output {
     
    stdout { codec => rubydebug }
}

    啟動logstash 看是否能接收到filebeat 傳過來的日志內容,要確保filebeat 在日志節點上啟動正常。此時只測試傳入是否正常,並未對原始日志進行過濾和篩選

/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/from_beat.conf

     啟動后如果沒有報錯需要等待logstash 完成,此時間可能比較長

 

    3.3 配置 logstash filter 段,修改/usr/local/logstash/from_beat.conf 為以下內容,配置完成后再次啟動logstash,此時如果成功,輸出內容應該是自己正則表達式捕獲后的字段切分內容。

input {
beats {
port => 5044
}
}
filter {
    #過濾access 日志
    if ( [source] =~ "localhost\_access\_log" ) {
        grok {
            match => {
                message => [ "%{COMMONAPACHELOG}" ]
            }
        }
        date {
            match => [ "request_time", "ISO8601" ]
            locale => "cn"
            target => "request_time"
        }
    #過濾tomcat日志
    } else if ( [source] =~ "catalina" ) {
        #使用正則匹配內容到字段
        grok {
            match => {
message => [ "(?<webapp_name>\[\w+\])\s+(?<request_time>\d{4}\-\d{2}\-\d{2}\s+\w{2}\:\w{2}\:\w{2}\,\w{3})\s+(?<log_level>\w+)\s+(?<class_package>[^.^\s]+(?:\.[^.\s]+)+)\.(?<class_name>[^\s]+)\s+(?<message_content>.+)" ]
            }
        }
        #解析請求時間
        date {
            match => [ "request_time", "ISO8601" ]
            locale => "cn"
            target => "request_time"
        }
    } else {
        drop {}
    }
}
output {
     
    stdout { codec => rubydebug }
}

    3.4 配置 過濾后內容輸出至elasticsearch,修改from_beat.conf 文件為以下內容:

input {
beats {
port => 5044
}
}
filter {
    #過濾access 日志
    if ( [source] =~ "localhost\_access\_log" ) {
        grok {
            match => {
                message => [ "%{COMMONAPACHELOG}" ]
            }
        }
        date {
            match => [ "request_time", "ISO8601" ]
            locale => "cn"
            target => "request_time"
        }
    #過濾tomcat日志
    } else if ( [source] =~ "catalina" ) {
        #匹配內容到字段
        grok {
            match => {
message => [ "(?<webapp_name>\[\w+\])\s+(?<request_time>\d{4}\-\d{2}\-\d{2}\s+\w{2}\:\w{2}\:\w{2}\,\w{3})\s+(?<log_level>\w+)\s+(?<class_package>[^.^\s]+(?:\.[^.\s]+)+)\.(?<class_name>[^\s]+)\s+(?<message_content>.+)" ]
            }
        }
        #解析請求時間
        date {
            match => [ "request_time", "ISO8601" ]
            locale => "cn"
            target => "request_time"
        }
    } else {
        drop {}
    }
}
output {
    if ( [source] =~ "localhost_access_log" ) {
        elasticsearch {
            hosts => ["cpy04.dev.xjh.com:9200"]
            index => "access_log"
        }
    } else {
        elasticsearch {
            hosts => ["cpy04.dev.xjh.com:9200"]
            index => "tomcat_log"
        }
    }
    stdout { codec => rubydebug }
}

 

至此,logstash 配置完成。如果需要做其他過濾或者輸出至除elasticsearch 以外插件,如kafka 詳見:https://www.elastic.co/guide/en/logstash/current/index.html

  

    

  

      

  

 

  

input {
beats {
port =>  5044
}
}
filter {
     #過濾access 日志
     if  ( [source] =~  "localhost\_access\_log"  ) {
         grok {
             match => {
                 message => [  "%{COMMONAPACHELOG}"  ]
             }
         }
         date {
             match => [  "request_time" "ISO8601"  ]
             locale =>  "cn"
             target =>  "request_time"
         }
     #過濾tomcat日志
     else  if  ( [source] =~  "catalina"  ) {
         #匹配內容到字段
         grok {
             match => {
message => [  "(?<webapp_name>\[\w+\])\s+(?<request_time>\d{4}\-\d{2}\-\d{2}\s+\w{2}\:\w{2}\:\w{2}\,\w{3})\s+(?<log_level>\w+)\s+(?<class_package>[^.^\s]+(?:\.[^.\s]+)+)\.(?<class_name>[^\s]+)\s+(?<message_content>.+)"  ]
             }
         }
         #解析請求時間
         date {
             match => [  "request_time" "ISO8601"  ]
             locale =>  "cn"
             target =>  "request_time"
         }
     else  {
         drop {}
     }
}
output {
     if  ( [source] =~  "localhost_access_log"  ) {
         elasticsearch {
             hosts => [ "cpy04.dev.xjh.com:9200" ]
             index =>  "access_log"
         }
     else  {
         elasticsearch {
             hosts => [ "cpy04.dev.xjh.com:9200" ]
             index =>  "tomcat_log"
         }
     }
     stdout { codec => rubydebug }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM