나는로 스타 슈트와 신축성있는 검색에 매우 익숙하다. 나는 elasticsearch와 플랫 파일 모두에서 로그 파일을 저장하려고합니다. Logstash가 두 출력을 모두 지원한다는 것을 알고 있습니다. 하지만 동시에 처리됩니까? 아니면 직업을 통해 주기적으로 수행됩니까?은 동시에 다중 출력을 처리 할 수 있습니까?
4
A
답변
5
예 이렇게하면 배송 업체 구성에서 'add_tag'명령으로 입력 내용을 태그 및 복제 할 수 있습니다.
input
{
tcp { type => "linux" port => "50000" codec => plain { charset => "US-ASCII" } }
tcp { type => "apache_access" port => "50001" codec => plain { charset => "US-ASCII" } }
tcp { type => "apache_error" port => "50002" codec => plain { charset => "US-ASCII" } }
tcp { type => "windows_security" port => "50003" codec => plain { charset => "US-ASCII" } }
tcp { type => "windows_application" port => "50004" codec => plain { charset => "US-ASCII" } }
tcp { type => "windows_system" port => "50005" codec => plain { charset => "US-ASCII" } }
udp { type => "network_equipment" port => "514" codec => plain { charset => "US-ASCII" } }
udp { type => "firewalls" port => "50006" codec => plain }
}
filter
{
grok { match => [ "host", "%{IPORHOST:ipaddr}(:%{NUMBER})?" ] }
mutate { replace => [ "fqdn", "%{ipaddr}" ] }
dns { reverse => [ "fqdn", "fqdn" ] action => "replace" }
if [type] == "linux" { clone { clones => "linux.log" add_tag => "savetofile" } }
if [type] == "apache_access" { clone { clones => "apache_access.log" add_tag => "savetofile" } }
if [type] == "apache_error" { clone { clones => "apache_error.log" add_tag => "savetofile" } }
if [type] == "windows_security" { clone { clones => "windows_security.log" add_tag => "savetofile" } }
if [type] == "windows_application" { clone { clones => "windows_application.log" add_tag => "savetofile" } }
if [type] == "windows_system" { clone { clones => "windows_system.log" add_tag => "savetofile" } }
if [type] == "network_equipment" { clone { clones => "network_%{fqdn}.log" add_tag => "savetofile" } }
if [type] == "firewalls" { clone { clones => "firewalls.log" add_tag => "savetofile" } }
}
output
{
#stdout { debug => true }
#stdout { codec => rubydebug }
redis { host => "1.1.1.1" data_type => "list" key => "logstash" }
}
그리고 메인 logstash 인스턴스에서이 작업을 수행합니다 :
input {
redis {
host => "1.1.1.1"
data_type => "list"
key => "logstash"
type=> "redis-input"
# We use the 'json' codec here because we expect to read json events from redis.
codec => json
}
}
output
{
if "savetofile" in [tags] {
file {
path => [ "/logs/%{fqdn}/%{type}" ] message_format => "%{message}"
}
}
else { elasticsearch { host => "2.2.2.2" }
}
}
0
참고로, 당신은 logstash 이벤트에 대한 The life of logstash event를 공부할 수 있습니다.
출력 작업자 모델은 현재 단일 스레드입니다. 출력은 설정 파일에 정의 된 순서대로 이벤트를 수신합니다.
그러나 출력물은 이벤트를 게시하기 전에 일시적으로 버퍼링하기로 결정할 수 있습니다. 예 : 출력은 2 개 또는 3 개의 이벤트를 버퍼링 한 다음 파일에 기록합니다.
예에서 logstash는 지정된 "savetofile"로그를 디스크에 저장하고 다른 로그는 elasticsearch에 출력합니다. 같은 로그를 두 출력에 동시에 출력 할 수 있습니까? –