Posts Tagged monitorowanie

Automatyczna kompilacja pliku LaTeX, czyli o monitorowaniu zmian w plikach

Spotkałem się z następującym problemem: w momencie wykonania modyfikacji pewnych plików lub katalogów chciałem wykonać określoną akcję. W moim przypadku chodzi o automatyczne utworzenie pliku PDF na podstawie plików źródłowych stworzonych w LaTeXu.

W przypadku Linuksa mamy do dyspozycji podsystem jądra o nazwie inotify, który pozwala na powiadamianie aplikacji o różnych zmianach mających miejsce w ramach systemu plików. Ponieważ jest to moduł pracujący w przestrzeni jądra systemu, nie ma potrzeby skanowania systemu plików w celu poszukiwania zmian. Wystarczy jedynie zarejestrować aplikację, podać jakie zdarzenia i pliki (czy też katalogi) mają być monitorowane i o resztę będzie się troszczyć sam systemu operacyjny.

Oczywiście, to że jądro udostępnia jakąś usługę i istnieją odpowiednie biblioteki systemowe nie rozwiązuje problemu (chyba że piszemy własną aplikację). Znalazłem dwie aplikacje, które działają w przestrzeni użytkownika i pozwalają na wykorzystanie inotify:

  • incron – narzędzie to przypomina trochę crona, do działania wymaga zainstalowanego serwera oraz klienta w którym będzie można definiować reguły monitorowania i postępowania z plikami, pozwala ono na zdefiniowanie zarówno co ma być monitorowane o raz jakie akcje (np. jakie skrypty uruchomić) w momencie wykrycia zmian w systemie plików
  • inotify-tools – dwa polecenie, z których jedno pozwoli wyświetlić informacje statystyczne o modyfikacjach w systemie plików (inotifywatch), a drugie wyświetli informacje o zmodyfikowanych plikach (inotifywait)

W moim przypadku incron jest za dużym rozwiązaniem, nie potrzebują także ciągłego monitorowania wybranych katalogów, jedynie na czas pracy z LaTeXem. Idealnym rozwiązaniem okazało się użycie polecenia inotifywait. Nasłuchuje ono na zamiany w wybranych plikach czy katalogach i w momencie ich wystąpienia kończy swoje działanie jednocześnie wyświetlając informacje o tym, co zostało zmienione. Posiada także możliwość pracy w trybie ciągłego nasłuchiwania, czyli informuje nas o zmianach bez kończenia działania, ale tutaj funkcja ta nie będzie potrzebna.

Więc czas na konkrety: instalacja pakietu w Ubuntu:

# aptitude install inotify-tools

Teraz czas na mały skrypt, który będzie odpowiedzialny za uruchomienie nasłuchiwania oraz wykonywanie odpowiednich poleceń:

1
2
3
4
5
6
7
8
9
#!/bin/bash

MONITOR_COMMAND="inotifywait -q -e modify  --format '%w%f' --excludei '.*temp.*' ."

while true
do
        OUTPUT=`$MONITOR_COMMAND` && \
                pdflatex -output-directory=out main.tex
done;

Skrypt robi:

  • linia 3 – definicja wywoływania polecenia inotifywait:
    • -q – tryb cichy, nie wyświetla zbędnych informacji
    • -e modify – lista monitorowanych zdarzeń na plikach, tutaj tylko modyfikacja plików, ale można monitorować np. dostęp do nich, tworzenie, usuwanie, przenoszenie, zmiany metadanych
    • --format '%w%f' – format, w jakim ma być wyświetlona informacje o tym co się zmieniło, w tym przypadku nazwa pliku wraz z katalogiem, w którym się on znajduje
    • --excludei '.*temp.*' – jakich plików nie brać pod uwagę
  • linia 5 – rozpoczęcie pętli, nieskończonej
  • linia 7 – wywołanie polecenia inotifywait, polecenie to skończy działanie dopiero jak wykryje jakieś zmiany w monitorowanych plikach
  • linia 8 – wywołanie akcji, w moim przypadku kompilacja raportu

W zmiennej $OUTPUT znajdzie się lista zmodyfikowanych plików, więc w razie potrzeb można na niej wykonać określone akcje.

Skrypt ten będzie działał w nieskończoność, do momentu przerwania jego wykonywania. Dzięki niemu można mieć podgląd wygenerowanych dokumentów LaTeX prawie w czasie rzeczywistym.

Źródła

Tags: , , , , , ,

Monitorowanie logów sysloga przy użyciu RHQ Server

Kolejną możliwością serwera RHQ jest zbieranie logów systemowych tworzonych przez aplikację Syslog. Agent monitorujący może pobierać informację z dowolnego pliku, należy tylko go odpowiednio zdefiniować.

Dodanie pliku do monitorowania można zrobić w następujący sposób:

  1. Wybrać maszynę (platformę), na której chcemy monitorować plik z logami.
  2. Wybrać zakładkę INVENTORY->CONNECTION
  3. Na dole strony będzie znajdowała się lista monitorowanych plików oraz przycisk EDIT, który należy wybrać.
    RHQ Server - lista monitorowanych plików z logami

    RHQ Server - lista monitorowanych plików z logami

  4. Wybrać przycisk Add New
  5. Zdefiniować monitorowany plik:
    RHQ Server - dodanie pliku loga do monitorowania

    RHQ Server - dodanie pliku loga do monitorowania

    Najważniejsze są następujące parametry:

    • Log Tracking Enabled = Yes – włączenie monitorowania informacji z sysloga
    • Log Tracking Type = file – wybranie monitorowania pliku
    • Syslog File Path = /var/log/syslog – ścieżka dostępu do monitorowanego pliku, w przypadku Debiana może to być /var/log/syslog, w przypadku Red Hata /var/log/messages
  6. Zatwierdzamy zmiany dotyczące pliku wybierając Ok i następnie zatwierdzamy wszystkie wprowadzone zmiany.

Informacje pobierane z logów będą dostępne w zakładce EVENTS. Można w niej przeglądać wpisy, sortować je, wyszukiwać.

RHQ Server - przeglądanie logów

RHQ Server - przeglądanie logów

Tags: , , , , , ,

RHQ Server – dodanie monitorowania zainstalowanych pakietów RPM

W serwerze RHQ istnieje możliwość monitorowania listy zainstalowanych pakietów RPM. Włączyć tę funkcję można w następujący sposób:

  1. Wybierz serwer (platformę) w której chcesz włączyć monitorowanie RPM (w moi przypadku był to system oparty o RHEL 5.5).
  2. Wybierz opcję INVENTORY->CONNECTION
  3. Wybierz przycisk EDIT, aby móc modyfikować parametry.
  4. Włącz opcję Enable Content Discovery.

    RHQ Server: monitorowanie pakietów RPM

    RHQ Server: monitorowanie pakietów RPM

  5. Zatwierdź przyciskiem OK.

Powyższe kroki pozwolą na włączenie monitorowania zainstalowanych pakietów. Aby je przeglądać, należy wybrać teraz zakładkę CONTENT. Znajdzie się tam lista wszystkich pakietów, z możliwością ich filtrowania oraz sortowania.

RHQ Server: lista zainstalowanych pakietów RPM

RHQ Server: lista zainstalowanych pakietów RPM

Tags: , , , , , ,

Monitorowanie serwera Apache przy użyciu RHQ Server – konfiguracja RHQ

Serwer RHQ umożliwia monitorowania funkcjonowania serwera WWW Apache. Konfiguracja połączenia między agentem monitorującym a Apachem nie jest jednak zbyt prosta. Trzeba nie tylko odpowiednie informacje podać w RHQ, ale również dodać dodatkowe moduły do Apache oraz je skonfigurować.

Jeżeli chcesz, aby poprawnie zadziałało Ci monitorowanie, oraz udało się wszystko skonfigurować tak jak jest to podane poniżej, napierw zapoznaj się z artykułami, w których znajdują się informacje w jaki sposób należy skonfigurować Apacha:

Konfigurację można podzielić na dwa kroki: najpierw należy dodać serwer do zasobów Apache a następnie zdefiniować (poprawić) wpisy do poszczególnych serwerów wirtualnych.

Dodanie serwera Apache do zasobów RHQ

Pierwszym krokiem będzie dodanie serwera Apache do zasobów monitorowanych. Jeżeli serwer jest już widoczny na liście, można ten punkt opuścić i od razu przejść do konfiguracji połączenia w ustawieniach serwera.

Pierwszym krokiem będzie wybór serwera (platformy) na której jest zainstalowany serwer, a następnie wybranie zakładki INVENTORY->OVERVIEW. Na dole strony znajdziemy przycisk pozwalający na dodanie nowego zasobu:

RHQ: dodanie serwera Apache

RHQ: dodanie serwera Apache

Teraz należy zdefiniować potrzebne ścieżki dostępu do poszczególnych elementów serwera (poniższe ścieżki są podane na przykładzie Debiana):

  • Server Root = /etc/apache2
    absolutna ścieżka dostępu do katalogu głównego Apacha
  • Executable Path = /usr/sbin/apache2
    ścieżka dostępu do pliku wykonywalnego serwera Apache
  • Control Script Path = /etc/init.d/apache2
    ścieżka dostępu do skryptu kontrolującego Apacha
  • Config File = /etc/apache2/apache2.conf
    ścieżka dostępu do pliku konfiguracyjnego
  • URL = http://blog.stelmisoft.pl:80/
    adres URL do jakiegoś zasobu udostępnianego przez serwer, będzie on badany w celu sprawdzenia czy serwer działa
  • SNMP Agent Host = 127.0.0.1
    konfiguracja agenta SNMP, który będzie monitorował serwer Apache (będziemy go konfigurować w dalszej części wpisu)
  • SNMP Agent Port = 1610
    port, na którym nasłuchuje agent
  • SNMP Agent Community = public
  • Error Log File Path = /var/log/apache2/error.log
    Lokalizacja pliku w którym będą znajdowały się komunikaty o błędach
  • Error Log Events Enabled = Yes
    Tworzenie nowych zdarzeń w momencie wystąpienia błędów w logu.
  • Error Log Minimum Severity = error
    Minimalny poziom ważności informacji w logu, który będzie użyty
  • Error Log Includes Pattern =  
  • Zatwierdzenie powyższych informacji umożliwi serwerowi RHQ podstawowe monitorowanie dostępności serwera Apache. Będziemy także mieli możliwość zarządzania nim (start, restart, zatrzymanie).

    Konfiguracja serwerów wirtualnych

    Jeżeli serwer Apache został wykryty popranie, to w jego zakładce INVENTORY->OVERVIEW powinny się pokazać wszystkie wykryte serwery wirtualne. Informacje te są pobrane z SNMP.

    Należy teraz zdefiniować dla każdego z tych serwerów odpowiednie pliki, w których będą się znajdowały czasy odpowiedzi serwera (tworzone przez moduł Response Time). Kolejne kroki, które trzeba wykonać:

    1. Wybieramy serwer wirtualny, w moim przypadku to będzie blog.stelmisoft.pl
    2. Otworzyć zakładkę INVENTORY->CONNECTION
    3. Nacisnąć przycisk EDIT
    4. Zmodyfikować linię Response Time Log File. Powinna ona wskazywać na miejsce przechowywania zapisów przez moduł Response Time.

    I to wszystko, po powtórzeniu tych kroków dla wszystkich serwerów powinno działać monitorowanie serwera Apache.

    Źródła

Tags: , , , , ,

Monitorowanie serwera Apache przy użyciu RHQ Server – instalacja modułu SNMP

Serwer RHQ może monitorować Apache, ale do uzyskania informacji o wirtualnych serwerach wy,aga instalacji modułu SNMP. Umożliwi to agentowi monitorującemu pobieranie tych informacji bezpośrednio z serwera Apache, bez potrzeby analizy plików konfiguracyjnych.

Pozostałe wpisy z tej serii to:

Aby mieć możliwość instalacji tego modułu trzeba spełnić kilka warunków:

  • Apache musi być skompilowany z obsługą modułów
  • należy skompilować moduł lub użyć plików binarnych oraz zainstalować w ramach serwera Apache
  • należy odpowiednio skonfigurować serwer tak, aby z niego korzystał

Informacje skąd można pobrać pliki źródłowe można znaleźć we wpisie: Monitorowanie serwera Apache przy użyciu RHQ Server – instalacja modułu Response Time.

Po dekompresji pliku connector-apache.zip pliki modułu można znaleźć w katalogu apache-snmp. Tutaj również można naleźć dwa katalogi: ze wersjami binarnymi pakietów oraz ze źródłami. Tym razem jednak mamy w źródłach skompilowane moduły dla różnych wersji serwera Apache oraz dla architektur intelowskich 32 i 64 bitowych.

Kompilacje ze źródeł jest opisana w pliku apache-snmp/sources/README.txt, w praktyce powinno wystarczyć wywołanie polecenia build_apache_snmp.sh.

$ cd apache-snmp/sources
$ ./build_apache_snmp.sh 2.0 /usr/bin/apxs2

Jednak z moim przypadku kompilacja się nie powiadała. Na szczęście w tym przypadku są dostępne już skompilowane wersje modułów z których można skorzystać.

Czyli trzeba moduły rozkompresować:

$ cd apache-snmp/binaries
$ unzip snmp_module-x64-linux-apache2.2.zip

Zostanie utworzony katalogu snmp_module_2.2 a w nim niezbędne pliki konfiguracyjne oraz z modułami. Moduły dla serwera Apache znajdują się w katalogu module, czyli kopiujemy je teraz do odpowiedniej lokalizacji:

# cd snmp_module_2.2
# mkdir -p /usr/local/lib/apache2/modules
# cp module/*.so /usr/local/lib/apache2/modules/

Kopiujemy plik konfiguracyjny modułu:

# mkdir -p /etc/apache2/snmpd/conf
# cp conf/snmpd.conf /etc/apache2/snmpd/conf

W domyślnej konfiguracji moduł SNMP nasłuchuje na przychodzące połączenia od klientów na porcie 1610 na wszystkich interfejsach sieciowych. Ponieważ w naszym przypadku klientem będzie agent monitorujący działający na maszynie lokalnej, można otworzyć jedynie ten port na interfejsie localhost. Czyli należy w pliku /etc/apache2/snmpd/conf/snmpd.conf zmienić wpis agentaddress na taki:

34
agentaddress 1610@127.0.0.1

Należy jeszcze utworzyć specjalny katalog na pliki tworzone przez moduł:

# mkdir -p /var/lib/apache2/snmpd/var

Tworzymy plik /etc/apache2/mods-available/snmpd.load ładujący moduł SNMP do serwera Apache:

1
2
LoadModule snmpcommon_module /usr/local/lib/apache2/modules/libsnmpcommon.so
LoadModule snmpagt_module /usr/local/lib/apache2/modules/libsnmpmonagt.so

Teraz tworzymy plik konfigurujący moduł /etc/apache2/mods-available/snmpd.conf:

1
2
SNMPConf /etc/apache2/snmpd/conf
SNMPVar /var/lib/apache2/snmpd/var

Ostatnim krokiem będzie włączenie modułu:

# a2enmod snmpd

Aby moduł SNMP działał poprawnie, muszą zostać precypitynie zdefiniowane nazwy serwerów wirtualnych. W nazwie musi znaleźć się nie tylko nazwa tego serwera, ale także port na którym serwer Apache będzie nasłuchiwał. Czyli odpowiedni wpis w definicji serwera wirtualnego musi mieć następującą postać:

1
2
3
4
<VirtualHost *:80>
        ServerName blog.stelmisoft.pl:80
        ....
</VirtualHost>

Teraz pozostaje restart serwera Apache i sprawdzenie czy wszystko zadziała:

# /etc/init.d/apache2 restart

Źródła

Tags: , , , , , ,