LMS - LAN Management System 1.11-git
Poprzedni |  | Następny

# Rozdział 6. LMS Daemon

# 6.1. Informacje podstawowe

Napisany w języku C program ma ułatwiać zarządzanie usługami. Sam demon odpowiada za uruchamianie odpowiednich modułów na żądanie użytkownika. Moduły natomiast, służą do tworzenia plików konfiguracyjnych na podstawie danych z bazy LMS'a oraz restartowania odpowiednich usług na serwerze. Spełniają także inne funkcje np. zbieranie statystyk, badanie aktywności hostów, naliczanie opłat, powiadamianie o zaległościach.

## 6.1.1. Wymagania

Oto lista rzeczy, które lmsd potrzebuje już na etapie kompilacji:

- interfejs użytkownika LMS-UI

- `libmysqlclient` (tj. pełnej instalacji MySQL'a lub odpowiedniego pakietu) lub `libpq` w przypadku bazy PostgreSQL

- `libdl` (to w każdej dzisiejszej dystrybucji jest)

- kompilator języka C (testowany na gcc-2.95.x i nowszych)

- moduł `ggnotify` wymaga biblioteki `libgadu` i jej plików nagłówkowych

- moduł `parser` wymaga pakietu bison w wersji 1.875 lub nowszej oraz pakietu flex

- moduły `ewx-*` wymagają biblioteki net-snmp i jej plików nagłówkowych.

## 6.1.2. Instalacja

Przed kompilacją należy przy pomocy skryptu `./configure` ustalić opcje przedstawione na poniższym listingu (w nawiasach podano wartości domyślne opcji):

      --help                pomoc
      --enable-debug0       logowanie zapytań SQL (wyłączone)
      --enable-debug1       logowanie zdarzeń (wyłączone)
      --with-pgsql          gdy korzystasz z bazy PostgreSQL (wyłączone)
      --with-mysql          gdy korzystasz z bazy MySQL (włączone)
      --prefix=PREFIX       docelowy katalog instalacyjny demona i modułów (/usr/local)
      --lmsbindir=DIR       docelowa lokalizacja binarki lmsd (PREFIX/lms/bin)
      --lmslibdir=DIR       docelowa lokalizacja modułów lmsd (PREFIX/lms/lib)
      --libdir=DIR          lokalizacja bibliotek bazy danych (/usr/lib)
      --incdir=DIR          lokalizacja plików nagłówkowych bazy danych (/usr/include)
      --inifile=FILE        plik konfiguracyjny - wyłącza konfigurację przez UI

Zatem wymagane jest określenie bazy z jakiej będziemy korzystać (-with-mysql lub -with-pgsql) oraz położenia bibliotek dostarczanych wraz z bazą (--incdir, --libdir). Możliwe jest zmuszenie demona do korzystania z plików konfiguracyjnych zamiast bazy danych. Nie jest możliwe używanie obu sposobów przechowywania konfiguracji, dlatego należy o tym zdecydować przed kompilacją.

    # ./configure --with-pgsql --libdir=/usr/local/pgsql/lib --incdir=/usr/local/pgsql/include

Następnie kompilacja i instalacja (umieszczenie demona w katalogu określonym zmienną --prefix):

    # make && make install

Skompilowane moduły (pliki z rozszerzeniem `.so`), znajdujące się w katalogu `modules/nazwa_modułu` zostają umieszczone w katalogu PREFIX/lms/lib, a główny program (lmsd) w katalogu PREFIX/lms/bin.

## 6.1.3. Konfiguracja

Całą konfigurację demona i modułów przeprowadza się przy pomocy LMS-UI w menu Konfiguracja -> Demon. Konfigurację modułów omówiono w osobnych rozdziałach ich dotyczących. Podstawowe parametry pracy demona i dane do połączenia z bazą danych podaje się jako opcje linii komend, zgodnie z poniższym listingiem:

    --dbhost -h host[:port]    host na którym zainstalowana jest baza danych (domyślnie: 'localhost')
    --dbname -d nazwa_bazy     nazwa bazy danych (domyślnie: 'lms')
    --dbuser -u użytkownik     nazwa użytkownika bazy danych (domyślnie: 'lms')
    --dbpass -p hasło          hasło do bazy danych (domyślnie: puste)
    --hostname -H nazwa_hosta  host, na którym działa demon. Domyślnie przyjmowana jest nazwa
                               zwracana przez komendę hostname, ale można ją nadpisać. Nazwa
                               ta musi zgadzać się z nazwą hosta podaną w konfiguracji hostów
    --pidfile -P pid_file      pidfile where daemon write pid (default: none)
    --ssl -s                   wymusza bezpieczne połączenie z bazą danych (domyślnie: wyłączone)
    --command -c polecenie     polecenie powłoki do wykonania przed każdym połączeniem z bazą
                               tzn. co minutę (domyślnie: puste)
    --instance -i "instancja[ ...]" lista instancji (modułów) do przeładowania. Wszystkie pozostałe
                               zostaną pominięte
    --reload -q                wykonuje przeładowanie i kończy pracę
    --reload-all -r            wykonuje przeładowanie wszystkich instancji (także tych, które mają
                               zdefiniowany crontab) i kończy pracę
    --foreground -f            działa na pierwszym planie (nie forkuje się)
    --version -v               wyświetla wersję i prawa licencyjne

Opcje dostępu do bazy są także odczytywane ze zmiennych powłoki: LMSDBPASS, LMSDBNAME, LMSDBUSER, LMSDBHOST, LMSDBPORT.

| Lista instancji składa się z nazw instancji oddzielonych spacją. W nazwach instancji zawierających spacje należy zamienić je na znaki '\s', np. `lmsd -i "moja\sinstancja"`.

Konfiguracja demona jest podzielona na hosty (umożliwiając osobne konfigurowanie i przeładowywanie demonów zainstalowanych na różnych komputerach/routerach) oraz sekcje konfiguracyjne nazwane instancjami.

Instancja oprócz parametrów konfiguracyjnych wybranego modułu zawiera opcje podstawowe, takie jak:

- Nazwa

  Nazwa instancji unikalna w obrębie jednego hosta.

  Przykład: system

- Priorytet

  Liczba określająca priorytet, czyli kolejność wykonania instancji. Instancja o najniższym numerze zostanie wykonana jako pierwsza.

  Przykład: 10

- Moduł

  Nazwa pliku modułu (z rozszerzeniem lub bez). Jeśli nie podano ścieżki demon będzie szukał modułu w katalogu PREFIX/lms/lib, do którego trafiają moduły podczas "make install".

  Przykład: /usr/lib/system.so

- Crontab

  Czas wykonania modułu określany w sposób podobny do używanego w programie crontab. Wszystkie dane muszą być numeryczne. Podany przykład spowoduje wykonywanie wybranej instancji co 5 minut, w godzinach od 8 do 18. Gdy opcja ta jest pusta instancja zostanie wykonana wyłącznie podczas przeładowania. Domyślnie: pusta.

  Przykład: */5 8-18 * * *

Jakakolwiek zmiana w konfiguracji nie wymaga restartu demona.

## 6.1.4. Uruchomienie

Program domyślnie działa w trybie demona. Wtedy przeładowanie konfiguracji i usług jest dokonywane na żądanie, przy użyciu menu 'Przeładowanie' w LMS-UI. Sprawdzenie żądania przeładowania oraz odczyt konfiguracji (w szczególności listy instancji i ich konfiguracji) następuje co minutę. Gdy demon wykryje żądanie wykonania reloadu, wywoła wszystkie włączone instancje. Instancje z podaną opcją 'crontab' zostaną wykonane o określonym tą opcją czasie.

Innym sposobem uruchomienia jest jednorazowy reload z wykorzystaniem opcji -q. Ten sposób najczęściej używany jest w celach testowych, a w połączeniu z opcją -i pozwala na wykonanie dowolnych instancji z pominięciem pozostałych zapisanych w bazie oraz bez względu na wartość opcji 'crontab' tych instancji.

Poprzedni | Spis treści | Następny
Przykład zastosowania lms-mgc |  | Moduły