회사에 이용하기 위해 노력중입니다. 그 중에 버그인지 환경을 잘못 구성해서인지 이상하게 있습니다.
filebeat --> logstash --> syslog 서버에 수신된 메세지중에 'sourcehost' 필드 부분이 json 형태로 보입니다.
다른 메세지는 정상으로 보이는데, sourcehost 부분만 이상하게 나와서 문의드립니다.
- 사용중인 버전: filebeat/logstash (6.4.0)
- syslog 수신: syslog-ng (3.7)
logstash (rubydebug)
{
"input" => {
"type" => "log"
},
"@timestamp" => 2018-09-19T07:14:19.019Z,
"offset" => 9477710,
"@metadata" => {
"beat" => "filebeat",
"type" => "doc",
"ip_address" => "1.1.1.1",
"version" => "6.4.0"
},
"host" => {
"name" => "1.1.1.1"
},
"beat" => {
"hostname" => "HTTP_RCG-2",
"name" => "HTTP_RCG-2",
"version" => "6.4.0"
},
"prospector" => {
"type" => "log"
},
"message" => "[7035] : 2018-09-19 16:14:17.402 : {call P_PROC_REQ(?,?,?,?,?,?,?,?,?,?,?,?,?)} - IP : 1.1.1.1, O_RET_CD\t : 0001
"fields" => {
"app_name" => "p_daemon",
"app_logtype" => "log",
"app_id" => 1000
}
}
syslog 서버 (수신된 메세지)
Sep 19 16:14:19 1.1.1.2
{"name":"1.1.1.1"}
p_daemon[1000]: [7035] : 2018-09-19 16:14:17.402 : {call P_PROC_REQ(?,?,?,?,?,?,?,?,?,?,?,?,?)} - IP : 1.1.1.1, O_RET_CD : 0001
logstash config
input {
beats{
port => 5044
}
}filter {
if [fields][app_logtype] == "log" {
mutate {
# Remove junk data
remove_field => [ "@version","source","tags" ]
# syslog hostname --> IP
replace => { "[host][name]" => "%{[@metadata][ip_address]}" }
}
} else {
drop { }
}
}output {
syslog {
host => "1.1.1.3"
port => 515# filebeat (app_name) --> syslog (appname) appname => "%{[fields][app_name]}" # filebeat (app_id) --> syslog (procid) procid => "%{[fields][app_id]}" } stdout { codec => rubydebug { metadata => true } }
}