Debian szerver monitorozás (Stretch)
A szervergép monitorozása általában adatgyűjtést jelent a hardver és egyes szoftverek állapotáról. Az adatokat valamilyen helyi vagy távoli eszközzel megjeleníthetjük, határértékek túllépése esetén riasztásokat illetve automatikus beavatkozásokat indíthatunk.
A jelen leírásban elsődleges adatgyűjtő eszközként a Munin szolgál, ebben a szakaszban ennek pluginjai számára tesszük elérhetővé a monitorozandó (elsősorban hardver) adatokat.
Tartalomjegyzék
System statistics és hardware info
Alapvető hardver- és aktivitásfigyelő eszközök, amelyeket Munin pluginok használnak:
apt-get install sysstat # a discover már telepítve van
SMART
Virtuális hostingban a SMART telepítése szükségtelen.
A merevlemezek állapotának figyelésére a SMART (Self-Monitoring, Analysis and Reporting Technology) daemont használjuk:
apt-get install smartmontools # +: dependens könyvtárak
A telepítés el is indítja a SMART démont - ezt ellenőrizzük, illetve tekintsük meg a syslog-ban, hogy a lemezeket felismerte-e:
systemctl status smartd # active (running) less /var/log/syslog # végén a felismert lemezek adatai
Ha az automatikus felismerés nem sikerülne, a smartd manuálisan is konfigurálható:
- Jegyezzük be a lemezeket (a meglévő beállító állományból minden törölhető; elég az alábbiak közül a releváns sorokat beírni):
-rw-r--r-- root root /etc/smartd.conf /dev/sda -H -n standby,q -m root@localhost -d ata # SATA esetén /dev/hda -H -n standby,q -m root@localhost # PATA esetén /dev/sda -H -n standby,q -m root@localhost # SCSI esetén /dev/cciss/cXdY -d cciss,N # CCISS hardware RAID eseténa -n azt jelenti hogy csak active/idle módban kérdezzen le,a "q" pedig hogy ne küldjön üzenetet a kihagyott smart tesztről.
- Indítsuk el a figyelést:
systemctl start smartd; tail -f /var/log/syslogés ellenőrizzük a syslog-ban megjelenő üzeneteket.
Ha a smartd konfigurálása sikeres, engedélyezzük automatikus elindítását a rendszer betöltésekor:
-rw-r--r-- root root /etc/default/smartmontools [...] start_smartd=yes [...]
Lemezeink SMART státuszát az alábbi parancsokkal kérdezhetjük le:
smartctl -a -T permissive /dev/sdX -d ata | less # SATA esetén smartctl -a /dev/hdX | less # PATA esetén(?) smartctl -a /dev/sdX -d megaraid,N | less # LSI hardware MegaRaid elemeire smartctl -a -T permissive /dev/cciss/cXdY -d cciss,N | less # CCISS hardware RAID elemeire
SATA lemez azonosító adatainak lekérése:
smartctl -a -T permissive /dev/sdX -d ata | grep -i -e '\(Model\|Serial\)'
Ezeket az adatokat érdemes lehet feljegyezni.
Hardver szenzorok
Virtuális hostingban nem kell a hardver szenzorokat telepíteni.
A hardware gyártók által az alaplapra, processzorba, merevlemezbe beépített érzékelők (szenzorok) adatainak monitorozásához azokat a Linux számára elérhetővé kell tenni. A szenzorok adatai vagy lokális adatbuszról - általában valamilyen I2C (Inter-Integrated Circuit, I-squared-C) protokollt használó busz, pl. SMB (System Management Bus), de lehet ISA megvalósítás is - olvashatóak le, vagy SNMP MIB-ként (Simple Network Management Protocol, Management Information Base) elérhetőek. A merevlemez szenzor adatok a SMART értékek között (is) szerepelnek.
IPMI
Relatív egyszerű dolgunk van, ha a hardver támogatja az Intelligent Platform Management Interface (IPMI) használatát. Ez esetben nem kell foglalkozzunk a konkrét hardver szenzorok kiolvasásával. Ha használhatunk IPMI-t, telepítsük az OpenIPMI drivereket és az IPMItool parancssori lekérdező felületet Debian csomagból:
apt-get install openipmi ipmitool
Ezután töltsük be a szükséges kernel modulokat:
modprobe ipmi_si; modprobe ipmi_devintf
és kérjük le az elérhető szenzorok adatait:
ipmitool sdr
Ha az eredmények megjelennek, írjuk elő a kernel modulok rendszerindításkor történő automatikus betöltését:
-rw-r--r-- root root /etc/modules-load.d/ipmi.conf ipmi_si ipmi_devintf
IPMI napi jelentés (SEL)
Érdemes lehet ezen kívül kiegészíteni a napi jelentést az ipmitools-lal kiolvasható System Event Log (SEL) aznapra vonatkozó bejegyzéseivel is. Ehhez helyezzük el a /etc/cron.daily könyvtárban az alábbi scriptet:
touch /etc/cron.daily/sel chmod 755 /etc/cron.daily/sel mcedit /etc/cron.daily/sel
-rwxr-xr-x root root /etc/cron.daily/sel #!/bin/bash # # Yesterday's events from System Event Log via ipmitool. DATE="/bin/date" GREP="/bin/grep" IPMITOOL="/usr/bin/ipmitool" YESTERDAY="| $($DATE '+%m/%d/%Y' -d '1 day ago') |" EVENTS=$($IPMITOOL sel list | $GREP "$YESTERDAY") if [ ! -z "$EVENTS" ]; then echo "System Event Log items:" echo -e "$EVENTS\n" fi
További IPMI lehetőségek: TODO!
Irodalom (IPMI)
Direkt elérés
A hozzáféréshez telepíteni kell a lokális adatbusz drivert (I2C kernel támogatás), illetve az alaplapra, stb. épített szenzor chip kernel driverét. Ezután még szükséges a gyűjtött, nyers adatok alaplapfüggő értelmezése és átszámítása, mert ugyanazon szenzor chipet a gyártók különböző módon kötik be (pl. nem mindig ugyanarra a bemenetre kerül a CPU hőmérő, stb.), illetve különböző előtét ellenállásokat, stb. használnak.
Általában az lm-sensors csomag szolgál a szenzorok detektálására és lekérdezésére, míg a sensord démon a leolvasott értékeket (alapértelmezésben alarm: 5'-enként, alert szinttel, értékek: 30'-enként, info szinttel) beírja a syslogba (így az alarmokról a logcheck levelet is küld). Jelenleg egy kritikus hiba miatt a sensord nem szerepel a Debian Stretch-ben, így csak az lm-sensor-t telepíthetjük:
apt-get install lm-sensors
A szenzorok feltérképezésénél érdemes a gyári kernellel próbálkozni (akkor is, ha egyébként saját kernelt használunk), mert abban minden szenzor modul benne van. Az adatbusz és chip támogatást a sensors-detect általában megmondja:
sensors-detect
illetve javaslatot tesz a szükséges modulok /etc/modules-be beírására. Ezt azonban ne fogadjuk el, használjuk az overlay technikát: a rendszerindítás során betöltendő, a szenzorok leolvasásához szükséges modulokat az /etc/modules-load.d könyvtárban létrehozott, .conf kiterjesztésű(!) állományban definiáljuk:
-rw-r--r-- root root /etc/modules-load.d/sensors.conf # Csak példa, a sensors-detect ajánlásaiból a ténylegesen működőket írjuk ide! eeprom coretemp lm85
A modulok betöltése (modprobe) után a
sensors
parancs megmutatja az értékeket. Ha az értékek megfelelőek (megegyeznek a BIOS-ban láthatóakkal) és az alarm beállítások is elfogadhatóak, akkor készen vagyunk :-); ha nem, akkor egy, a /etc/sensors.d alatt újonnan létrehozott overlay konfigurációs állományt érdemes szerkeszteni (Debian lm-sensors receptek). A szerkesztés eredménye azonnal érvényesül a következő sensors kimenetében, kivéve a riasztási határérték változtatásokat, amelyeket a
sensors -s # set values
paranccsal lehet érvényesíteni.
Megjegyzés: kész recept hiányában az lm-sensors beállítása hosszas, szöszögős munka lehet.