Archive for the 'Z życia sysadmina' Category

Szpiegowanie logów

Jeźeli mieliście kiedyś do czynienia z jakimkolwiek serwerem, to wiecie do czego służą logi. Jest kilka narzędzi przydatnych do ich obserwowania i alarmowania o niebezpiecznych sytuacjach (logcheck, logwatch), które działają samodzielnie i wysyłają co jakiś czas maile z ważnymi (lub nie) informacjami).

Często jednak trzeba samemu zapuścić się w czeluścia /var/log/ i poszukać interesującej nas informacji. Zwykle dzieje się tak, kiedy komuś zagubi się bardzo ważna przesyłka pocztowa, lub nie może połączyć się z siecią lokalną. W takim przypadku pozostaje żmudne grepowanie poszczególnych plików w poszukiwaniu interesującego nas zdarzenia. Do tego w paradę wchodzi często logrotate, nie tylko kompresując logi, ale sprawiając, że grep przeszukuje je w odwrotnej kolejności niż chronologiczna, co czasem nie jest zbyt miłe.

Kiedy już znudziła mi się zabawa w ręczne grepowanie, postanowiłem ułatwić to sobie kilkoma skryptami. Tak powstał logspy - zestaw skryptów shella do interaktywnego przeglądania i przeszukiwania logów. Jest on łatwy do instalacji i pozwala na szybkie modyfikacje i przystosowanie do aktualnych potrzeb. Kilka przykładów użycia:

  • Pokazanie zawartości wybranego pliku z logami:
    logspy /var/log/syslog
  • Wyświetlenie wybranych logów w $PAGER:
    logpager mail syslog messages
  • Wyszukanie frazy w wybranych logach:
    loggrep "ala ma kota" syslog auth dhcp
  • Wyszukanie adresu e-mail w ostatnim logu SMTP:
    loggrep user@domena mail
  • To samo kilka logów wstecz (mail jest przeszukiwany standardowo, logi są przeszukiwane w kolejności chronologicznej):
    logg user@domena 5
  • To samo z 3-linijkowym kontekstem z góry oraz dołu wyszukanej frazy:
    logg user@domena 5 3 mail
  • Grepowanie kilku logów naraz w czasie rzeczywistym:
    logfeed mail syslog dhcp | grep user

Nazwy komend można pisać skrótowo: logspy = logs, logfeed = logf, itd. Również nazwy logów mogą być pisane skrótowo, ich lista znajduje się w katalogu ‘lib/logspy/resolvers/‘. Dokładna składnia pojawia się po uruchomieniu logspy bez argumentów.

Skrypt jest napisany w zsh i wykorzystuje do pracy sudo, więc przy odpowiedniej konfiguracji uprawnień można korzystać z niego bez potrzeby logowania na konto root. Jeśli macie w systemie zainstalowany ccze, logi będą automatycznie kolorowane.

Przy pomocy jednego symlinka można łatwo wybrać, które logi są uważane za “standardowe” (przydane, jeżeli macie różne usługi na różnych maszynach), będą one używane w przypadku nie podania konkretnych nazw logów. W zestawie załączam obsługę większości popularnych logów (systemy pocztowe, DHCP, DNS, FTP, logowanie do systemu, uwierzytelnianie su oraz sudo), oczywiście łatwo można dodać własne. Zapraszam do testowania. :-)

logspy-0.1.tar.gz

expert

Pewnie spotkaliście się już z zintegrowanymi urządzeniami dla ZU. Są to zwykle komputery PC przerobione na małe dzieła sztuki - zminiaturyzowana obudowa, miejsce na kilka dysków twardych, dwa lub trzy porty Ethernetowe, brak napędu CD. Pod maską jest zwykle Linux, *BSD lub jakiś inny system uniksopodobny (no bo jaki, przecież nie Windows, wtedy cena tego cuda byłaby dużo większa. Taki system ma kilka narzędzi sieciowych oraz serwery różnych usług, połączone zgrabnym interfejsem wyświetlanym przez wbudowany serwer HTTP. Na zewnątrz może to być serwer plików, router “sprzętowy” czy też inne cudo.

Takie maszynki są projektowane jako łatwe w obsłudze przez mitycznych ZU. Mają proste strony konfiguracji, w których nie można nic pogrzebać, co ma gwarantować niezawodność i sprawność urządzenia aż do śmierci cieplnej tego wszechświata. O ile nie trafi się jakiś błąd.

Kiedy coś przestanie działać (lub nie będzie działało od początku), ZU zrobi to, co umie robić najlepiej - zadzwoni do Lokalnego Informatyka. Taka osoba jest zwykle obeznana ze sprzętem i oprogramowaniem na tyle, że potrafi automatycznie wykluczyć większość prostych błędów typu wpisanie złego adresu IP lub brak bramy sieciowej. Ale w pewnym momencie najzwyczajniej trafi na ścianę - strona WWW urządzenia powie, że “interfejs sieciowy jest włączony”, “łącze gotowe do użycia”, lecz “błąd w konfiguracji” sprawia, że maszynka nie widzi niczego w naszej sieci, ani nie jest przez żaden komputer osiągalna.

Co wtedy robi taki informatyk? Zwykle szuka jakiegoś interfejsu dla ekspertów - otwartego portu SSH (lub chociaż telnet), bardzo zaawansowanej strony konfiguracji w gąszczu przycisków i przełączników w panelu konfiguracyjnym. I oczywiście niczego takiego nie znajduje, ponieważ urządzenie zostało zaprojektowane dla ZU. Co prawda w panelu jest strona która pozwala na “sprawdzenie” podanego adresu IP czy też strony WWW, lecz ma ustaloną listę portów - można przetestować DNS, HTTP, FTP. Ale nie DHCP - bo po co, przecież ta cudowna maszynka sama jest serwerem DHCP i to ona się zajmie siecią. A to, że ktoś chce ją zamontować wewnątz innej sieci z DHCP i chce jej przyznawać adres IP zdalnie, to pikuś.

A przecież z faktu istnienia uniksopodobnego systemu na pokładzie wynika tak prosta rzecz, jak dostęp do konsoli. Gdyby można było się zalogować, tak jak chociażby w Livebox TP, życie byłoby dużo prostsze. Możnaby sprawdzić stan interfejsów sieciowych przy pomocy ethtool, popingować sobie kilka adresów w sieci, zatelnetować się na różne porty na nadrzędnym routerze i sprawdzić dostępność usług… Cóż, marzenia. Nie chciałbym znaleźć się znów takiej sytuacji, dlatego wystosuję mały apel.

Do firm i projektantów tworzących takie maszynki

Panowie (i Panie), pomyślcie czasem o podobnych sobie fachowcach, którzy muszą zrywać się po nocach “bo internet nie działa”. Dodajcie w swoich panelach administracyjnych magiczny przycisk “Tryb zaawansowany”. Nie musi się za nim kryć żaden skomplikowany mechanizm, wystarczy uaktywnić port 22 na wewnętrznym interfejsie sieci LAN, aby sysadmini mogli się zalogować do konsoli i sprawdzić, co nie działa. Bardzo Was też proszę o oznaczanie w jakiś sposób takiej możliwości na opakowaniach swoich produktów, np.: “zawiera zaawansowane możliwości konfiguracyjne”, czy też “dostęp do linii poleceń”. To nam wszystkim bardzo pomoże.

Do użytkowników takich maszynek

Moi drodzy, kiedy będziecie kupować jakieś zaawansowane serwery plików czy też inne firewalle, wspomnijcie na swoich Lokalnych Informatyków i zwróćcie uwagę na możliwości zaawansowanego dostępu do danego urządzenia. To oszczędzi Wam nerwów, a waszym sysadminom nerwicowych wrzodów żołądka.

Do sysadminów tych… tworów

Łączę się z Wami w bólu.

Na koniec mała dygresja. Instalator Debiana standardowo po wciśnięciu Enter wybiera tryb “prosty” - pyta się użytkownika o jego język narodowy, jakiś czas potem proponuje ustawić układ partycji na dysku, pyta się o nazwę komputera i hasło administratora. Ale jeśli przed rozpoczęciem instalacji wpiszemy w ekranie bootowania expert, instalator wejdzie w tryb zaawansowany - będzie pytać się o każdą pierdółkę i każdy jeden krok instalacji, pozwalając w dowolnej chwili wejść w tryb konsoli i sprawdzić używając BusyBox, co w naszym komputerze niedomaga. Jak widać - da się.