PostHeaderIcon Nagios и мониторинг хостов по ssh

Пригодится, если вдруг другими способами мониторить хосты не представляется возможным по разным причинам. Мне лично было просто лень измудряться на что то другое :)
Нам необходимо:

  • сгенерировать пару RSA ключей на сервере и открытый ключ скопировать на клиент
  • завести на клиенте пользователя nagios
  • скопировать на клиента папку с плагинами нагиоса
  • описать в конфиге нагиоса соответствующие команды и сервисы

  • Случилось так, что системный пользователь nagios не имеет возможности залогиниться в систему. Но эту неприятность мы переживем :) Домашняя его директория находится в /var/spool/nagios/. Итак, логинимся в систему пользователем nagios и генерируем RSA ключи:

    1
    2
    3
    4
    5
    sudo -u nagios /bin/sh
    cd /var/spool/nagios/
    mkdir .ssh
    chmod 700 .ssh
    ssh-keygen -t rsa

    Копируем публичный ключ на клиентский хост:

    1
    scp /var/spool/nagios/.ssh/id_rsa.pub user@<ip-клиента>:/home/user

    Создаем пользователя nagios,необходимые папки и файлы на клиентской машине:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    sudo adduser
    Username: nagios
    Full name: Nagios pseudo-user
    Uid (Leave empty for default):
    Login group [nagios]:
    Login group is nagios. Invite nagios into other groups? []:
    Login class [default]:
    Shell (sh csh tcsh zsh nologin) [sh]:
    Home directory [/home/nagios]: /var/spool/nagios
    Home directory permissions (Leave empty for default):
    Use password-based authentication? [yes]: no
    Lock out the account after creation? [no]:
    Username   : nagios
    Password   : <disabled>
    Full Name  : Nagios pseudo-user
    Uid        : 1003
    Class      :
    Groups     : nagios
    Home       : /var/spool/nagios
    Home Mode  :
    Shell      : /bin/sh
    Locked     : no
    OK? (yes/no): yes
    adduser: INFO: Successfully added (nagios) to the user database.
    Add another user? (yes/no): no
    Goodbye!
    1
    2
    3
    4
    5
    mkdir /var/spool/nagios/.ssh
    mv /home/user/id_rsa.pub /var/spool/nagios/.ssh/authorized_keys
    chown -R nagios:nagios /var/spool/nagios/.ssh/
    chmod 700 /var/spool/nagios/.ssh/
    chmod 600 /var/spool/nagios/.ssh/authorized_keys

    Залогинившись на сервере пользователем nagios, как указано выше, проверяем конект до клиента:

    1
    ssh -v nagios@<ip-клиента>

    Конект должен пройти без запроса пароля.
    Теперь скопируем плагины nagios с сервера на клиент:

    1
    2
    nagios@client$ mkdir ~/plugins
    nagios@server$ scp /usr/local/libexec/nagios/* nagios@<ip-клиента>:~/plugins

    Проверяем работу плагинов на клиенте с сервера:

    1
    nagios@server$ ssh nagios@<ip-клиента> "~/plugins/check_disk -w 500 -c 100 -p /var"

    Должно получиться:

    1
    DISK OK - free space: /var 1610 MB (35% inode=85%);| /var=2951MB;4458;4858;0;4958

    Проверяем плагином:

    1
    2
    /usr/local/libexec/nagios/check_by_ssh -H 10.73.0.3 -C "~/plugins/check_disk -w 500 -c 100 -p /var"
    DISK OK - free space: /var 1609 MB (35% inode=85%);| /var=2951MB;4458;4858;0;4958

    Отлично, всё работает. Теперь опишем команду и сервис:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    commands.cfg
    define command {
    command_name    check_ssh_disk
    command_line    $USER1$/check_by_ssh -H $HOSTADDRESS$ -C "~/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$"
    }
    define service{
    use                             local-service         ; Name of service template to use
    host_name                       client
    service_description             Var_Partition
    check_command                   check_ssh_disk!10%!5%!/var
    notifications_enabled           1
    }

    Ну и всё. Осталось перезапустить nagios.
    Много интересной информации есть здесь.

    Оставить комментарий

    PR-CY.ru