Сервер linuxoid.in/Заметки

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску

Добавление нового хоста

Nagios

Добавление хоста в мониторинг Nagios'a:

  • Для мониторинга параметров на новом хосте создать пользователя для Nagios: useradd -G adm -m -r -l nagios
  • Поставить ssh-server
  • /etc/hosts.deny
sshd: ALL
  • /etc/hosts.allow
sshd: 192.168.220.247
  • /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
AllowUsers      nagios
AllowTcpForwarding      no
X11Forwarding no
  • В /home/nagios создать подкаталог .ssh, скопировать туда публичный ключ с хоста мониторинга, назначить права.
  • С хоста мониторинга после этого надо зайти на новый хост для добавления его в known_hosts - иначе Nagios не захочет ходить на новый хост.
  • Разрешить хождение на хост в iptables, если хосты находятся в разных сетях.
  • Поставить пакет nagios-plugins-basic
  • Для мониторинга памяти добавить в систему скрипт /usr/lib64/nagios/plugins/check_memory.sh, не забыть поставить правильные права и владельца.
check_memory.sh
#!/bin/bash
#
# Script to check memory usage on Linux. Ignores memory used by disk cache.
#
print_help() {
    echo "Usage:"
    echo "[-w] Warning level as a percentage"
    echo "[-c] Critical level as a percentage"
    exit 0
}

while test -n "$1"; do
    case "$1" in
        --help|-h)
            print_help
            exit 0
            ;;
        -w)
            warn_level=$2
            shift
            ;;
        -c)
            critical_level=$2
            shift
            ;;
        *)
            echo "Unknown Argument: $1"
            print_help
            exit 3
            ;;
    esac
    shift
done

if [ "$warn_level" == "" ]; then
    echo "No Warning Level Specified"
    print_help
    exit 3;
fi

if [ "$critical_level" == "" ]; then
    echo "No Critical Level Specified"
    print_help
    exit 3;
fi

free=`free -m | awk '/buffers\/cache/{print $4}'`
used=` free -m | awk '/buffers\/cache/{print $3}'`

total=$(($free+$used))

result=$(($used*100/$total))

if [ "$result" -lt "$warn_level" ]; then
    echo "Memory OK. $result% used."
    exit 0;
elif [ "$result" -ge "$warn_level" ] && [ "$result" -le "$critical_level" ]; then
    echo "Memory WARNING. $result% used."
    exit 1;
elif [ "$result" -gt "$critical_level" ]; then
    echo "Memory CRITICAL. $result% used."
    exit 2;
fi

Monit

  • /etc/default/monit
startup=1
  • /etc/monit/monitrc
set daemon  120           # check services at 2-minute intervals
     with start delay 240  # optional: delay the first check by 4-minutes (by 
set logfile syslog facility log_daemon                       
set idfile /var/.monit.id
set statefile /var/.monit.state
set mailserver mail.linuxoid.in               # primary mailserver
set eventqueue
     basedir /var/monit  # set the base directory where events will be stored
set mail-format { from: monit@АДРЕС_НОВОГО_ХОСТА }
set alert root@mail.linuxoid.in                       # receive all alerts
include /etc/monit/conf.d/*


Munin

  • Поставить munin-node
  • usermod -a -G adm munin
  • /etc/munin/plugin-conf.d/munin-node - добавить:
[proc*]
group adm

[uptime]
group adm

[load]
group adm

[diskstats]
group adm

[vmstat]
group adm

[cpu]
group adm

[memory]
group adm
  • /etc/munin/munin-node.conf
cidr_allow 192.168.220.247/32
  • Разрешить подключение на порт 4949 нового хоста с хоста мониторинга.

Общие настройки

  • Создать /etc/cron.allow для запрещения пользовательских crontab'ов.
  • Дефолтные правила на каталоги:
chmod 711 /{bin,dev,mnt,etc,home,lib,usr,service,var,.} /usr/bin/ /usr/sbin/ ; chmod 700 /{sbin,proc,sys,root,boot}
nullmailer лежит в /usr/sbin, поэтому лишь для его работы приходится ставить на /usr/sbin 711
Перевод SUID-бинарников на группы:
find / -xdev -perm -4000 -ls

groupadd -r suid

bins='/bin/su /bin/ping /bin/mount /bin/ping6 /bin/umount /usr/bin/chsh /usr/bin/chfn /usr/bin/newgrp /usr/bin/passwd /usr/bin/gpasswd /sbin/mount.nfs'

chown :suid $bins
chmod 4750 $bins

find / -xdev -perm -4000 -ls