2016-03-22 70 views
0

我在我的窗口框中設置logstash。我運行了7個logstash實例。每個人都有一個文件夾用於輸入日誌文件。我同時運行它們並將它們導向運行7個r3.xlarge實例和3個主節點(r3.xlarge)的AWS es羣集。所有輸入文件總共需要大約9GB。在所有logstash實例停止運行後,我在elasticsearch中只有600萬個事件,應該有大約3000萬個事件。我回到了我的logstash cmd窗口,在那裏我跑了它,看了最後一個事件。它沒有對應於文件中的最後一個日誌行,它是從第50行開始的。然後,在同一個窗口中的倒數第二個日誌事件不對應於我先查找的那條日誌行之前,我在日誌文件中找到了大約30條日誌行。所以很明顯我的logstash正在跳過日誌行。Logstash跳到許多日誌行

現在我檢查了我的彈性搜索,它顯示全零,所以沒有東西被丟棄? (我特別看了看bulk.rejected)

_cat/thread_pool?v 

這個數據是累計還是刷新?

這使我想到了第二個問題。如果logstash本身由於某種原因刪除了日誌行,我在哪裏以及如何排除故障,我知道我的logstash實例沒有一個崩潰。我所知道的是,它高興地下降了我所有日誌中的70%,並且我沒有錯誤日誌或線索去了解發生了什麼。

編輯:

我logstash配置:

(就好像它是ingoring我的所有日​​志週五,週六,週日,只是處理星期一(3/21))

input { 
    file { 
    type => "apache_logs" 
    path => "D:/logs/apache_logs/all/ssl_access.*"  
    start_position => "beginning" 
    sincedb_path => "NUL" 
    } 

} 

filter { 

    grok { 
     match => ["message","%{IPORHOST:client_ip} (?<username>[-]) (?<password>[-]) \[(?<timestamp>\d{2}[/][a-zA-Z]{3}[/]\d{4}:\d{2}:\d{2}:\d{2}\s-\d{0,4})\] \"%{GREEDYDATA:request}\" %{NOTSPACE:obssocookie} %{NOTSPACE:ps_sso_uid_in} %{NOTSPACE:ps_sso_uid_out} (?<status>[0-9]{3}) (?<bytes>[0-9]{1,}|-) %{NOTSPACE:protocol} %{NOTSPACE:ciphers} \"%{GREEDYDATA:referrer}\" \"%{GREEDYDATA:user_agent}\""] 
     match => [ "path", "(?<app_node>webpr[0-9]{2}[a-z]{0,1})" ] 
     add_field => { "server_node" => "%{app_node}" } 
     break_on_match => false 
    } 

    mutate { 
     gsub => ["obssocookie","^.*=",""] 
    } 

    mutate { 
     gsub => ["ps_sso_uid_in","^.*=",""] 
    } 

    mutate { 
     gsub => ["ps_sso_uid_out","^.*=",""] 
    } 

    date { 
     match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] 
     remove_field => "timestamp" 
    } 

    geoip { 
     source => "client_ip" 
    } 

    if [geoip] { 
     mutate { 
      add_field => {   
       "ip_type" => "public"  
      } 
     } 
    } else { 
     mutate{ 
      add_field => {   
       "ip_type" => "private"   
      } 
     } 
    } 

} 

output { 
    stdout{ codec => rubydebug} 
    amazon_es { 
    hosts => ["apache-logs-xxxxxxxxxxxxxxxxxxxxxxxxxx.us-west-2.es.amazonaws.com"] 
    region => "us-west-2"  
    aws_access_key_id => 'xxxxxxxxxxxxxxxxxx' 
    aws_secret_access_key => 'xxxxxxxxxxxxxxxxxxxxx' 
    index => "logstash-apache-friday" 
    } 
} 

我怎麼能知道logstash專門下降,彈性搜索沒有多少被拒絕多少事件,因爲我已經通過API檢查和bulk.rejected = 0

+0

你檢查logstash和elasticsearch日誌嗎?如果您有映射問題,文檔可能會被丟棄。 –

+0

窗戶上的logstash日誌在哪裏?我如何知道當我在數百萬事件中處理速度如此之快時,我已經在logstash中映射了問題?所以這真的很令人沮喪,即使在按順序提供所有日誌而不是分割成多個實例之後,我擁有與之前一樣的7個可搜索文檔數量,其中有7個logstash實例......只有三分之一,除了花了16個小時這次加載所有日誌 - 因爲我沒有並行執行,所以速度很慢。我真的很茫然,真的很感謝一些幫助:) – alexfvolk

回答

1

Foun我的罪魁禍首。我必須包括這在我的文件輸入,看起來像它跳過任何文件超過24個小時的默認

ignore_older => 0 

類的意外,我會希望添加設置時,我想縮小我的投入,否則logstash應處理任何超過24小時的文件。真的不是那麼明顯..