Stel dat u 2 zeer verschillende soorten logboeken hebt, zoals technische en zakelijke logboeken, en dat u het volgende wilt:
- onbewerkte technische logboeken worden doorgestuurd naar een greylog2-server met behulp van een
gelf
-uitvoer, - json-bedrijfslogboeken worden opgeslagen in een elasticsearch-cluster met behulp van de speciale
elasticsearch_http
-uitvoer.
Ik weet dat met bijvoorbeeld Syslog-NG
het configuratiebestand het mogelijk maakt om verschillende afzonderlijke inputs te definiëren die vervolgens afzonderlijk kunnen worden verwerkt voordat ze worden verzonden; wat Logstash
niet lijkt te kunnen doen. Zelfs als één instantie kan worden gestart met twee specifieke configuratiebestanden, gebruiken alle logboeken hetzelfde kanaal en worden dezelfde verwerkingen toegepast …
Moet ik zoveel instanties uitvoeren als ik verschillende soorten logboeken heb?
Antwoord 1, autoriteit 100%
Moet ik zoveel instanties uitvoeren als ik verschillende soorten logboeken heb?
Nee! U kunt slechts één instantie uitvoeren om verschillende soorten logboeken te verwerken.
In het logstash-configuratiebestand kunt u elke invoer specificeren met verschillende type.
Dan kun je in het filter ifverschillende verwerkingen te onderscheiden,
en ook bij de uitgang kun je de “if”-uitvoer naar een andere bestemming gebruiken.
input {
file {
type => "technical"
path => "/home/technical/log"
}
file {
type => "business"
path => "/home/business/log"
}
}
filter {
if [type] == "technical" {
# processing .......
}
if [type] == "business" {
# processing .......
}
}
output {
if [type] == "technical" {
# output to gelf
}
if [type] == "business" {
# output to elasticsearch
}
}
Ik hoop dat dit je kan helpen 🙂
Antwoord 2, autoriteit 9%
Ik heb tags gebruikt voor invoer van meerdere bestanden:
input {
file {
type => "java"
path => "/usr/aaa/logs/stdout.log"
codec => multiline {
...
},
tags => ["aaa"]
}
file {
type => "java"
path => "/usr/bbb/logs/stdout.log"
codec => multiline {
...
}
tags => ["bbb"]
}
}
output {
stdout {
codec => rubydebug
}
if "aaa" in [tags] {
elasticsearch {
hosts => ["192.168.100.211:9200"]
index => "aaa"
document_type => "aaa-%{+YYYY.MM.dd}"
}
}
if "bbb" in [tags] {
elasticsearch {
hosts => ["192.168.100.211:9200"]
index => "bbb"
document_type => "bbb-%{+YYYY.MM.dd}"
}
}
}
Antwoord 3
Ik denk dat logstash niet meer dan 2 bestanden in het invoergedeelte kan lezen. probeer het onderstaande
input {
file {
type => "technical"
path => "/home/technical/log"
}
file {
type => "business"
path => "/home/business/log"
}
file {
type => "business1"
path => "/home/business/log1"
}
}