RSS Feed

Grudzień, 2010

  1. O monitoringu, opinia zewnętrzna.

    Grudzień 31, 2010 by 0verlord

    Znalazłem gdzieś taki sobie opis ogólnego podejścia do monitoringu. Polecam lekturę. Doskonale oddaje to, co ja ostatnio przerabiałem sam.

    W skrócie: nagios + nagiosgraph to jest narzędzie do monitorowania i rysowania wykresów w jednym. Icinga jest interesująca, ale wymaga naprawy interfejsu i jakiegoś czasu na ustabilizowanie się i porzucenie ojca nagiosa.

    .


  2. Nagios i template’y

    Grudzień 29, 2010 by 0verlord

    Mocą Zabbixa była możliwość zarządzania hostami przez dość mocno skomplikowany system template’ów.
    Template, inaczej szablon, służy do określania standardowego zestawu takich samych rzeczy, które mają być wykonane zawsze w przypadku hosta z danej grupy. Natomiast jak się ostatnio dowiedziałem z lektury manuala, Nagios potrafi to robić nie gorzej.

    Do czego przydaje się template? Jeżeli mamy 200 hostów, w których monitorujemy np. SSH na porcie 22, a nagle z powodu nadmiaru skanów potrzebujemy przestawić sshd na port 2223, to warto by też przepiąć monitoring. Jeżeli nie mamy szablonów ze standardowymi usługami, a serwisy definiowane dla każdego hosta z osobna, musimy zmienić 200 wpisów. Jeżeli ktoś jest pracowity – do boju do boju do boju wks. Ja jestem przykładem skrajnego lenia i wolę sobie raczej życie ułatwiać, niż utrudniać.

    Więc definiujemy sobie szablon, w obcym jezyku: template. Szablon może dotyczyć hosta oraz serwisu. Host, to wiadomo co to jest. Serwis (service) to np. sprawdzanie SSH albo pinga. W Nagiosie robi się to tak:

    define host{
            name                            generic-host   
            notifications_enabled           1      
            event_handler_enabled           1   
            flap_detection_enabled          1    
            failure_prediction_enabled      1   
            process_perf_data               1       
            retain_status_information       1   
            retain_nonstatus_information    1 
                    check_command                   check-host-alive
                    max_check_attempts              10
                    notification_interval           0
                    notification_period             24x7
                    notification_options            d,u,r
                    contact_groups                  admins
            register                        0      
            }
    

    Interesuje nas name oraz

    register 0

    . To pierwsze wiadomo, trzeba się jakoś do templatki odwołać. To drugie oznacza, że ta definicja tak na prawdę nie jest hostem, i nie należy tego sprawdzać. Za to należy po tym obiekcie dziedziczyć różne rzeczy. Np. powiadomienia. Albo komendy sprawdzające (check_commands). Zresztą nawet wielkie ostrzeżenie w obcym języku tłumaczy opcję register (DONT REGISTER THIS DEFINITION – ITS NOT A REAL HOST, JUST A TEMPLATE!) .

    Takich szablonów można stworzyć wiele, i wcale nie muszą być aż tak rozbudowane jak ten z domyślnego przykładu.
    Nagios pozwala podłaczać wiele szablonów do jednego hosta. A robi się to np. tak:

    define host{
            use             generic-host,specific-host,mroczny-host
            host_name       hostek.domena.com
            alias           hostek
            address        1.2.3.3
            parents         badbadparent
            contact_groups  plumk
    } 
    

    Kluczem jest tutaj linijka z use. Po przecinku listujemy templatki, które mają być zastosowane do hosta. Niestety jeszcze nie doczytałem, która ma pierwszeństwo w przypadku nachodzenia się poniektórych opcji, ale zaktualizuję wpis, jak się dowiem.
    Ten sam mechanizm działa także dla serwisów.

    Za to w Zabbixie, stackowanie templatek (mądre słowo, oznacza dodawanie wielu szablonów do jednego hosta), zostało wprowadzone dopiero od wersji 1.4.x, i generalnie używanie tego jest mroczne jak używanie samego Zabbixa.


  3. Monitoring sieci cz. 1.2

    Grudzień 27, 2010 by 0verlord

    Z ciekawostek monitoringowych, obejrzałem sobie Icingę. To taki klon na bazie Nagiosa, podobno posiadający wszystko to, czego brakuje nagiosowi. Odpaliłem, spróbowałem, odinstalowałem. Sam nie wiem, czy do tego wrócę, bo jeszcze jest za mało natywnych wtyczek pod ten projekt. Wszystkie są pod Nagiosa ;-)Ale kto wie. Jak się projekt ustabilizje, czemu nie.

    Niby Icinga jest w testingu, niby jest kompatybilna z Nagiosem (to akurat sprawdziłem, Icinga rozmawiała do uruchomionych nagios-nrpe-serverów), natomiast takie rzeczy jak nagiosgrapher nie do końca działają, bo mają w Depends: nagiosa3. Trzeba by przekompilować te paczki, żeby można było takich dodatków używać, a to jest dość słabe, bo dochodzi pilnowanie własnego repo i aktualizacji np. security. Lipa.

    Na pewno ma ładniejsze UI, ale z drugiej strony, nie interfejs powoduje, że narzędzie do monitoringu jest lepsze, czy gorsze. Ma kilka dodatków jak super ekstra wypasiony nowy lepszy UI – icinga-web, albo ifejs dla urządzeń mobilnych (icinga-mobile). Ale to mnie jakoś nie ujęło, bo po defaultowej instalacji wszystko się ładowało i ładowało, i nie bardzo chciało cokolwiek pokazać.
    Generalnie po przejrzeniu konfiguracji usunięciu jednej ścieżki zahardkodowanej na stałe, wszystko ruszyło. Wolno. Nawet przeraźliwie wolno. Interfejs jest przepiękny, animacja mapy przefajna. Prędkość działania już nie.
    Tutaj jednak moc starutkiego UI Nagiosa, pokazuje pazur. Ładuje się w pół sekundy i widać dokładnie to, co trzeba, żeby wiedzieć, co się dzieje w sieci. Ładne, nie zawsze oznacza funkcjonalne jak widać.

    Jest też jedna wisienka do tego tortu – dokumentacja. Niby jest wzięta z Nagiosa, ale jakoś się ją lepiej czytało. I tutoriale jak np. odpalić ndoutils polecam szczerze. W Nagiosie są mało czytelne, długie i przeraźliwie nudne.


  4. Nagios3 i grupy

    Grudzień 21, 2010 by 0verlord

    Nagios ma kilka ciekawych funkcjonalności pozwalających zapanować nad chaosem, który niezauważalnie powoli zasysa każdego admina.
    Pierwsza z nich to grupy. Oczywiście można grupować hosty, ten podział jest oczywisty, natomiast znacznie ciekawsze jest grupowanie grup, hostów i możliwości negacji jednego i drugiego.

    Załóżmy, że mamy grupy hostów, www, smtp i ssh.

    Standardowa definicja grupy wygląda np. tak:

    define hostgroup {
       hostgroup_name wszyscy
       alias blablalias
       members host1, host2, host3, host4
    
    }
    

    Jeżeli chcemy wykluczyć jakiegoś hosta z grupy, używamy wykrzyknika:

    define hostgroup {
       hostgroup_name ale_nie_host4
       alias blablalias
       members host1, host2, host3, !host4
    
    }
    

    Żeby grupować grupy, należy użyć dyrektywy hostgroup_members (dostępne chyba od Nagiosa 3)

    define hostgroup {
       hostgroup_name www_i_ssh
       alias blablalias
       hostgroup_members www, ssh
    
    }
    

    Oczywiście i tutaj działa negacja z wykrzyknikiem.

    define hostgroup {
       hostgroup_name wszystkie_grupy_bez_ssh
       alias blablalias
       hostgroup_members www, smtp, !ssh
    
    }
    

    Co ciekawe, kombinacje grup i hostów można łaczyć, np. wykluczamy hosta host1 z grupy wszystkie_grupy i dodajemy hosta666, którego wcześniej nie było nigdzie.

    define hostgroup {
       hostgroup_name wszystkie_grupy_bez_ssh
       alias blablalias
       members host666, !host1
       hostgroup_members www, smtp, ssh
    
    }
    

    A ten sposób mamy możliwość grupowania i wykluczania dowolnych grup, grup hostów i samych hostów. Niezłe, niezłe.


  5. OpenBSD, FBI i kto kogo gdzie posunął

    Grudzień 19, 2010 by 0verlord

    Przerywnik. Po ujawnieniu przez Theo spisku FBI dotyczącego jakoby finansowania iprzez FBI backdorów w kodzie do ipseca, w sieci pojawilo się kilka prześmiewczych obrazków. Ten poniżej to mój ulubiony :-D. Tytuł powinien być „OpenBSD backdoor located!”:


  6. automatyczne generowanie podobnych wpisów w pliku strefy w bind9

    Grudzień 16, 2010 by 0verlord

    Jeżeli generujemy dużo wpisów dla wielu klas, a nie mamy jakoś ochoty na pisanie skryptów typu np.:

    for i in seq 2 254`; do 'echo $i IN PTR rev dla klasa.$i.' >> plik_strefy; done
    

    Można użyć sprytnej dyrektywy $GENERATE. Tak, jest o niej napisane w dokumentacji, ale dokumentacja to przecież ostatnie miejsce gdzie się takich rzeczy szuka prawda?

    Plik strefy wygląda wtedy tak:

    $TTL 21600      ; 6 hours
    @       IN      SOA     ns1.host.net.pl. root.host.net.pl.     (
                                    2010121601     ;serial
                                    3600           ;refresh
                                    900            ;retry
                                    3600000        ;expire
                                    3600           ;minimum
                                    )
    
            IN      NS      ns1.host.net.pl.
            IN      NS      ns2.host.net.pl.
    
    1       IN      PTR     gw-1.2.3.host.net.pl.
    $GENERATE 2-254 $ IN PTR ip-1.2.3.$-host.net.pl.
    255     IN      PTR     nobodyshere.host.net.pl.
    

    Interesujące są dopiero wpisy poniżej IN NS. Taki krótki plik strefy odpowiada na każde zapytanie o reva dla klasy 3.2.1.in-addr.arpa.
    Oczywiście można robić różne zakresy, np.

    $GENERATE 100-200 $ IN PTR ip-1.2.3.$-host.net.pl.
    

    Powyższy wpis wygeneruje rewy dla adresów od 1.2.3.100 do 1.2.3.200.
    Małe – a cieszy.

    Tej dyrektywy można też używać w standardowym pliku strefy, nie tylko w dla revów.


  7. routeboard 750 cz. 2

    Grudzień 9, 2010 by 0verlord

    Przyszło mi zainstalować hosta. Odkąd pamiętam, na hostach mam reiserfsa. Jak się wali – to znaczy, że się zwalił dysk. Miałem jeden przypadek w historii, kiedy posypał się filesystem, ale zadziałało –rebuild-tree. Dwa tygodnie później dysk się wywalił.

    Jakoś nie śledzę informacji, co tam się dzieje w świecie Debiana, wot, nowe wydania wychodzą, kiedy przychodzi ich pora i ogólnie przynudnawo jest. Za to stabilnie, jeżeli się ma wiele dziwnych usług i nie wymaga zawsze najnowszego softu.

    Odpaliłem installer z netboota, bo dziwnym trafem mój Dell Poweredge 2650 nie umiał wystartować ani z wbudowanego CD ani z USB ani z niczego oprócz sieci. Zrobiłem partycje, skonfigurowałem RAID, wybieram filesystem – nie ma reisera. Ki czort? Okazało się, że w międzyczasie wyleciał z testinga. Tfu, zaraza. To pewnie dlatego, że chłopaki z Debiana zawsze stawiali na wolne oprogramowanie, a teraz Reiser już jakby nie do końca jest wolny.

    Jak to naprawić? Odpalić insztalator w trybie experta, z menu wybrać (na samym dole) Zmień prioritet debconfa, wybrać „niski”, potem wrócić do „pobierz dodatkowe składniki instalatora” i wybrać dwie paczki z „reiser” w nazwie. W partycjonerze pojawi się opcja formatowania do reiserfsa. W sumie można to zrobić nawet bez trybu eksperta, po prostu trzeba przy jakiejś wymaganej opcji dać „wstecz” i system wyskoczy do trybu eksperta.

    A żeby dokończyć instalację po SSH, z tegoż samego menu należy wybrać opcję z „ssh” w nazwie, odpowiedzieć na pytania o hasło i zalogować się jako user „installer”. Jak by ktoś nie wiedział:

    ssh -l installer ip serwera -vC2 

    UPDATE: wybranie w instalatorze po ssh opcji „wykryj interfejsu sieciowe” jest dość słaba, i powoduje zerwanie konekta, jakby ktoś pytał.
    UPDATE2: cdrom jak się okazało, jest uwalony.


  8. Jak zrobić delegację revdns w RIPE

    Grudzień 8, 2010 by 0verlord

    Ostatnio mnie trafiło dodawanie obiektów w RIPE. Po raz kolejny klikałem wszystko co związane z LIRem. Przygniotły mnie wnioski, o first-allocation, o assigned-pa i takie tam. Ale było dupogodziny odsiedzieć.
    Natomiast ostatnio pan klient zawinszował sobie delegację rev dnsa dla klas, które wydarłem dla niego od RIPE.
    Po przeczytaniu źródła – już jestem mądry.
    Robimy obiekt domain, tylko co tam wpisać?

    Pole „domain” powinno mieć zapis w postaci 11.22.33.in-addr.arpa dla sieci 33.22.11.0/24. Jeżeli ktoś dostał /16, to analogicznie klika 22.33.in-addr.arpa. Potem tylko trzeba sobie skonfigurować dnsy do obsługi takich stref, ale to temat na osobną bajkę. W góglu jest takich bajek gazyliony.
    Pole „nserver” tłumaczy się samo. Niby wystarczy jedno, ale generalnie zgodnie z zasadami sztuki wypadało by mieć dwa nameservery w dwóch różnych podsieciach (i nie jeden w x.y.z.0/25 a drugi w x.y.z.128/25, tylko w na prawdę różnych miejscach). Jeżeli serwer dns nie ma wpisu w rewdnsa, dostaniemy ostrzeżenie, że tak raczej nie powinno być, ale obiekt się doda.

    Oczywiście obiekt domain musi być mieć mntera (pole „mnt-by”) i odpowiedni do tegoż hasłord.
    A potem już tylko „submit”.


  9. monitoring sieci i systemów – kilka słów ogólnie

    Grudzień 3, 2010 by 0verlord

    Jeżeli chodzi o monitoring sieci, tak na prawdę mamy do dyspozycji dwa poważne rozwiązania i kilkanaście mniej poważnych. Poważne są Nagios i Zabbix, mniej poważna – cała reszta.

    Na co należy zwrócić uwagę przy wyborze systemu monitorowania? Mógłbym wskazać kilka punktów determinujących wybór.

    Wielkość sieci. Małe rzeczy najlepiej monitorować małymi narzędziami. Mało hostów nie wymaga rozwiązania, które umożliwia skalowanie do tysięcy.

    Ilość zmian. Jeżeli mamy małą sieć, mało hostów i mało zmian, wygoda korzystania z narzędzia jest sprawą drugorzędną. Jeżeli mamy tego więcej, ergonomia narzędzia robi się kluczowa. Sytuacja: monitorujemy 2k serwisów na 30 serwerach, a nagle upgrade spowoduje, że proces serwera www przestanie się nazywać httpd, a zacznie apache2, Trzydzieści hostów jeszcze można przeklikać ręcznie. A jeżeli będzie 130 hostów? Trzeba poszukać narzędzia zapewniającego łatwą zmianę. Z tego miejsca pragnę pozdrowić wszystkich, którzy mają np. Cacti i siec, w której się sporo dzieje. Aktualizowanie nowych hostów to padaczka.

    Różnorodność i powtarzalność. Czy możemy w prosty sposób dodawać jedną definicję do wielu serwerów? Czy możemy prosto wykluczać monitorowanie niektórych elementów w zależności od hosta?

    Zasobożerność. Co z tego, że nasz soft może dużo, jeżeli np. generuje przy 20 serwerach i 200 serwisach 1k zapytań do bazy na sekundę (heloł Zabbix)? Czy nie lepiej postawić coś, co pozwoli nie generować aż takiego obciążenia?

    Skalowalność i możliwość replikacji. Jeżeli mamy wiele sieci, które generują różny output, fajnie by było, gdyby dało się rozkładać ruch, a nie zrzucać wszystko na jeden serwer. Najczęściej przy rozproszonej strukturze wybranymi elementami zajmują się rózni ludzie, którzy powinni mieć dostęp do odpowiedniej części systemu.

    Czas wejścia i zrozumienia systemu. Co z tego, że system jest super, jeżeli wdrożenie nowego człowieka w system trwa 3 tygodnie? A szkolenie ze zrozumienia jego komunikatów kilka dni? Tak, mówię o Zabbixie, ma najbardziej pokręcony interfejs świata. Tam nic nie jest intuicyjne. Poprawili trochę odkąd korzystałem z wersji 1.1 (teraz jest 1.8) , ale to dalej ta sama wielka i niezrozumiała kobyła. Natomiast jego możliwości zarządzania szablonami (templae’ami) zabijają. Jak ci ludzie potrafili takie szaleństwo przenieść na schemat bazy danych, to ja nie wiem. Mroczni lordowie wszechświata 😉


  10. lighttpd oraz otrs 3.x.x

    Grudzień 3, 2010 by 0verlord

    Testujemy sobie w fabryce OTRSa, taki system obsługi zgłoszeń, zintegrowany, super ładny i w ogóle.
    Oczywiście standardowo instaluje się toto z Apaczem, generalnie jak kto woli. Ja akurat na tym vserverze mam lighttpd. Na szczęście dobrzy ludzie opisali gdzieś jak ma wyglądać konfig do OTRSa pod Lighttpd. Jest w sumie banalnie prosty, prostszy niż w Apaczu.

    $HTTP["host"] == "otrs.naszhost.pl" {
    	url.rewrite = ( "^/$" => "/otrs" )
    	alias.url += (
    	"/otrs-web" => "/opt/otrs/var/httpd/htdocs",
    	"/otrs"     => "/opt/otrs/bin/cgi-bin",
    )
    $HTTP["url"] =~ "^/otrs/" {
    	cgi.assign = ("" => "")
    	index-file.names = ("index.pl")
    }
    	debug.log-request-handling = "enable"
    }
    

    Do tego należy włączyć mod_rewrite w otrsie. I to wszystko.

    Fajnie się toto instaluje, generalnie wystarczy odpalić vhosta, wycelować obserwatorkę internetową w urla http://blabla/otrs/installer.pl i odpowiadać na pytania. Problem jest tylko z instalacją bazy pod mysqlem, bo trzeba niestety podać hasło do roota. Generalnie zawsze można je zmienić na chwilę, zainstalować wszystko co tam trzeba, a potem zmienić na to poprzednie niełamalne, z 32. znaków z chińskiego alfabetu.

    Ciekawe jak to się będzie zachowywało, bo aplikacja webowa w perlu już z samej nazwy brzmi groźnie ;-). Zobaczymy.
    W kazdym razie na pewno wygląda lepiej i przede wszystkim ładniej niż Request Tracker, który jest po prostu ohydny, a jego usability utknęło w 1990 roku.