Naprawdę jestem nowy w Elk i skonfigurowałem stos Elk, gdzie FileBeat wysyła dzienniki do logowania, aby uzyskać pewne przetwarzanie, a następnie wyjść na ElasticSearch.

Zastanawiałem się, czy możliwe jest utrzymanie nazwy indeksu ustawionej w FileBeat.yml aż do ElasticSearch. Powodem, dla którego chcę tego, ponieważ chcę wiele indeksów dla różnych typów serwerów aplikacji, które mam generowanie dzienników. Jeśli opuścę indeks w logstash.conf, to domyślnie; Ale jeśli coś określam, oczywiście, co działa. Po prostu chcę, aby użył tego, co zostało ustawione w FileBeat.

Czy jest jakiś sposób, aby skonfigurować wiele sekcji wyjściowych, w których można ocenić typy dziennika, dzięki czemu można je odpowiedzieć?

filebeat.yml

# Optional index name. The default index name is set to filebeat in all lowercase.
  index: "something-%{+yyyy.MM.dd}"

logstash.conf

output {
  elasticsearch { 
    hosts => ["somehost:12345"]
    index => "my_filebeat_index_name_would_be_preferred-%{+yyyy-MM-dd}"
  }
}

Chciałbym nadal korzystać z logowania, ponieważ mam niestandardowe wzorce GROK itp., Nie przejść bezpośrednio do elastycznej. Każda pomoc byłaby bardzo doceniana.

Dzięki.

2
stormrage 1 kwiecień 2020, 20:09

1 odpowiedź

Najlepsza odpowiedź

Nazwa indeksu Można określić w plikuBeat.yml ma zastosowanie tylko dla wyjścia ElasticSearch, ponieważ FileBeat łączy się bezpośrednio do klastra. Jeśli jednak użyjesz LOGSTASH jako miejsce docelowe FileBeat, nie jest to możliwe.

P: Czy jest jakiś sposób, aby skonfigurować wiele sekcji wyjściowych, w których można ocenić typy dziennika, dzięki czemu można je odpowiedzieć odpowiednio?

Tak, jest to absolutnie możliwe w rurociągu logowania (i nieco wspólnego). Najpierw musisz ustawić pewne kryteria / znaki do swoich dzienników, aby pozwolić Logstyash wybrać prawidłowe wyjście Elasticsearch (i dzięki temu poprawnym indeksem). Możesz osiągnąć to za pomocą tagów. Tak więc na przykład wszystkie dzienniki / zdarzenia kategorii A Uzyskaj znacznik "Tag_a" (możesz je indywidualizować dowolne źródło dziennika w konkretnych wejściach dziennika lub ogólnie w plikuBeat.yml).

Następnym krokiem jest wdrożenie oceny wartości znaczników w rurociągu logowania. Zrobiłbyś to w następujących czynnościach:

output{
  if "tag_A" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-A-%{+yyyy-MM-dd}"
    }
  }
  else if "tag_B" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-B-%{+yyyy-MM-dd}"
    }
  }
}

To jest, jeśli jest struktura, pozwala indeksować dane do różnych wydatków.

Mam nadzieję, że mogę ci pomóc.

EDYTUJ:

Twoja ocena nie jest ograniczona do tagów. Możesz ocenić wszystkie pola zawarte w dokumentach, np. Nazwa pliku, nazwa hosta itp.

Możesz przyjrzeć się temu odniesieniem (HTTPS : //www.elastashion.co/guide/en/logstash/current/event-dependent-Configuration.html) na temat sposobów dostępu do wartości pola, czy warunkowo itp. W konfiguracjach logowania.

EDYCJA 2:

Bardziej wyrafinowane byłoby dodanie pola do dokumentów, które zawiera dokładną nazwę indeksu docelowego (za pomocą opcji pól w wejściach dziennika lub w plikuBeat.yml). Dzięki temu podejściu nie ma już potrzeby oceny w rurociągu logowania, ponieważ dynamicznie ustawisz wartość dla ustawień indeksu z wartości pola.

Zakładając, że oznakowanie tego pola destination_index Następnie możesz zaimplementować wtyczkę wyjściową jak poniżej:

output{
  if [destination_index]{   #optional check for field's existance in document
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "%{[destination_index]}-%{+yyyy-MM-dd}"
    }
  }
}
2
apt-get_install_skill 1 kwiecień 2020, 19:52