понедельник, 6 июля 2015 г.

Автоматическое выключение ESXi при пропадание питания на UPC APC


Сегодня речь пойдет о автоматическом выключении гипервизора ESXi при пропадании питания на ИБП.
Для работы данной связки нам необходим ИБП с сетевой картой. В данном конкретном случае это ИБП фирмы APC и для этих целей у APC есть продукт, который называется APC PowerChute Network Shutdown.
Со стороны ESXi в данной схеме будет участвовать виртуальная машина vSphere Management Assistant, или просто vMA.


Итак, первое, что нам нужно это установить vMA на ESXi.
1) Скачиваем и распаковываем vMA
2) Заходим в vSphere Client, жмем File -> Deploy OVF Template и выбираем скачанный .OVF файл
Принимаем лицензионное соглашение, и устанавливаем виртуальную машину.
3) Запускаем машину.
После запуска, первое что нам откроется это меню настройки сетевого интерфейса
Проходимся по всем настройкам и настраиваем интерфейсы, после того как закончили, жмем 1 (Exit this program)
4) Следующий шаг - смена стандартного пароля от пользователя vi-admin
Вводим в Old Password пароль vmware и 2 раза вводим придуманный вами пароль.
Здесь со стороны vmware есть довольно жесткие требования к сложности пароля.
Дело в том, что vMA будет "хранить" пароли доступа к гипервизору ESXi или к виртуальным машинам (зависит от настроек).
Соответственно, в ваших же интересах, чтобы пароль на vMA не был "простым".
5) После завершения установки можно зайти в консоль управления vMA по адресу https://vMA_IP:5480/ с введенными ранее логином и паролем.
Здесь можно изменить сетевые настройки, настройки часового пояса и автообновления.


Следующий этап - это настройка vMA
1) Настройки прокси:
Если у вас используется прокси сервер, то нужно отредактировать файл /etc/sysconfig/proxy следующим образом:
PROXY_ENABLED="yes"
HTTP_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
HTTPS_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
FTP_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
GOPHER_PROXY="http://proxy_login:proxy_password@proxy_IP:proxy_port"
Подставив свои значения proxy_login, proxy_password и proxy_IP:proxy_port
2) Установка mc
sudo zypper install mc
3) Установка nano
sudo zypper install nano
4) Если вы установили данные программы, то следует перезагрузить vMA
sudo reboot


Настройка APC PowerChute Network Shutdown
1) Качаем APC PowerChute Network Shutdown for VMware ESXi
На момент написания статьи это была версия PowerChute Network Shutdown v4.0 for VMware ESXi
2) Закачиваем PowerChute «парашют» на сервер и распаковываем:
sudo wget ftp://'restrict:Kop$74!@ftp.apc.com/restricted/software/pcns/400/esxi/pcns400ESXi.tar.gz'
sudo tar -xvf pcns*.tar.gz
3) Установим «парашют»:
cd ESXi
sudo ./install_en.sh
Дальше нужно будет ответить на несколько вопросов:
Please enter the installation directory or press enter to install to the default directory (/opt/APC/PowerChute): ENTER
Are you sure you want to install PCNS to /opt/APC/PowerChute [Yes|No]? Yes
Please enter java directory if you want to use your system java (example:/usr/local/bin/jre/jre1.8.0_31) or press enter to install the bundled Java: ENTER
4) Заходим на web интерфейс PowerChute https://vMA_IP:6547
Нам предлагают выполнить несколько настроек:
1) выбираем IPv4 или IPv6 (в зависимости от версии используемого у вас протокола)
2) Standalone VMware Host.
3) Host Protocol - https
4) Host Address - ip адрес гипервизора ESXi
5) Здесь нужно задать логин и пароль администратора гипервизора ESXi. Это нужно для того, чтобы программа установки прописала необходимые параметры в самом гипервизоре:
   Host Username - root
   Host Password - root_password
6) Выбираем сколько UPC используется для питания сервера ESXi (в моем случае 1)
   Please select your UPS configuration - Single (Если у ваш сервер запитан от 1 UPS)
7) На вкладке PowerChute Setup: UPS Details
   Вводим IP Address ИБП
8) Do not turn off the UPS - если не хотите, чтобы PowerChute выключал сам ИБП после того как отработает сценарий
После чего можно подключаться на web-интерфейс PowerChute https://vMA_IP:6547


Теперь нам нужен скрипт отключения ESXi гипервизора
1) Будем пользоваться shutdownHostViaSOAPAPICall.pl, скачать можно от сюда
Переходим в режим root пользователя:
sudo su
Переходим в домашнюю директорию, качаем скрипт и переименовываем его для удобства:
cd /home/vi-admin
wget https://communities.vmware.com/servlet/JiveServlet/download/11623-3-32693/shutdownHostViaSOAPAPICall.pl
mv shutdownHostViaSOAPAPICall.pl shutdown.pl
Теперь нам нужно изменить логин и пароль доступа к гипервизору ESXi в файле shutdown.pl:
my $host_username = 'root';
my $host_password = 'root_ESXi_pswrd';
2) Дополнительно нам нужен файл, где будет написан ip нашего гипервизора, и файл лога - куда мы будем записывать события, связанные с запуском данного скрипта. Создаем фай лога:
touch /var/log/apc_esxi_shutdown.log
Создаем файл с ip гипервизора:
touch /home/vi-admin/hosts
Добавляем ip нашего гипервизора в файл /home/vi-admin/hosts
echo "IP_ESXi" >> /home/vi-admin/hosts
Заменив IP_ESXi на ip вашего ESXi
3) Теперь нам нужно поправить скачанный ранее shutdown.pl, т.к. в оригинале он отказывается работать и выводит ошибку:
 <html>
 <head><title>An Error Occurred</title></head>
 <body>
 <h1>An Error Occurred</h1>
 <p>500 Can't connect to IP_ESXi:443 (certificate verify failed)</p>
 </body>
 </html>
 Failed to issue shutdown command to IP_ESXi
Для того чтобы этого не было, добавим 1 строчку в shutdown.pl
sudo vi /home/vi-admin/shutdown.pl
перед строкой
use strict;
нужно добавить строку
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
и сохранить файл (esc -> :wq). Таким образом начало файла должно выглядеть вот так:
4) Ну и последнее, что нам нужно, это дополнительный файл, который будет запускать PowerChute при пропадании питания на UPS.
sudo vi /home/vi-admin/shutdown_esxi.pl
со следующим содержанием:
#!/bin/sh
echo Shuting down all virtual mashines and ESXi Server
/home/vi-admin/shutdown.pl /home/vi-admin/hosts >> /var/log/apc_esxi_shutdown.log
5) Не забываем про права запуска и владельца файла:
sudo chmod 755 /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl /home/vi-admin/hosts
sudo chmod +x /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl
sudo chown vi-admin:root /home/vi-admin/shutdown_esxi.pl /home/vi-admin/shutdown.pl /home/vi-admin/hosts /var/log/apc_esxi_shutdown.log


Так, теперь заходим на web интерфейс PowerChute https://vMA_IP:6547 и подключаем скрипт:
Configure Events - UPS On Battery - Command file
Ставим галку напротив Enable Command File
Выставляем Delay 20 seconds (если в течении этого времени питание вернется - скрипт отработан не будет)
Full path to command file - путь до нашего скрипта: /home/vi-admin/shutdown_esxi.pl
Применяем настройки


Ну и последнее, что нам нужно это в настройках гипервизора выставить очередность запуска и выключения виртуальных машин:
В Данном порядке они будут включаться, в обратном выключаться.
В поле Shutdown action лучше выбрать Guest shutdown, что аналогично "Пуск - Завершение работы" у windows, в отличии от Power Off, который аналогичен нажатию кнопки выключения питания на системном блоке:

Вот собственно и все, теперь если питание пропадет на 20 секунд, гипервизор получит сигнал выключения и произойдет поочередное выключение машин, а после и самого гипервизора.

четверг, 2 июля 2015 г.

Настройка Nagios 3


Сегодня добавим хост на мониторинг в Nagios3 (сервер Debian 8).
Итак, для начала немного теории.
1) Все настройки мониторинга хранятся в папке /etc/nagios3/conf.d
2) Nagios "воспринимает" только файлы с расширением .cfg
3) Все хосты можно разбить по разным файлам, а можно объеденить хосты и сервисы (методы проверки) в разные файлы

Начнем с самого начала.
Установим Nagios:
apt-get install nagios3
Cделаем backup существующих настроек:
mv /etc/nagios3/conf.d /etc/nagios3/conf.d.BACK
mkdir /etc/nagios3/conf.d
1) Первое, что нам нужно - это определить временные интервалы.
Создадим файл настроек временных интервалов /etc/nagios3/conf.d/01-timeperiods.cfg:
echo "
# Период 24х7 (Круглосуточная проверка) - которым в основном и будем пользоваться
define timeperiod{
    timeperiod_name 24x7        ; Имя временного периода (24x7)
    alias           24x7        ; Описание периода
    monday          00:00-24:00 ; Временной интервал в понедельник
    tuesday         00:00-24:00 ; Временной интервал во вторник
    wednesday       00:00-24:00 ; Временной интервал в среду
    thursday        00:00-24:00 ; Временной интервал в четверг
    friday          00:00-24:00 ; Временной интервал в пятницу
    saturday        00:00-24:00 ; Временной интервал в субботу
    sunday          00:00-24:00 ; Временной интервал в воскресение
    }
# Рабочие часы
define timeperiod{
    timeperiod_name workhours
    alias           workhours
    monday          09:00-17:00
    tuesday         09:00-17:00
    wednesday       09:00-17:00
    thursday        09:00-17:00
    friday          09:00-17:00
    }
# Не рабочие часы
define timeperiod{
    timeperiod_name nonworkhours
    alias           nonworkhours
    monday          00:00-09:00,17:00-24:00
    tuesday         00:00-09:00,17:00-24:00
    wednesday       00:00-09:00,17:00-24:00
    thursday        00:00-09:00,17:00-24:00
    friday          00:00-09:00,17:00-24:00
    saturday        00:00-24:00
    sunday          00:00-24:00
    }
# Для того "чтобы было" период "никогда"
# Здесь не заданны временные интервалы, это значит, что проверки не будет
define timeperiod{
    timeperiod_name never 
    alias           Never
    }
" >> /etc/nagios3/conf.d/01-timeperiods.cfg
2) Нужно задать команду оповещения по почте, и настроить эту самую почту.
Установим sendemail, с помощью которого будем производить почтовую рассылку:
apt-get install sendemail
Добавим следующий код в файл /etc/nagios3/commands.cfg:
#Оповещение по email о состоянии хоста
define command{
    command_name    notify-host-by-email
    command_line /usr/bin/printf "%b" "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -s youre.mail.server -xu monitoring_username -xp monitoring_password -t $CONTACTEMAIL$ -f frommail@mail.server -o tls=no -l /var/log/sendemail.log -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -m "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"
    }
#Оповещение по email о состоянии сервиса
define command{
    command_name    notify-service-by-email
    command_line /usr/bin/printf "%b" "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/bin/sendemail -s youre.mail.server -xu monitoring_username -xp monitoring_password -t $CONTACTEMAIL$ -f frommail@mail.server -o tls=no -l /var/log/sendemail.log -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -m "*****MONITORING SYSTEM*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"
    }
#Команда проверки по SNMP
define command{
    command_name    check_snmp01
    command_line    /usr/lib/nagios/plugins/check_snmp -H $HOSTADDRESS$ $ARG1$
    }
Итак, если не вдаваться в подробности, видно, что мы только что добавили 3 команды:
notify-host-by-email - оповещение по почте о состоянии хоста
notify-service-by-email - оповещение по почте о состоянии сервиса
Ключевые моменты данных команд, которые нужно настроить исходя из сервера, через который будет происходить рассылка:
-s youre.mail.server    - ip или DNS имя почтового сервера
-xu monitoring_username - имя пользователя
-xp monitoring_password - пароль
-f frommail@mail.server - почтовый ящик мониторинга
-o tls=no               - используется или нет tls 
И check_snmp01, с помощью которой будем проверять состояние хостов по SNMP
3) Задаем контактные лица, которым будут отправляться оповещения о пропадании сервисов /etc/nagios3/conf.d/02-contacts.cfg:
echo "
#service_notification_options :
#w - оповещать, если состояние сервиса WARNING
#u - оповещать, если состояние сервиса UNKNOWN
#c - оповещать, если состояние сервиса CRITICAL
#r - оповещать, если состояние сервиса RECOVERY (сервис восстановился после сбоя)
#f - оповещать, если состояние сервиса FLAPPING - происходят кратковременные сбои (вкл/выкл) сервиса
#n - не оповещать (контакт не получит оповещений о состоянии сервиса)

#host_notification_options :
#d - оповещать, если состояние хоста DOWN
#u - оповещать, если состояние хоста UNREACHABLE
#r - оповещать, если состояние хоста RECOVERY (хост восстановился после сбоя)
#f - оповещать, если состояние хоста FLAPPING - происходят кратковременные сбои (вкл/выкл)
#s - оповещать, если хост выключился(включился) по расписанию
#n - не оповещать (контакт не получит оповещений о состоянии хоста)

#Контакт №1
define contact{
    contact_name                  main_admin              ; Имя контакта
    alias                         Glavnii admin           ; Описание контакта
    service_notification_period   24x7                    ; Оповещать о состоянии сервиса во временной интервал
    host_notification_period      24x7                    ; Оповещать о состоянии хоста во временной интервал
    service_notification_options  w,u,c,r                 ; WARNING,UNKNOWN,CRITICAL,RECOVERY
    host_notification_options     d,r                     ; DOWN,RECOVERY
    service_notifications_enabled 1                       ; Оповещать о изменениях сервисов
    host_notifications_enabled    1                       ; Оповещать о изменениях хоста
    service_notification_commands notify-service-by-email ; Способ оповещения о состоянии сервиса(задан в commands.cfg)
    host_notification_commands    notify-host-by-email    ; Способ оповещения о состоянии хоста(задан в commands.cfg)
    email                         main_admin@yordomain.com; Почтовый ящик контактного лица
    }
#Контакт №2
define contact{
define contact{
    contact_name                  second_admin              ; Имя контакта
    alias                         Ne Glavnii admin          ; Описание контакта
    service_notification_period   24x7                      ; Оповещать о состоянии сервиса во временной интервал
    host_notification_period      24x7                      ; Оповещать о состоянии хоста во временной интервал
    service_notification_options  w,u,c,r                   ; WARNING,UNKNOWN,CRITICAL,RECOVERY
    host_notification_options     d,r                       ; DOWN,RECOVERY
    service_notifications_enabled 1                         ; Оповещать о изменениях сервисов
    host_notifications_enabled    1                         ; Оповещать о изменениях хоста
    service_notification_commands notify-service-by-email   ; Способ оповещения о состоянии сервиса(задан в commands.cfg)
    host_notification_commands    notify-host-by-email      ; Способ оповещения о состоянии хоста(задан в commands.cfg)
    email                         second_admin@yordomain.com; Почтовый ящик контактного лица
    }
#Группа контактов
define contactgroup{
    contactgroup_name       admins                    ; Имя группы
    alias                   Nagios Administrators     ; Описание
    members                 main_admin,second_admin   ; Состав группы
    }
" >> /etc/nagios3/conf.d/02-contacts.cfg
4) Зададим шаблон для хостов. Это необязательно, но в дальнейшем значительно упростит конфигурацию Nagios-а
echo "
#notification_options :
#d - оповещать, если состояние хоста DOWN
#u - оповещать, если состояние хоста UNREACHABLE
#r - оповещать, если состояние хоста RECOVERY (хост восстановился после сбоя)
#f - оповещать, если состояние хоста FLAPPING - происходят кратковременные сбои (вкл/выкл)
#s - оповещать, если хост выключился(включился) по расписанию
#n - не оповещать (контакт не получит оповещений о состоянии хоста)

define host{
    name                         host-shablon      ; Имя шаблона
    notifications_enabled        1                 ; Включить оповещения
    event_handler_enabled        1                 ; Включить обработчик событий (контролировать состояние хоста)
    flap_detection_enabled       1                 ; Реагировать на ФЛАППИНГ или нет (кратковременный вкл/выкл хоста)
    failure_prediction_enabled   1                 ; Прогнозирование сбоев. В дальнейшем Nagios от этого 
                                                   ;  параметра отказался совсем, т.к. он часто сбоит
    process_perf_data            1                 ; Обработка данных о производительности
    retain_status_information    1                 ; Обработка состояния хоста(включен, выключен, перезагружен)
                                                   ;  Если включен retain_nonstatus_information - запоминает состояние
                                                   ;  хоста и восстанавливает значение в случае перезагрузки нагиоса
    retain_nonstatus_information 1                 ; Запоминать состояние хоста в случае перезагрузки нагиоса
    check_command                check-host-alive  ; Команда проверки. check-host-alive - проверка хоста на доступность
    max_check_attempts           3                 ; Количество проверок статуса отличного от ОК, 
                                                   ;  перед тем как будет создано оповещение
    notification_interval        60                ; Если статус отличен от ОК, выдавать оповещения каждый час 
                                                   ;  (0-чтобы оповещать только в случае восстановления)
    notification_period          24x7              ; Период оповещения 24х7
    notification_options         d,u,r             ; DOWN, UNREACHABLE, RECOVERY
    contact_groups               admins            ; Кому рассылать оповещения
    register                     0                 ; Не регистрировать в Нагиосе, т.к. это только шаблон
    }
" >> /etc/nagios3/conf.d/03-host_template.cfg
5) Зададим шаблон для сервисов:
echo "
#notification_options :
#w - оповещать, если состояние сервиса WARNING
#u - оповещать, если состояние сервиса UNKNOWN
#c - оповещать, если состояние сервиса CRITICAL
#r - оповещать, если состояние сервиса RECOVERY (сервис восстановился после сбоя)
#f - оповещать, если состояние сервиса FLAPPING - происходят кратковременные сбои (вкл/выкл) сервиса
#n - не оповещать (контакт не получит оповещений о состоянии сервиса)

define service{
    name                            service_shablon ; Имя шаблона
                                                    ; Есть 2 типа проверок состояния сервиса регулярно и по расписанию
    active_checks_enabled           1               ; Включить акивные (регулярные) проверки
    passive_checks_enabled          1               ; Включить пассивные (по расписанию) проверки
    parallelize_check               1               ; Активные проверки должны быть параллельными  
    obsess_over_service             1               ; Предпочитать эту проверку а не через ocsp_command
    check_freshness                 0               ; Проверка на "свежесть" пассивных проверок
    notifications_enabled           1               ; Включить оповещения
    event_handler_enabled           1               ; Включить обработчик событий
    flap_detection_enabled          1               ; Реагировать на ФЛАППИНГ или нет (кратковременный вкл/выкл сервиса)
    failure_prediction_enabled      1               ; Прогнозирование сбоев. В дальнейшем Nagios от этого 
                                                    ;  параметра отказался совсем, т.к. он часто сбоит
    process_perf_data               1               ; Обработка данных о производительности
    retain_status_information       1               ; Обработка состояния сервиса(включен, выключен, перезагружен)
                                                    ;  Если включен retain_nonstatus_information - запоминает состояние
                                                    ;  сервиса и восстанавливает значение в случае перезагрузки нагиоса
    retain_nonstatus_information    1               ; Запоминать состояние сервиса в случае перезагрузки нагиоса
    notification_interval           60              ; Если статус отличен от ОК, выдавать оповещения каждый час 
                                                    ;  (0-чтобы оповещать только в случае восстановления)
    is_volatile                     0               ; Постоянный(0) или непостоянный(1) сервис
    check_period                    24x7            ; Период проверки 24х7
    normal_check_interval           1               ; Интервал нормальной проверки
    retry_check_interval            1               ; Интервал повторной проверки
    max_check_attempts              1               ; Количество проверок статуса отличного от ОК, 
                                                    ;  перед тем как будет создано оповещение
    notification_period             24x7            ; Период оповещения 24х7
    notification_options            w,u,c,r         ; WARNING UNKNOWN CRITICAL RECOVERY
    contact_groups                  admins          ; Кому рассылать оповещения
    register                        0               ; Не регистрировать в Нагиосе, т.к. это только шаблон
    }
" >> /etc/nagios3/conf.d/03-service_template.cfg
6) Создаем сервис PING, в который будут включены все хосты, и будут они просто пинговаться:
echo "
#Данный сервис пингует все хосты, которые включены в мониторинг
#Сначала сам сервис:
define service {
    hostgroup_name                  PING-CHECK                     ; Название сервиса
    service_description             PING                           ; Описание сервиса
    check_command                   check_ping!200.0,40%!400.0,80% ; Команда проверки
    use                             service_shablon                ; Использовать шаблон service_shablon
}
#А теперь группа хостов, которая будет пинговаться:
#Здесь есть 1 момент, когда hostgroup_name сервиса и группы хостов совпадает
#Таким образов в данной группе хосты будут мониторится по описанному выше сервису
define hostgroup {
    hostgroup_name  PING-CHECK  ; Название группы
    alias           ping all    ; Описание группы
    members         *           ; Состав группы * - значит все хосты
    }
" >> /etc/nagios3/conf.d/04-ping_all_hosts.cfg
7) Ну а теперь зададим наш хост:
echo "
#Здесь задается хост
define host{
    host_name               my_host1                  ; Имя хоста. Лучше без пробелов и по английски
    alias                   my host number 1          ; Описание хоста
    use                     host-shablon              ; Использовать шаблон              
    address                 212.193.163.6             ; IP Адрес хоста (который автоматически будет добавлен в сервис пинг)
    }
#Определим группу хостов. В дальнейшем, когда в мониторинге будет много хостов - это будет помогать
define hostgroup {
    hostgroup_name          my_hosts_group_1          ; Имя группы 
    alias                   Group of hosts 1          ; Описание
    members                 my_host1                  ; Члены группы (по полю host_name). 
                                                      ; Если членов несколько, то через запятую my_host1,my_host2 и т.д.
    }
" >> /etc/nagios3/conf.d/20-my_host_01.cfg
8) Хост у нас уже есть, а теперь запишем принтер.
Будем мониторить состояние картриджей в принтере Kyocera 6026 (Kyocera 6126,2035,2135).
Мониторинг будет осуществляться по SNMP:
echo "
#Сетевой принтер определяется для нагиоса как обычный хост
define host {
 host_name         Printer 6026 Ur Otdel
 alias             Printer in Ur office
 address           10.77.0.11
 use               host-shablon
 }
#Можно включить его в группу с предыдущим хостом
define hostgroup {
    hostgroup_name          my_hosts_group_1          ; Имя группы 
    alias                   Group of hosts 1          ; Описание
    members                 Printer 6026 Ur Otdel     ; Члены группы (по полю host_name). 
    }
#Проверка черного картриджа 
#WARNING 443 страницы
#CRITICAL 100 страниц
define service{
        use                     service_shablon       ; Шаблон сервиса
        host_name               Printer 6026 Ur Otdel ; Имя хоста (по полю host_name). 
        service_description     Black Cartridge       ; Описание сервиса
        check_command           check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.4 -w 433: -c 100: ; SNMP запрос
        }
#Проверка синего картриджа
#WARNING 443 страницы
#CRITICAL 100 страниц
define service{
        use                     service_shablon
        host_name               Printer 6026 Ur Otdel
        service_description     Blue Cartridge
        check_command           check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.1 -w 433: -c 100:
        }
#Проверка красного картриджа
#WARNING 443 страницы
#CRITICAL 100 страниц
define service{
        use                     service_shablon
        host_name               Printer 6026 Ur Otdel
        service_description     Red Cartridge
        check_command           check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.2 -w 433: -c 100:
        }
#Проверка желтого картриджа
#WARNING 443 страницы
#CRITICAL 100 страниц
define service{
        use                     service_shablon
        host_name               Printer 6026 Ur Otdel
        service_description     Yellow Cartridge
        check_command           check_snmp01!-C public -o .1.3.6.1.2.1.43.11.1.1.9.1.3 -w 433: -c 100:
        }
" >> /etc/nagios3/conf.d/30-my_printer_01.cfg


Вот собственно и все.
Осталось перезагрузить Нагиос:
/etc/init.d/nagios3 restart
Теперь у нас должны появится 2 хоста в мониторинге, объединенные в одну группы.
При этом у принтера будет проверка состояния картриджей, и оба будут пинговаться.