Debian szerver monitorozás (Jessie)

Innen: AdminWiki

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.

System statistics és hardware info

Alapvető hardver- és aktivitásfigyelő eszközök, amelyeket Munin pluginok használnak:

apt-get install discover sysstat # a discover már telepítve lehet

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ó (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én

a -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.d/ipmi.conf

ipmi_si
ipmi_devintf

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 dirveré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):

apt-get install lm-sensors sensord # Rengeteg függősége van! 

Bug: a Jessie jelenlegi változatában sem a logcheck, sem a sensord csomagban nem szerepel a rutinszerű szenzor lekérdezéseket a syslog-ból kiszűrő logcheck szabály - ezt pótoljuk:

touch /etc/logcheck/ignore.d.server/sensord
chown root:logcheck /etc/logcheck/ignore.d.server/sensord
chmod 640 /etc/logcheck/ignore.d.server/sensord
mcedit /etc/logcheck/ignore.d.server/sensord
-rw-r----- root logcheck /etc/logcheck/ignore.d.server/sensord

^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sensord:   [+[:alnum:]-]
^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sensord: Adapter:
^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sensord: Algorithm:
^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sensord: Chip:
^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ sensord: sensor read

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; a Jessie-ben már létezik a /etc/modules-load.d könyvtár, így a rendszerindítás során betöltendő, a szenzorok leolvasásához szükséges modulokat inkább az ebben létrehozott, .conf kiterjesztésű(!) include á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.