0

我有ELK堆棧(具有logstash-forwarder)設置,它似乎適用於JBoss日誌。我發現我無法在一臺很奇怪的工作服務器上獲得其他日誌。我檢查/var/log/logstash/logstash.log,它包含以下錯誤:Logstash - 更改字符集 - 接收到與您配置的字符編碼不同的事件

{:timestamp=>"2016-03-02T16:02:25.232000-0500", :message=>"Received an event that has a different character encoding than you configured.", :text=>"\\tat company.core.controller.flat.FlatApplicationController.\\xFB(FlatApplicationController.java:3242)", :expected_charset=>"UTF-8", :level=>:warn} 

在線閱讀,看來我必須指定我的日誌文件使用的字符集。我檢查了哪些是ISO-8859的WebSphere默認值。我無法將其應用於我的配置。

我使用了以下指南 - https://gist.github.com/ashrithr/c5c03950ef631ac63c43

我嘗試添加 「字符集=> 」ISO-8859-1「」 到/etc/logstash/conf.d/01-lumberjack-input.conf文件:

input { 
    lumberjack { 
    port => 5000 
    type => "logs" 
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" 
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" 
    charset => "ISO-8859-1" 
    } 
} 

看到沒似乎工作,因爲我得到同樣的錯誤。

有人可以提供有關如何正確設置字符集的說明嗎?

回答

0

我認爲你必須使用純文本選項,在那裏你可以改變字符集。

codec => plain { charset => "ISO-8859-1" } 
1

如果您同時運行像伐木工人一個TCP輸入和UDP輸入(說GELF)相同的端口上,你會得到一個錯誤「收到具有不同的字符編碼的事件...」。

這是由於udp輸入試圖解釋tcp握​​手數據包。除非您在不同端口上運行輸入偵聽器,否則它將失敗。

這將工作:

input { 
    lumberjack { 
    port => "5001" 
    ssl_certificate => "/some/path/cert" 
    ssl_key => "/some/path/cert.key" 
      } 

    gelf  { 
    port => "5000" 
      } 
} 

這會給你一個編碼錯誤:

input { 
     lumberjack { 
     port => "5000" 
     ssl_certificate => "/some/path/cert" 
     ssl_key => "/some/path/cert.key" 
       } 

     gelf  { 
     port => "5000" 
       } 
}