Monitoring Serwerów - Forum o monitoringu infrastruktury IT
Duplikacja dokumentów
#1
Cześć.

Zbieramy dane w elasticu i wizualizujemy je, ale czasem wyniki są przekłamane. Sprawdziliśmy i wychodzi na to, że to przez logstasha. Okazjonalnie zaczyta dane powtórnie z jakiegoś powodu. Jest jakiś sposób na to?
Reply
#2
Hej.

Ok, więc jak sam zauważyłeś/aś logstash wysyła dokumenty i czasem (przez restart, konfigurację lub nawet same źródło) duplikaty mogą pojawić się w systemie. Dobrym sposobem, żeby sobie z tym poradzić jest uzupełnienie konfiguracji logstasha o fingerprint.

Logstash buduje unikalny fingerprint dla dokumentu, na bazie jakichś pól i wtedy zastępujemy nim id dokumentu. Konfiruacja może wyglądać jak poniżej:


Code:
Input {
  if "foo" in [tags] {
    fingerprint {
      source => [ "[host]", "[file][fullname]", "[file][content]" ]
      target => "generated_id"
      method => "SHA1"
      key => "xyz"
      concatenate_sources => "true"
    }
  }
}

Output {    
  if "foo" in [type] {
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "boo"
      document_id => "%{generated_id}"
    }
  }
  else {
    elasticsearch {
      hosts => "127.0.0.1:9200"
      index => "moo"
    }
  }
}
Reply
#3
Ok, fajnie. A nie a jakiegoś sposobu, żeby to ogarnąć bez zmiany konfiguracji logstasha? Na przykład w kibanie? Poza tym zduplikowany dokument będzie mieć inny @timestamp i też będzie przekłamywał wyniki.
Reply
#4
Tak, @timestamp może być inny od oryginalnego, jeśli tego pola też nie obsłużymy w konfiguracji logstasha.

Z drugiej strony pole @timestamp nie jest niczym unikalnym ani tym bardziej wymaganym w kibanie.  Te pole jest dodawane przez logstash w momencie, w którym odebrał dokument, ale to wszystko.

Jeśli wasze wyliczenia bazują na aspekcie czasu, to wówczas proponuję pobierać datę z innego miejsca, np. czas utworzenia wpisu przez źródło. Mając takie pole, utworzyć nowy index pattern w kibanie, który będzie tworzył oś czasu nie na bazie @timestamp, a właśnie na bazie tego nowego pola.

Jeśli chodzi o inne opcje:
Generalnie obsługa tego w logstashu jest zdecydowanie najlepszym rozwiązaniem. Jeśli chcemy obsłużyć to w kibanie to jest to trochę zamiatanie pod dywan, a nie rozwiązywanie problemu duplikacji dokumentów. Wink
Niemniej jednak - w wizualizacjach w kibanie mamy dostępna metryke Unique Count, którą można wykorzystać do tego, by daną wartość zliczała jedynie raz i wtedy wyliczenia nie będą brały pod uwagę duplikatów.
Ostatecznie można pobawić się jeszcze ze scripted fields, ale to wymaga skryptowania i nie jest rekomendowane do użycia w produkcyjnych środowiskach. Jeśli już zabieramy się do kodu, to niech to będzie kod konfiguracji logstasha. Big Grin
Reply
#5
W porządku, ale teraz jest kolejny problem - jeśli mam utworzyć nowy index pattern to stare wizualizacje nie będą na nim działać! Wszystkie wizualizacje mam robić od 0 w związku z nowym patternem?
Reply
#6
(04-15-2021, 11:47 AM)WhiteHatPirate Wrote: kolejny problem - jeśli mam utworzyć nowy index pattern to stare wizualizacje nie będą na nim działać!

Nie zapominajmy, że prawdziwym problemem jest duplikacja dokumentów Smile

W każdym razie przepięcie wizualizacji to nowy pattern nie jest szczególnie skomplikowana. Każdy pattern ma swoje id. Jedyne co trzeba zrobić to edytować kod wizualizacji i podmienić id starego patternu na te z nowego i wszystko będzie śmigać.

Kod wizualizacji można zobaczyć poprzez przejście do management -> saved objects -> nazwa_wizualizacji.
Reply


Forum Jump:

User Panel Messages