背景:
我们rsyslog创建了日志文件目录,例如:/var/log/rsyslog/SERVER-NAME/LOG-DATE/LOG-FILE-NAME
因此,多个服务器将不同日期的日志分发到中心位置.
现在阅读这些日志并将它们存储在elasticsearch中进行分析我的logstash配置文件是这样的:
file{
path => /var/log/rsyslog/**/*.log
}
Run Code Online (Sandbox Code Playgroud)
问题 :
现在,随着目录中日志文件数量的增加,logstash会为新文件打开文件描述符(FD),并且不会为已读取的日志文件释放FD.由于日志文件是按日期生成的,因此一旦读取它,之后就没有用了,因为在该日期之后它不会被更新.
我已将文件开口限制增加到65K in /etc/security/limits.conf
我们可以在一段时间后让logstash关闭句柄,这样打开的文件句柄数量不会增加太多?
你知道如何使用Logstash的Ruby过滤器,这使我能够在Ruby中编写代码,它通常包含在配置文件中,如下所示
filter {
ruby {
code => "...."
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有两个Jar文件,我想包含在我的过滤器中,以便我可以根据我在这些Jar文件中的操作处理我的输入.但是,我不能(显然)在ruby代码中包含Jar文件.我一直在寻找解决方案.
我有logstash在主机上查看目录.每当它看到与我在logstash配置中指定的路径匹配的日志时,它就会开始将数据导入到我的elasticsearch集群中.logstash是否有办法在完成消耗之后删除日志?
我想写脚本来删除logstash已经完成的日志,但我怎么知道他做了哪些日志?
也许你们之前做过这个或知道如何实现这个?
我正在使用在独立系统(无云或群集)中运行的Logstash-5.6.5(在Windows中)。计划观看一些日志文件并将其发布到本地运行elasticsearch。但是,当检查Logstash的内存使用情况时,如果没有配置监视任何文件的配置,则显示大约600MB内存使用情况。当我进一步添加输入文件管道配置时,它进一步增加了内存(为观看3个日志文件,它总共增加了70MB,但我计划增加多达20个日志)。
1.这是预期的行为吗?
2.有什么方法可以通过logstash减少大量内存使用?
performance memory-management logstash logstash-file logstash-configuration
我一直在尝试配置logstash来读取在我的亚马逊S3存储桶中生成的日志,但是没有成功.以下是详细信息:
input {
s3 {
access_key_id => "MY_ACCESS_KEY_ID"
bucket => "MY_BUCKET"
region => "MY_REGION"
secret_access_key => "MY_SECRET_ACESS_KEY"
prefix => "/"
type => "s3"
add_field => { source => gzfiles }
}
}
filter {
if [type] == "s3" {
csv {
columns => [ "date", "time", "x-edge-location", "sc-bytes", "c-ip", "cs-method", "Host", "cs-uri-stem", "sc-status", "Referer", "User-Agent", "cs-uri-query", "Cookie", "x-edge-result-type", "x-edge-request-id" ]
}
}
if([message] =~ /^#/) {
drop{}
}
}
output {
elasticsearch {
host => "ELASTICSEARCH_URL" protocol … amazon-s3 amazon-web-services logstash logstash-file logstash-configuration
我正在使用Logstash将JSON消息输出到API。我正在使用“映射”属性来映射我的消息。请参阅以下我的托运人配置。
output {
stdout { }
http {
url => "http://localhost:8087/messages"
http_method => "post"
format => "json"
mapping => ["MessageId","654656","TimeStamp","2001-12-31T12:00:00","CorrelationId","986565","MessageType","%{log_MessageType}" ,"MessageTitle","%{log_MessageTitle}","Message","%{log_Message}"]
}
}
Run Code Online (Sandbox Code Playgroud)
此配置工作正常,并产生以下输出:
{
"MessageId": "654656",
"TimeStamp": "2001-12-31T12:00:00",
"CorrelationId": "986565",
"MessageType": "INFO",
"MessageTitle": "TestTittle",
"Message": "Sample Message"
}
Run Code Online (Sandbox Code Playgroud)
输入日志条目:
TID: [0] [ESB] [2016-05-30 23:02:02,602] INFO {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService} - Configured Registry in 572ms {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService}
Run Code Online (Sandbox Code Playgroud)
模式:
TID:%{SPACE}\[%{INT:log_SourceSystemId}\]%{SPACE}\[%{DATA:log_ProcessName}\]%{SPACE}\[%{TIMESTAMP_ISO8601:log_TimeStamp}\]%{SPACE}%{LOGLEVEL:log_MessageType}%{SPACE}{%{JAVACLASS:log_MessageTitle}}%{SPACE}-%{SPACE}%{GREEDYDATA:log_Message}
Run Code Online (Sandbox Code Playgroud)
问题陈述:
我想通过HTTP映射跟踪输出。我想在消息中使用嵌套的JSON类型,如何在映射标记中添加它。
预期产量:
{
"MessageId": "654656",
"TimeStamp": "2001-12-31T12:00:00",
"CorrelationId": "986565",
"MessageType": "INFO",
"MessageTitle": "TestTittle",
"Message": "Sample Message",
"MessageDetail": {
"FieldA": "65656",
"FieldB": "192.168.1.1",
"FieldC": "sample …Run Code Online (Sandbox Code Playgroud) json logstash logstash-grok logstash-file logstash-configuration
我正在尝试使用文件输入,json过滤器和elasticsearch输出使用Logstash解析大型消息.99%的时间这个工作正常,但当我的一条日志消息太大时,我得到JSON解析错误,因为初始消息被分解为两个部分无效的JSON流.此类消息的大小约为40,000+个字符.我看看是否有关于缓冲区大小的信息,或者我应该尝试留下的一些最大长度,但没有任何运气.我发现的唯一答案与udp输入有关,并且能够更改缓冲区大小.
Logstash是否为每个事件消息设置了限制大小? https://github.com/elastic/logstash/issues/1505
这也可能类似于这个问题,但是从来没有任何回复或建议:Logstash Json过滤器对于大型嵌套JSON意外行为
作为一种解决方法,我想将我的消息分成多个消息,但我无法做到这一点,因为我需要所有信息都在Elasticsearch中的相同记录中.我不相信有办法从logstash调用Update API.此外,大多数数据都在一个数组中,所以虽然我可以使用脚本更新Elasticsearch记录的数组(Elasticsearch upserting并附加到数组),但我无法从Logstash中做到这一点.
数据记录看起来像这样:
{ "variable1":"value1",
......,
"variable30": "value30",
"attachements": [ {5500 charcters of JSON},
{5500 charcters of JSON},
{5500 charcters of JSON}..
...
{8th dictionary of JSON}]
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道让Logstash处理这些大型JSON消息的方法,或者我可以将它们拆分并让它们最终存在于同一个Elasticsearch记录中的方式(使用Logstash)?
任何帮助表示赞赏,我很乐意添加所需的任何信息!
重新启动Logstash后,有时会发现Logstash会复制日志事件.想知道,什么是应用正确的方式start_position,sincedb_path,sincedb_write_interval的配置选项.
/home/tom/testData/*.logXXX.log重命名文件并创建XXX-<date>.log新XXX.log文件.在这种情况下,名称不会更改,但inode会更改.如果有人能对此有所了解,我将非常感激.
input {
file {
path => "/home/tom/testData/*.log"
type => "log"
start_position => "beginning"
sincedb_path => "/persistent/loc"
sincedb_write_interval => 10
}
}
Run Code Online (Sandbox Code Playgroud) 错误:
c:\ Program Files\Logstash\bin> logstash.bat -e'input {stdin {}} output {stdout {}}'发生意外错误!:错误=>错误的URI(不是URI?):文件:// c:/ Program Files/Logstash/confi g/log4j2.properties,:backtrace => ["C:/ Program Files/Logstash/vendor/jruby/lib/ruby/1.9/uri/common.rb:176:在split'","C:/ Program Files/Logstash/vendor/jruby/lib/ruby/1.9/uri/common.rb:210:在解析'","C:/ Program Files/Logstash/vendor/jruby/lib/ruby/1.9/uri/common.rb:747:在解析'","C:/ Program Files/Logstash/vendor/jruby/lib/ruby/1.9/uri/common.rb:994:inURI'","c:/ Program Files/Logstash/log stash-core/lib/logstash/logging/logger.rb:76:in initialize '","org/jruby/ext/thread/Mutex.java:149:insynchronize'","c:/ Program Files/Logstash/logstash-core/lib/logstash/logging/logger.rb:74:in in itialize' ","c:/ Program Files/Logstash/logstash -core/lib/logstash/runner.rb:193:不执行'","c:/ P rogram Files/Logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:67:在运行'","c:/ Program Files/Logstash/logstash -core/lib/logstash/runner.rb:178:inrun' ","c:/ Program Files/Logst ash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:132:in run'","c:\ Program Files\\ Logstash\lib\bootstrap\environment.rb:71:in(root)'"]