Zarządzanie przechowywaniem logów w AWS: reguły cyklu życia usługi S3 i najlepsze praktyki Terraform
Jednym z najprostszych sposobów na niezauważalny wzrost kosztów usług w chmurze jest przechowywanie logów. Wiele organizacji zdaje sobie sprawę z wagi gromadzenia logów, jeszcze mniej wie, jak optymalizować i wykorzystywać dane uzyskane z logów, a jeszcze mniej wie, jak długo te logi powinny być przechowywane. Ważne jest, aby zrozumieć, jak często Twoja firma uzyskuje dostęp do tych dzienników i czy Twoja obecna strategia przechowywania danych nadal odpowiada potrzebom biznesowym.
Pracując z klientem nad przeglądem naszej strategii rejestrowania danych, odkryliśmy powtarzający się schemat: dane były przechowywane dłużej, niż było to konieczne, koszty przechowywania stale rosły, a w różnych środowiskach nie obowiązywał żaden standardowy cykl życia.
Aby temu zaradzić, opracowaliśmy formalną politykę przechowywania logów opartą na zarządzaniu cyklem życia Amazon S3 i infrastrukturze jako kodzie (IaC). Rezultatem było bardziej spójne podejście do zarządzania logami, obniżenie kosztów przechowywania danych oraz strategia retencji lepiej dostosowana do wymogów operacyjnych i zgodności.
Zacznij od celu, a nie klas pamięci masowej
Jednym z największych błędów, jakie popełniają organizacje, jest zaczynanie od technologii zamiast skupiania się na wymaganiach biznesowych.
Wiele zasad przechowywania danych opiera się na scenariuszach „co by było, gdyby”:
- A co jeśli potrzebujemy logów sprzed dwóch lat?
- A co jeśli dochodzenie wymaga danych historycznych sprzed 12 miesięcy?
- A co jeśli ktoś poprosi o dokumenty, których już nie posiadamy?
Choć pytania te są zasadne, często skutkują przechowywaniem wszystkiego w nieskończoność.
Zamiast tego zacznij od kilku prostych pytań:
- Jaki jest prawdziwy cel tych dzienników?
- Jak często są one odwiedzane?
- Jaką wartość biznesową dostarczają one użytkownikom po uzyskaniu do nich dostępu?
- Czy istnieją wymogi zgodności określające okresy przechowywania?
- Do kogo należy decyzja o przechowywaniu dziennika?
- Jak możemy obniżyć koszty magazynowania, nie rezygnując z niczego?
Choć różni się to w zależności od firmy, w wielu przypadkach zespoły odkrywają, że dostęp do dzienników starszych niż kilka miesięcy jest rzadki i mają one ograniczoną wartość operacyjną. Są tam dla bezpieczeństwa, a zanim się obejrzysz, masz terabajty i terabajty niechcianej, generującej koszty przestrzeni i bałaganu
Końcowym celem powinno być przechowywanie dzienników na tyle długo, aby móc je wykorzystywać do celów dochodzeniowych, rozwiązywania problemów, zapewniania zgodności i audytów, unikając przy tym niepotrzebnych kosztów przechowywania.
Różne środowiska mają różne potrzeby
Nie każde środowisko wymaga takiego samego okresu przechowywania.
Rejestry produkcyjne często stanowią podstawę audytów, reagowania na incydenty i dochodzeń dotyczących bezpieczeństwa. Dzienniki rozwoju służą zazwyczaj do krótkoterminowego debugowania i zazwyczaj można je przechowywać przez znacznie krótszy czas.
Nasza strategia retencji została opracowana w oparciu o wymagania specyficzne dla danego środowiska. Poniżej znajduje się przykład, jak to może wyglądać.
Produkcja
Retencja: 12 miesięcy
Dzienniki produkcyjne wymagają najdłuższego przechowywania, ponieważ obsługują:
- Śledztwa bezpieczeństwa
- Reagowanie na incydenty
- Wymagania dotyczące zgodności i audytu
- Analiza operacyjna historyczna
Strategia cyklu życia:
- Dni 0–30: S3 Standard
- Dni 31–90: S3 Standard-IA
- Dni 91–365: S3 Elastyczne odzyskiwanie lodowca
- Usuń po 12 miesiącach
Zapewnienie jakości
Przechowywanie: 90 dni
Dzienniki QA służą przede wszystkim do:
- Walidacja wydania
- Analiza regresji
- Rozwiązywanie problemów historycznych
Strategia cyklu życia:
- Dni 0–60: S3 Standard-IA
- Usuń po 90 dniach
Rozwój
Przechowywanie: 30 dni
Rejestry rozwoju służą przede wszystkim do:
- Debugowanie aplikacji
- Rozwiązywanie problemów
- Wsparcie rozwoju
Strategia cyklu życia:
- Dni 0–30: S3 Standard-IA
- Usuń po 30 dniach
Dzięki dostosowaniu retencji do każdego środowiska uniknęliśmy stosowania kosztownych wymagań dotyczących retencji na poziomie produkcyjnym tam, gdzie nie było to potrzebne.
Wybór odpowiednich klas pamięci masowej S3
Amazon S3 oferuje kilka klas pamięci masowej, z których każda została zaprojektowana dla różnych wzorców dostępu.
Kluczową lekcją jest to, że wybór klasy pamięci masowej powinien być podyktowany rzeczywistym wykorzystaniem, a nie założeniami.
Oto kilka pytań, które warto rozważyć:
- Jak często uzyskuje się dostęp do logów?
- Czy są pewne kłody cenione bardziej niż inne?
- Jak obecnie skonfigurowane są nasze kontenery s3?
- Czy dostęp do nich jest rzadkością po upływie pierwszego miesiąca?
- Jak szybko należy je odzyskać?
- Czy koszty wyszukiwania są akceptowalne?
W naszym przypadku użycia:
Standard S3
Używane w przypadku nowo utworzonych dzienników produkcyjnych, do których natychmiastowy dostęp jest istotny.
S3 Standard-IA
Stosowane w przypadkach, gdy dostęp do dzienników jest nadal okazjonalny, ale nie jest już wymagany pilny charakter standardów.
S3 Glacier Elastyczne pobieranie
Używane do długoterminowej archiwizacji, do której dostęp jest rzadki, ale w razie potrzeby możliwe jest odzyskanie danych.
AWS udostępnia pełne zestawienie dostępnych klas pamięci masowej S3 i ich wad i zalet, które można znaleźć tutaj:
https://aws.amazon.com/s3/storage-classes/
Infrastruktura jako kod ułatwia zarządzanie
Polityka przechowywania danych ma wartość jedynie wtedy, gdy jest konsekwentnie egzekwowana.
Zamiast ręcznie konfigurować reguły cyklu życia w różnych środowiskach, wdrożyliśmy nasze zasady cyklu życia przy użyciu Terraform.
Przyniosło to szereg korzyści:
- Konfiguracje cyklu życia wielokrotnego użytku
- Zmiany kontrolowane przez wersję
- Recenzja koleżeńska poprzez żądania ściągnięcia
- Spójne wdrażanie w różnych środowiskach
- Zmniejszone ryzyko dryfu konfiguracji
Dzięki Infrastrukturze jako Kodowi zarządzanie retencją przekształciło się z jednorazowego zadania konfiguracji w powtarzalny proces operacyjny.
Chroń się przed błędami
Zasady cyklu życia automatyzują usuwanie i przechodzenie między magazynowaniem. To sprawia, że są potężne, ale także potencjalnie niebezpieczne.
Przed włączeniem automatycznego wygasania i przejść:
- Włącz wersjonowanie kontenera S3
- Walidacja reguł cyklu życia w środowisku nieprodukcyjnym
- Potwierdź obliczenia czasu przejścia
- Zachowanie wygaśnięcia obiektu testowego
- Zweryfikuj przepływy pracy pobierania
- Upewnij się, że wybrane zostaną właściwe wiadra
Kontrola wersji zapewnia dodatkową warstwę ochrony przed przypadkowym usunięciem lub błędnie skonfigurowanymi regułami cyklu życia.
Test przed produkcją
Przed wdrożeniem wdrożyliśmy prosty proces walidacji:
- Utwórz dedykowany kontener programistyczny.
- Archiwizuj logi rozwoju w kontenerze.
- Zastosuj proponowane zasady cyklu życia.
- Sprawdź poprawność przejść między klasami pamięci masowej.
- Sprawdź zachowanie daty wygaśnięcia.
- Udokumentuj wyniki.
- Uzyskaj zgodę przed przejściem do innych grup programistycznych,
- Awansuj do wyższych środowisk
Dzięki temu podejściu mogliśmy wcześnie identyfikować problemy z konfiguracją, minimalizując jednocześnie ryzyko.
Sprawy zarządzania
Za przechowywanie dziennika nie powinien odpowiadać pojedynczy inżynier.
Skuteczna polityka retencji wymaga współpracy między:
- Zespoły DevOps
- Zespoły ds. bezpieczeństwa
- Zespoły ds. zgodności
- Przywództwo w zakresie infrastruktury
Jasna struktura własności pomaga zapewnić, że okresy przechowywania danych są zgodne z wymogami biznesowymi i regulacyjnymi w miarę rozwoju systemów.
Ostatnie myśli
Najbardziej efektywna polityka przechowywania logów niekoniecznie oznacza taką, która zapewnia ich najdłuższe przechowywanie.
To jest ten, który równoważy:
- Koszt
- Zgodność
- Bezpieczeństwo
- Widoczność operacyjna
- Prostota
Organizacje często przechowują dane ze względu na hipotetyczne przyszłe potrzeby, a nie ze względu na rzeczywiste wymagania biznesowe. Dzięki zrozumieniu sposobu wykorzystania dzienników, dostosowaniu okresów przechowywania do potrzeb konkretnego środowiska, wykorzystaniu odpowiednich klas pamięci masowej S3 i przejść między pamięciami masowymi oraz wdrażaniu zasad za pośrednictwem IaC zespoły mogą znacząco obniżyć koszty pamięci masowej, zachowując jednocześnie widoczność, której faktycznie potrzebują.
Co najważniejsze, pamiętaj, że każda organizacja jest inna. Opisana tutaj strategia cyklu życia sprawdziła się w naszym przypadku, ale okresy przechowywania, klasy pamięci masowej i harmonogramy archiwizacji zawsze powinny być określone na podstawie własnych wymagań operacyjnych i zobowiązań dotyczących zgodności.
Autor
Podoba Ci się to co słyszałeś? Masz pytania dotyczące tego, co jest dla Ciebie odpowiednie? Chętnie porozmawiamy! Skontaktuj się z nami