我有ELK堆栈(使用logstash-forwarder)设置,它似乎适用于JBoss日志。我发现我无法在奇怪的工作服务器上获得其他日志。我检查了/var/log/logstash/logstash.log,它包含以下错误:
{: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}
在线阅读,似乎我必须指定我的日志文件正在使用的字符集。我检查了WebSphere的默认值为en-is ISO-8859。我无法将其应用于我的配置。
我使用了以下指南 - https://gist.github.com/ashrithr/c5c03950ef631ac63c43。
我尝试将“charset =>”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 :(得分:1)
如果你在同一个端口上运行像lumberjack这样的tcp输入和一个udp输入(比如gelf),你将收到一个错误"收到一个具有不同字符编码的事件......&#34 ;
这是由于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"
}
}
答案 1 :(得分:0)
我认为你必须使用纯文本选项,你可以在那里更改字符集。
$string = 'The quick brown fox jumps over the lazy dog';
$find_me = 'dog';
preg_replace('/'. $find_me .'$/', '', $string);