ELK stack, bash - config file logstasha - output na rozne indexy

0

Hej, dostałem zadanie skonfigurowania nowego indexu na Kibanie by miec podzielone logi produkcja/staging; na logstashu wczesniej generowalismy jeden typ logu i wszystkie lecialy pod nazwa filebeat-<data>; teraz musi byc filebeat_prod.<data> i filebeat_stg.<data> - pomysly jak/gdzie to zrobic ? - w Kibanie moge zdefiniowac nowy index jezeli logi przyszly z takowym indexem - na elasticsearchu nie znalazlem odpowiednika gdzie to zrobic wiec zostaje logstash; - jednak nie jestem pewien jak - w kazdym logu jest pole fields.env: stg/prod - zrobilem prostego ifa w tym configu ale bez skutku -
(dzialajacy config file na ta chwile )

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "doc"
  }
}

moje if'y ( nie dziala );

if [ "$fields.env" = "prod" ]
    then
      elasticsearch {
        index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
      }
    elif "$fields.env" = "staging" ]
    then
      elasticsearch {
        index => "%{[@metadata][beat_staging]}-%{+YYYY.MM.dd}"
      }
    fi
0

W logstashu masz:

if EXPRESSION {
  ...
} else if EXPRESSION {
  ...
} else {
  ...
}
  1. Skąd ten then?
  2. Nie wystarczy w specyfikacji indeksu użyć pola wskazującego na środowisko? index => "filebeat_%{fields.env}-%{+YYYY.MM.dd}" ?
0
yarel napisał(a):

W logstashu masz:

if EXPRESSION {
  ...
} else if EXPRESSION {
  ...
} else {
  ...
}
  1. Skąd ten then?
  2. Nie wystarczy w specyfikacji indeksu użyć pola wskazującego na środowisko? index => "filebeat_%{fields.env}-%{+YYYY.MM.dd}" ?

blisko - i swietny pomysl zeby fields.env po prostu w nazwie dac - ale kibana jakos nie lapie tego i tworzy sie index " filebeat_%{fields.env}-2018.10.01 "- proboje z roznymi $ % @ przed ale na razie bez skutku

0

Próbowałeś index => "filebeat_%{[fields.env]}-%{+YYYY.MM.dd}" ?

0
yarel napisał(a):

Próbowałeś index => "filebeat_%{[fields.env]}-%{+YYYY.MM.dd}" ?

tak, probowalem tez:

filebeat_%{@fields.env}-2018.10.01
filebeat_%{[@fields.env]}-2018.10.01
filebeat_%{[fields.env]}-2018.10.01
filebeat_%{fields.env}-2018.10.01
filebeat-%{[fields.env]}-2018.10.01
$fields.env-2018.10.01
${@fields.env}-2018.10.01
%{[@fields.env]}-2018.10.01
%{[@metadata][beat][@fields.env]}-2018.10.01
%{[@metadata][beat][fields.env]}-2018.10.01
%{[filebeat][@fields.env]}-2018.10.01
%{fields.env}-2018.10.01
0

Może w tym co logstash dostaje nie ma pola fields.env i go nie zastępuje... Albo pole nazywa się inaczej :-)
Albo pole nazywa się env i jest zagnieżdżone w fields... Próbowałeś %{[fields][env]}?

0
yarel napisał(a):

Może w tym co logstash dostaje nie ma pola fields.env i go nie zastępuje... Albo pole nazywa się inaczej :-)
Albo pole nazywa się env i jest zagnieżdżone w fields... Próbowałeś %{[fields][env]}' ?

jestes geniuszem :D - tak - to działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1