可以在 lumberjack 中指定两个不同的编解码器吗?
Possible to specify two different codecs in lumberjack?
我刚刚建立了一个 ELK 堆栈,但我在 /etc/logstash/conf 中的 logstash 配置方面遇到了问题。d 我有两个输入源从一个 linux 服务器转发,它有一个安装在其上的 logstash 转发器 "files" 看起来像:
{
"paths": ["/var/log/syslog","/var/log/auth.log"],
"fields": { "type": "syslog" }
},
{
"paths": ["/var/log/osquery/osqueryd.results.log"],
"fields": { "type": "osquery_json" }
}
如您所见,一个输入是 osquery 输出(json 格式),另一个是 syslog。我当前的 logstash 配置是 osquery.conf:
input {
lumberjack {
port => 5003
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
codec => "json"
}
}
filter {
if [type] == "osquery_json" {
date {
match => [ "unixTime", "UNIX" ]
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
这对于一个输入源工作正常,但我不知道如何将我的其他系统日志输入源添加到同一配置,因为 "codec" 字段在输入中——我不能将其更改为系统日志...
我还计划添加另一个未被 logstash 转发器转发的 windows 日志格式的输入源。无论如何有不同的结构吗?
如果您要在同一输入上处理不同的编解码器,最好只从输入中删除编解码器:
input {
lumberjack {
port => 5003
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
if [type] == "osquery_json" {
json {
source => "field_name_the_json_encoded_data_is_stored_in"
}
date {
match => [ "unixTime", "UNIX" ]
}
}
if [type] == "syslog" {
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
然后您只需决定要对系统日志消息执行的操作。
我还建议将您的配置拆分为多个文件。我倾向于使用 01-filename.conf - 10-filename.conf 作为输入,11-29 作为过滤器,高于此值的任何值作为输出。这些文件将按照它们在 ls 中打印的顺序加载到 logstash。
我刚刚建立了一个 ELK 堆栈,但我在 /etc/logstash/conf 中的 logstash 配置方面遇到了问题。d 我有两个输入源从一个 linux 服务器转发,它有一个安装在其上的 logstash 转发器 "files" 看起来像:
{
"paths": ["/var/log/syslog","/var/log/auth.log"],
"fields": { "type": "syslog" }
},
{
"paths": ["/var/log/osquery/osqueryd.results.log"],
"fields": { "type": "osquery_json" }
}
如您所见,一个输入是 osquery 输出(json 格式),另一个是 syslog。我当前的 logstash 配置是 osquery.conf:
input {
lumberjack {
port => 5003
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
codec => "json"
}
}
filter {
if [type] == "osquery_json" {
date {
match => [ "unixTime", "UNIX" ]
}
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
这对于一个输入源工作正常,但我不知道如何将我的其他系统日志输入源添加到同一配置,因为 "codec" 字段在输入中——我不能将其更改为系统日志...
我还计划添加另一个未被 logstash 转发器转发的 windows 日志格式的输入源。无论如何有不同的结构吗?
如果您要在同一输入上处理不同的编解码器,最好只从输入中删除编解码器:
input {
lumberjack {
port => 5003
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
if [type] == "osquery_json" {
json {
source => "field_name_the_json_encoded_data_is_stored_in"
}
date {
match => [ "unixTime", "UNIX" ]
}
}
if [type] == "syslog" {
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
然后您只需决定要对系统日志消息执行的操作。
我还建议将您的配置拆分为多个文件。我倾向于使用 01-filename.conf - 10-filename.conf 作为输入,11-29 作为过滤器,高于此值的任何值作为输出。这些文件将按照它们在 ls 中打印的顺序加载到 logstash。