Niedawno postawiłem świeży stos ELK (Elastic Search, Logstash, Kibana). Wszystko fajnie śmigało przez trochę ponad 2 tygodnie aż przestało.
Nowe wpisy przestały się pojawiać w Elastic search. Sprawdziłem czy procesy działają, ale działały. Następnie zajrzałem do logów Logstasha i znalazłem tam wpis z komunikatem:
"reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
Był tam też drugi wpis wskazujący, że chodzi o index nazywający się logstash-2019.12.28-0002. Logstash tworzy domyślnie politykę w ES, która ustawia flagę „read_only_allow_delete” na starych indeksach. Stwierdziłem, że któraś z usług wygenerowała dziwny wpis, z datą z przeszłości i że wskazany powyżej index należy odblokować. Tak też zrobiłem, co odblokowało cały mechanizm.
Niestety na drugi dzień problem się powtórzył. Okazało się że mam tylko dwa indeksy z przedrostkiem „logstash-” i oba z 28-go grudnia. Śledztwo doprowadziło mnie do tego błędu zgłoszonego na Github. Okazuje się, że domyślny format nazwy indeksu używany przez Logstash – „logstash-%{+YYYY.MM.dd}”, zawiera duże litery Y, co oznacza, że nazwa indeksu powinna zawierać rok bieżącej epoki, w przypadku naszego kręgu kulturowego jest to ilość lat od błędnie wyznaczonej daty narodzenia Chrystusa. Okazuje się, że na niektórych platformach ten format nie działa, a ja miałem pecha używać takowej.
Rozwiązaniem jest zmiana formatu indeksu na taki zawierający małe litery y.
index => "logstash-%{+yyyy.MM.dd}"
Także na zakończenie tego wpisu, życzę wam wszystkim żeby ludzkość jak najszybciej przeszła na UTC.
Jedna odpowiedź do “Gdy Logstash przestaje działać po dwóch tygodniach.”