Supposons que vous disposiez de 2 types de journaux très différents, tels que des journaux techniques et commerciaux, et que vous souhaitez:
gelf
,elasticsearch_http
sortie.Je sais que avec Syslog-NG
_ par exemple, le fichier de configuration permet de définir plusieurs entrées distinctes qui peuvent ensuite être traitées séparément avant d'être envoyées; ce que Logstash
semble incapable de faire. Même si une instance peut être lancée avec deux fichiers de configuration spécifiques, tous les journaux utilisent le même canal et sont appliqués aux mêmes traitements ...
Devrais-je exécuter autant d'instances que j'ai différents types de journaux?
Devrais-je exécuter autant d'instances que j'ai différents types de journaux?
Non! Vous ne pouvez exécuter qu'une seule instance pour gérer différents types de journaux.
Dans le fichier de configuration logstash, vous pouvez spécifier chaque entrée avec différents type . Ensuite, dans le filtre, vous pouvez utiliser if pour distinguer différents traitements, et vous pouvez également utiliser à la sortie "if" pour une destination différente.
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
}
}
J'espère que cela peut vous aider :)
J'ai utilisé des balises pour la saisie de plusieurs fichiers:
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}"
}
}
}
Je pense que logstash ne peut pas lire plus de 2 fichiers dans la section Input. essayez le ci-dessous
input {
file {
type => "technical"
path => "/home/technical/log"
}
file {
type => "business"
path => "/home/business/log"
}
file {
type => "business1"
path => "/home/business/log1"
}
}