Monitoring Serwerów - Forum o monitoringu infrastruktury IT
Duplikacja dokumentów - Printable Version

+- Monitoring Serwerów - Forum o monitoringu infrastruktury IT (https://monitoringserwerow.pl)
+-- Forum: MONITORING INFRASTRUKTURY IT (https://monitoringserwerow.pl/forumdisplay.php?fid=1)
+--- Forum: Logstash (https://monitoringserwerow.pl/forumdisplay.php?fid=20)
+--- Thread: Duplikacja dokumentów (/showthread.php?tid=118)



Duplikacja dokumentów - WhiteHatPirate - 04-15-2021

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?


RE: Duplikacja dokumentów - SzymonC - 04-15-2021

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"
    }
  }
}



RE: Duplikacja dokumentów - WhiteHatPirate - 04-15-2021

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.


RE: Duplikacja dokumentów - SzymonC - 04-15-2021

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


RE: Duplikacja dokumentów - WhiteHatPirate - 04-15-2021

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?


RE: Duplikacja dokumentów - SzymonC - 04-15-2021

(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.