elk與syslog

1. logstash安裝java

  1)  安裝javanode

  2)  下載logstash安裝包linux

  3)  rpm –i logstash-6.2.3.rpmredis

  4)  裝成功後, centos7默認會裝到/usr/share/logstashcentos

  5)  配置文件默認位於/etc/logstash緩存

2. 管道配置ruby

   以輸入stdin, syslog, 輸出redis,stdout爲例, 性能優化

   eg: rsyslog.conf 服務器

  
 1 input {
 2 
 3     stdin {}
 4 
 5     syslog {
 6 
 7         host => "0.0.0.0"
 8 
 9         port => 514
10 
11     }
12 
13  
14 
15 }
16 
17 filter {}
18 
19 output {
20 
21     redis {
22 
23         batch => true
24 
25         batch_events => 1000
26 
27         batch_timeout => 20
28 
29         data_type => list
30 
31         key => "syslog-%{+yyyy-MM-dd}"
32 
33         host => ["127.0.0.1"]
34 
35         port => 6379
36 
37         db => 0
38 
39     }
40 
41     stdout{
42 
43         codec => rubycode
44 
45 }
46 
47 }
View Code

   能夠有多個input, filter, output多線程

3. logstash配置

  logstash主要配置文件logstash.yml

  java 堆棧配置文件 jvm.options

  管道配置文件 pipeline.yml

  主要配置:

    1)  logstash.yml

      node.name  節點名稱

      path.data   緩衝數據本地存放的路徑

      pipeline.workers 並行執行filter+output的進程數,默認cpu核數

      pipeline.batch.size 每次批量從input獲取的數據量, 這塊會涉及到一個問題, 分配給logstash的堆棧空間須要大於等於pipeline.workers * pipeline.batch.size, 由於logstash會將數據緩存到堆棧裏。

      path.config  管道配置文件的路徑

      config.reload.automatic 是否自動reload

      queue.type  默認memory, 使用persisted會持久化到磁盤, 使用隊列能夠保證在宕機多出現其餘可修復的問題時,來不及進行filter和output處理時, 將數據保存到磁盤,避免數據丟失,logstash重啓後,會同時從input和磁盤上讀取隊列的數據,進行filter+output處理,   還有一種狀況是若是filter+output的速度慢於input, 未來不及處理的數據緩存到磁盤, 有效渡過峯值, 避免性能問題或緩存被打爆丟失數據。

      queue.max_bytes 永久隊列容許持久化的最多字節數, mb或gb爲單位。

               2)  jvm.options

      +xms, +xmx調優

4. 啓動

  1) 用pv命令啓動logstash 監控性能

    a)  /usr/share/logstash/bin/logstash –f rsyslog.conf 啓動單個管道

              b)  /usr/share/logstash/bin/logstash –path.settings=/etc/logstash 會啓動全部的管道, 讀取配置文件, 事實上是將多個管道配置文件合爲一個

              c)  性能監控, 使用linux自帶pv命令:  /usr/share/logstash/bin/logstash –f rsyslog.conf|pv –abt > /dev/null

       2) 向syslog端口發送數據

    數據示例採用沙箱日誌:

    <12> Mar 26 16:30:35 localhost skyeye-sandbox: access_time:2017-08-15 7:24:10|!attacker:10.19.1.245:52868|!file_md5:0f51a34a9a1ce4d2026c772400f07910|!file_name:virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!file_size:320541|!file_type:exe32|!proto_type:http|!subject:|!method:GET|!url:http://sample/test/virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!victim:10.19.1.106:80|!malscore:7.0|!vir:win7-sp1;office2010;adobe11;java8;flash16;ie10,winxp-sp3;office2007;adobe10;java6;flash16;ie8|!static_report:Trojan.Lethic.Gen.11|!cloud_info: Win32/Worm.d2e.cloud |!sign_info: 北京科技有限責任公司; 79800E0C5BC7ABEFC387B56D0E89306A3926EC25|!link:10.95.24.3

       3)測試工具採用yes

    yes ‘字符串’|nc ip port

       示例:     

      
yes '<12> Mar 26 16:30:35 localhost skyeye-sandbox: access_time:2017-08-15 7:24:10|!attacker:10.19.1.245:52868|!file_md5:0f51a34a9a1ce4d2026c772400f07910|!file_name:virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!file_size:320541|!file_type:exe32|!proto_type:http|!subject:|!method:GET|!url:http://sample/test/virussign.com_0f51a34a9a1ce4d2026c772400f07910.vir|!victim:10.19.1.106:80|!malscore:7.0|!vir:win7-sp1;office2010;adobe11;java8;flash16;ie10,winxp-sp3;office2007;adobe10;java6;flash16;ie8|!static_report:Trojan.Lethic.Gen.11|!cloud_info: Win32/Worm.d2e.cloud |!sign_info: 北京科技有限責任公司; 79800E0C5BC7ABEFC387B56D0E89306A3926EC25|!link:10.95.24.3' | nc 10.95.134.20 514
View Code

    以上命令會不斷的像10.95.134.20 514端口發送日誌.

    注意nc ip port 默認使用tcp, nc –u ip port使用udp

    經測試udp的每秒處理條數要比tcp快一個數量級, 可是udp的接收和入庫不成比例,待探究

    4) 測試工具loggen

    略

5. 知識點

  1) 通過測試經過rsyslog接收syslog並轉發給logstash的性能只有7k/s, 未必有logstash性能好。

     2)logstash不支持集羣, 只能橫向擴展, 啓動多個實例, 或增長機器。

6. 性能優化

  1) 運行時內存堆棧, 修改jvm.options

       +xms +xmx  16gb差很少

  2)  workers數量, 修改logstash.yml

         pipeline.workers  默認cpu核數, 能夠根據實際狀況調整大於或小於cpu核數, 主要影響filters和output, filters和output使用多線程。

  3)  pipeline.batch.size 單進程批次從input獲取的event數量, logstash按流程分爲input, filter, output三個流程, 這塊主要影響filter以前, 從input取數據的效率, heap_size>=workers * batch_size ,因此設置workers和batch_size的時候要根據分配給logstash的堆內存來分配,並非越大越好。

  4)  queue.type 默認memory, 表示不啓用持久隊列, persisted表明啓用持久隊列, 並持久到磁盤, 記得必定要啓用, 避免數據丟失, 當output已滿或者處理速度跟不上input的速度的時候, logstash會阻塞,並將input的數據先緩存到磁盤文件, 待output性能轉好, 再同時從input和磁盤隊列取數據,輸送到filter進行處理。好比redis oom的狀況,能夠保證數據不丟失。

       5)以下圖:

    

    在分配給logstash 16GB內存, 16核cpu的狀況下(服務器32cpu, 256gb內存),input速度在1.5w/s-2w/s之間,redis入庫速度與input差很少,能夠看出heap和cpu的佔比消耗很低。通過測試, 即便增長cpu核數, heap內存, input和output的速度並無增加, 也多是壓力測試的力度不夠。建議不必分配特別高的內存和cpu給logstash。

    實際的input和output速度應該以生產環境壓測爲主。

   6)   修改logstash自帶的syslog.rb腳本可提升input速度。

    Logstah處理syslog實際是經過syslog.rb腳本, 在我機器上,該腳本位於:

    /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-input-syslog-3.4.0/lib/logstash/inputs

    

    

    雖然咱們在pipeline的配置中設置filter爲空,

    

    可是logasth在處理syslog數據的時候,調用該腳本, 會註冊grok_filter和date_filter並, 調用它們處理每一條告警, 若是註釋掉這兩個filter的調用, 能夠稍微提升input的速度。經測試input的速度約爲2w/s-2.5w/s。

7. elk監控

  1) elk環境搭建

    a)         安裝java, 下載logstash, elasticsearch, kibana, 版本必須一致, 個人機器採用6.2.3版。

    b)         安裝logstash, elasticsearch, kibana

    c)         分別安裝x-pack, bin/logstash-plugin install x-pack, bin/elasticsearch-plugin install x-pack 等等。

    d)         設置內置用戶密碼, x-pack內置logstash-system, kibana, elastic三個用戶, elastic是權限最高的, 運行bin/x-pack/setup-passwords 修改默認密碼, 並重啓elaticsearch等

    e)         配置kibana, 設置es地址, 必配:

        elasticsearch.username: "elastic"

        elasticsearch.password: "xxxx"

        elasticsearch.url: 「http://localhost:9200

        重啓kibana

    f)          配置logstash監控, 至少配置如下三項:

        xpack.monitoring.elasticsearch.url: "http://localhost:9200/"

        xpack.monitoring.elasticsearch.username: "logstash_system"

        xpack.monitoring.elasticsearch.password: "situation"

               重啓logstash

    g)         配置elasticsearch, elasticsearch其實能夠不用配置的, 可是個人環境logstash向es寫入數據的時候一直報403, 添加:

        xpack.security.enabled: false, 重啓elasticseach, 就ok

    h)         經過http訪問5601端口, 就能夠看到kibana界面

  2) logstash監控

     

    Elk也能夠監控logstash output非elasticsearch的數據流,好比redis, 配置x-pack便可。

相關文章
相關標籤/搜索