Debian szerver napi jelentés (Jessie)

A AdminWiki wikiből

A napi jelentés a /etc/cron.daily alatti scriptek lefuttatásának kimenete. Az alaptelepítés által itt elhelyezett scriptek nagyon szűkszavúak, normális esetben semmilyen kimenetet nem adnak. Érdemes lehet néhány általános jelentéskészítő scriptet ide elhelyezni.

Megjegyzés: azt hiszem, a Debianban azért nincsenek napi jelentő scriptek, mert a fejlesztők filozófiája szerint az eseményekről azonnali értesítést kell kapni, ennélfogva a napi jelentés felesleges. Másfelől engem megnyugtat, ha naponta kapok a szerverektől egy "kösz, jól vagyok" levelet :-)

Tartalomjegyzék

RAID állapot

Az mdadm szól ugyan, ha szétesik egy RAID, de csak egyszer. Az alábbi script viszont naponta...

touch /etc/cron.daily/raidstatus
chmod 755 /etc/cron.daily/raidstatus
mcedit /etc/cron.daily/raidstatus
-rwxr-xr-x root root /etc/cron.daily/raidstatus

#!/bin/bash
# Cron job to check that raid devices are functional.
# On error cron will mail the faulty mdstat to root.
#   raid1.c and raid5.c list devices as U (operational) or _ (not)
#   a _ device may be either hot, standby or bad
# Merlin Hughes <merlin@merlin.org>
# Modified by <kovacs.zoltan@kzoli.hu>

[ -e /proc/mdstat ] || exit 0

mdstat=`cat /proc/mdstat`

echo -e "\nRAID status:"
# Underscore between square brackets shows a faulty disk
if echo "$mdstat" | grep -q -e '\(\[.*_.*\]\)'; then
    echo 'WARNING: Some disks in your RAID arrays seem to have failed!'
    echo 'Below is the content of /proc/mdstat:'
    echo
    echo -e "$mdstat"
else
    echo "RAID is OK."
fi

Tárhely foglaltság

Ez fontos, ezt ugyanis semmilyen más eszköz nem figyeli.

touch /etc/cron.daily/status-disks
chmod 755 /etc/cron.daily/status-disks
mcedit /etc/cron.daily/status-disks
-rwxr-xr-x root root /etc/cron.daily/status-disks

#!/bin/bash
#
# Simple stats from disk usage

echo -e "\nDisk status:"
/bin/df -kh | /bin/grep -ve '^tmpfs'

FSCK időzítések

A Debian az ext2/3 fájlrendszerek konzisztenciájának periodikus ellenőrzése és szükség szerinti megjavításuk érdekében kb. 180 naponta illetve kb. 30 felcsatolás után a következő rendszerindításkor automatikus fájlrendszer ellenőrzést (fsck) végez akkor is, ha a fájlrendszer egyébként "tiszta". Nagy (terabyte-os) partíciók esetén a művelet órákig elhúzódhat, ezért nem mindegy, hogy erre mikor kerül sor. Az alábbi script listázza az egyes partíciók következő ellenőrzésig hátralévő idejét illetve felcsatolás számát, így kevésbé ér bennünket váratlanul az automatikus fsck.

A scriptet nem kell (de nem hiba) telepíteni, ha nincs ext2/3 fájlrendszerünk (a Jessie-ben az alapértelmezett fájlrendszer az ext4, ennél a periodikus ellenőrzés alapértelmezetten nincs beállítva).

touch /etc/cron.daily/status-fsck
chmod 755 /etc/cron.daily/status-fsck
mcedit /etc/cron.daily/status-fsck
-rwxr-xr-x root root /etc/cron.daily/status-fsck

#!/bin/bash
#
# Shows auto-FSCK schedule info about mounted ext2/3 filesystems.
# Author: <kovacs.zoltan@kzoli.hu> 2013-03-13
# Licensed under GNU/GPL v3+ - see: http://www.gnu.org/copyleft/gpl.html

LANG="C"                                # English output to parse
DATE="/bin/date"                        # date command call
EGREP="/bin/egrep"                      # egrep command call
GREP="/bin/grep"                        # grep command call
MOUNT="/bin/mount"                      # mount command call
SED="/bin/sed"                          # sed command call
SORT="/usr/bin/sort"                    # sort command call
TUNE2FS="/sbin/tune2fs"                 # tune2fs command call

# Getting mounted, extN type filesystems' list.
$MOUNT | $GREP 'type ext' | $SORT | while read fsline
do
    # Getting filesystem parameters via tune2fs.
    fsdevice=$(echo "$fsline" | /usr/bin/cut -d ' ' -f1-3)
    fsparams=$($TUNE2FS -l $(echo $fsdevice | /usr/bin/cut -d ' ' -f1))
    fs_status=$(echo -e "$fsparams" | $GREP "Filesystem state:" | $SED "s/^[^:]*:[[:space:]]*//")
    fs_count=$(echo -e "$fsparams" | $GREP "Mount count:" | $SED "s/^[^:]*:[[:space:]]*//")
    fs_maxcount=$(echo -e "$fsparams" | $GREP "Maximum mount count:" | $SED "s/^[^:]*:[[:space:]]*//")
    fs_lastdate=$(echo -e "$fsparams" | $GREP "Last checked:" | $SED "s/^[^:]*:[[:space:]]*//")
    fs_lastdate=$($DATE --date="$fs_lastdate" '+%Y-%m-%d')
    # Calculating FSCK schedule by date.
    fs_nextdate=$(echo -e "$fsparams" | $GREP "Next check after:" | $SED "s/^[^:]*:[[:space:]]*//")
    if [ -z "$fs_nextdate" ]; then fs_nextdate="schedule disabled"
    else
        fs_nextutc=$($DATE --date="$fs_nextdate" '+%s')
        fs_nextdate="$($DATE --date="$fs_nextdate" '+%Y-%m-%d') ($(( ($fs_nextutc - $($DATE '+%s')) / 86400 )) days)"
    fi
    # Calculating FSCK schedule by mounts.
    mounts2fsck="count disabled"
    if [[ $fs_maxcount > 0 ]]; then mounts2fsck="$(( $fs_maxcount - $fs_count )) left"; fi
    # Formatted output.
    echo -e "$fsdevice \n$fs_status \t$fs_lastdate \t$fs_count mounts ($mounts2fsck) \t$fs_nextdate"
done

Kézbesítetlen e-mail üzenetek

Hasznos lehet a napi jelentésben listát kapni a kézbesítetlen e-mail üzenetekről:

touch  /etc/cron.daily/exim4-frozen
chmod 755 /etc/cron.daily/exim4-frozen
mcedit /etc/cron.daily/exim4-frozen
-rwxr-xr-x root root /etc/cron.daily/exim4-frozen

#!/bin/bash

AWK="/usr/bin/awk"
EXIM4="/usr/sbin/exim4"
GREP="/bin/grep"
WC="/usr/bin/wc"
XARGS="/usr/bin/xargs"

# List of really frozen e-mail messages
if [ ! -z "$($EXIM4 -bp)" ]; then
    # Deleting frozen double bounces (<> messages)
    echo -ne "Frozen bounces deleted: "
    $EXIM4 -bpru | \
        $GREP '<>' | \
        $AWK {'print $3'} |  \
        $XARGS $EXIM4 -Mrm 2>/dev/null | \
        $WC -l
    # Listing really frozens
    echo -ne "Frozen e-mail messages:\n\n"
    $EXIM4 -bp
fi

Tanúsítványok állapota

Az alábbi, innen származó scriptek ellenőrzik a szervergép meglévő SSL tanúsítványait és figyelmeztető levelet küldenek, ha a következő 30 napban valamelyik lejárna.

# Az ellenőrző script letöltése
wget 'http://howto.biapy.com/fr/debian-gnu-linux/serveurs/http/mettre-en-place-une-notification-par-email-de-l-expiration-des-certificats-ssl-tls/ssl-cert-check/at_download/file' \
--no-check-certificate --output-document='/usr/local/bin/ssl-cert-check'
chmod 755 /usr/local/bin/ssl-cert-check

# A tanúsítványokat megkereső és az előzőt meghívó, ütemező script letöltése és egy hibajavítás
wget -q -O- --no-check-certificate 'http://howto.biapy.com/fr/debian-gnu-linux/serveurs/http/mettre-en-place-une-notification-par-email-de-l-expiration-des-certificats-ssl-tls/check-active-certs/at_download/file' |\
sed "s/ grep -r/ grep -R/g" >/etc/cron.daily/check-active-certs
chmod 755 /etc/cron.daily/check-active-certs

Minthogy még nincs szerver oldali tanúsítvány telepítve, a naponta lefutó script nem csinál semmit, de amint SSL-t használó szolgáltatást telepítünk, észre fogja venni és teszi a dolgát.

Uptime

Inkább csak hagyományból, opcionálisan referált paraméter.

touch /etc/cron.daily/uptime-info
chmod 755 /etc/cron.daily/uptime-info
mcedit /etc/cron.daily/uptime-info
-rwxr-xr-x root root /etc/cron.daily/uptime-info

#!/bin/bash

echo
/usr/bin/uptime