80019

Разработка решения для централизованного мониторинга ресурсов ЕИС кафедры ИКТ

Дипломная

Информатика, кибернетика и программирование

В данной работе разработано решение для централизованного мониторинга единой информационной среды кафедры ИКТ. Данное решение содержит: компонент для сбора данных о состоянии системных ресурсов серверов, средство для быстрого конфигурирования, систему для визуализации данных, средство слежения...

Русский

2015-02-16

3.56 MB

1 чел.

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра «Информационно-коммуникационные технологии»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к дипломному проекту

На тему «Разработка решения для централизованного мониторинга ресурсов ЕИС кафедры ИКТ»

Дипломник Щербатюк Александр Васильевич

/

Руководитель проекта Грунау Андрей Борисович/

Допущен к защите_________________2010 г.

КОНСУЛЬТАНТЫ ПРОЕКТА:

Специальная часть ______________________  Д. О. Столяров

Охрана труда  ______________________  А. Ф. Завальнюк

Заведующий кафедрой ______________________  В. Н. Азаров

МОСКВА 2010 г.

Аннотация

В данной работе разработано решение для централизованного мониторинга единой информационной среды кафедры ИКТ. Данное решение содержит: компонент для сбора данных о состоянии системных ресурсов серверов, средство для быстрого конфигурирования, систему для визуализации данных, средство слежения за состоянием сетевых служб у серверов и сетевого оборудования. А также инструмент для быстрого развертывания данного решения.

Техническое задание

На дипломный проект «Разработка решения для централизованного мониторинга ресурсов ЕИС кафедры ИКТ»

Описать структуру информационной среды кафедры и составить схему сети.

Разработать решение для мониторинга ресурсов ЕИС кафедры, работающее под операционной системой Gentoo Linux и включающее:

  •  проверку состояния основных сетевых ресурсов ЕИС, таких как:
    •  сервера, включая виртуальные выделенные сервера (VPS);
    •  коммутаторы, маршрутизаторы;
  •  проверку состояний основных сетевых служб: SSH, HTTP, SMB, FTP, ICMP, IMAP, MySQL, RTMP;
  •  проверку основных системных ресурсов:
    •  свободное место на жестком диске;
    •  оперативная память;
    •  загрузка CPU;
    •  использование виртуальной памяти;
    •  состояние дисковых массивов RAID;
  •  уведомление о сбоях по: электронной почте, SMS;
  •  графическое отображение параметров функционирования сетевых ресурсов ИС;
  •  компонент для сбора данных о работе серверов, осуществляющий:
    •  конфигурирование необходимых проверок;
    •  добавление собственных проверок;
    •  параллельное выполнение проверок;
    •  передачу результатов проверок на сервер мониторинга по HTTP протоколу;
    •  механизм сбора и обработки полученных данных на стороне сервера мониторинга;
  •  инструмент для гибкого конфигурирования системы;
  •  инструмент для быстрого развертывания данного решения.;

Провести тестирование системы мониторинга.

Провести внедрение разработанного решения в ЕИС кафедры.

Оглавление

[1] Аннотация

[2] Техническое задание

[3] 1. ВВЕДЕНИЕ

[3.1] 1.1. Введение

[3.2] 1.3. Обоснование выбора темы дипломного проекта

[3.3] 1.4. Анализ ТЗ

[4] 2. СПЕЦИАЛЬНАЯ ЧАСТЬ ПРОЕКТА

[4.1] 2.1 Обзор литературы

[4.1.1] 2.1.1. Анализ систем централизованного мониторинга с открытым исходным кодом

[4.2] 2.2. Анализ Единой Информационной Среды кафедры ИКТ

[4.3] 2.3. Разработка компонента для сбора данных о работе серверов

[4.3.1] 2.3.1 Постановка задачи

[4.3.2] 2.3.2. Анализ задачи

[4.3.3] 2.3.3. Алгоритм работы компонента

[4.4] 2.4. Разработка инструмента для быстрого конфигурирования системы

[4.5] 2.5. Интеграция решения для графического отображения параметров работы серверов и оборудования

[4.5.1] 2.5.1. PNP добавление к системе Nagios

[4.5.2] 2.5.2. Nagvis дополнение к системе Nagios

[4.6] 2.6. Создание средства для быстрого развертывания системы

[4.6.1] 2.6.1. Анализ решений

[4.6.2] 2.6.2. RPM пакет

[4.6.3] 2.6.3. Ebuild скрипты

[4.6.4] 2.6.4. Tar aрхив

[4.7] 2.7. Внедрение системы мониторинга в ЕИС кафедры ИКТ

[4.7.1] 2.7.1. Установка и базовая настройка системы Nagios

[4.7.2] 2.7.2 Настройка E-mail оповещения.

[4.7.3] 2.7.3 Настройка SMS оповещения через услугу оповещения о новом письме

[4.7.4] 2.7.4 Настройка SMS оповещения через мобильный телефон

[4.7.5] 2.7.5. Установка и настройка Nagvis

[4.7.6] 2.7.6. Установка и настройка PNP4Nagios

[4.7.7] 2.7.7. Установка и настройка компонента для анализа собранных данных

[4.7.8] 2.7.8. Инструмент для быстрого развертывания системы

[4.7.9] 2.7.9. Добавление серверов в мониторинг

[5] 3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

[5.1] 3.1. Введение

[5.2] 3.2. Тестирование системы Nagios

[5.2.1] 3.2.1 Тестирование графического интерфейса

[5.2.2] 3.2.2. Тестирование системы оповещения

[6] 4. ОХРАНА ТРУДА

[6.1] 4.1. Исследование возможных опасных и вредных факторов при эксплуатации ЭВМ и их влияния на пользователей

[6.2] 4.2. Анализ влияния опасных и вредных факторов на пользователя

[6.2.1] 4.2.1 Влияние электрического тока

[6.2.2] 4.2.2. Влияние статического электричества

[6.2.3] 4.2.3. Влияние электромагнитных излучений НЧ

[6.3] 4.3. Методы и средства защиты пользователей от воздействия на них опасных и вредных факторов

[6.3.1] 4.3.1. Методы и средства защиты от поражения электрическим током

[6.3.2] 4.3.2. Методы и средства защиты от электромагнитных полей низкой частоты

[6.3.3] 4.3.3. Методы и средства защиты от статического электричества

[6.4] 4.4. Эргономические требования к рабочему месту ПЭВМ

[6.4.1] 4.4.1. Общие рекомендации при работе с вычислительной техникой

[6.4.2] 4.4.2. Требования к помещениям и организации рабочих мест

[6.4.3] 4.4.3. Требования к организации работы

[6.4.4] 4.4.4. Выводы

[7] ЗАКЛЮЧЕНИЕ

[7.1] Основные выводы по дипломному проекту

[7.2] Перспективы развития

[8] СПИСОК ЛИТЕРАТУРЫ

[8.1] Список литературы

[9] ПРИЛОЖЕНИЕ К ДИПЛОМНОМУ ПРОЕКТУ

[9.1] Компонент-менеджер для анализа собранных данных на сервере мониторинга

[9.2] Компонент-агент для сбора данных на наблюдаемом сервере

[9.3] Инструмент для быстрого добавления новых серверов в систему мониторинга

[9.4] Ebuild скрипт для быстрого развертывания системы

1. ВВЕДЕНИЕ

1.1. Введение

На сегодняшний день все современные учреждения имеют локальную сеть, состоящую из персональных компьютеров, сетевого оборудования, серверов и шлюза для доступа в интернет. также большинство учреждений, наряду с компаниями и предприятиями, постоянно развивают свою сетевую инфраструктуру, добавляя сервера и сетевое оборудование для создания дополнительных информационных ресурсов.

Кафедра ИКТ не является исключением, ее в полной мере можно назвать современной и постоянно развивающейся. Кафедра ИКТ имеет собственную Единую Информационную Среду, в которую входят компьютерные классы, видеостудя, сетевое оборудование, сервера. В ЕИС кафедры входят информационные ресурсы такие как: сайт кафедры, форум, файловое хранилище, почтовый сервер. также кафедра имеет возможность обеспечивать студентов web-хостингом, для размещение и поддержки их web-сайтов. Для обеспечения работы ЕИС на кафедре ИКТ расположены сервера и сетевое оборудование, отвечающие за хранение, обработку и представление информации пользователям, а также связность и исправную работу сети.

Для наблюдения за работой этой структуры и её технического обслуживания необходимо использование системы централизованного мониторинга. Система мониторинга может обеспечить круглосуточный контроль всех ресурсов и своевременно оповестить о нарушении работы данных ресурсов.

1.3. Обоснование выбора темы дипломного проекта

Централизованный мониторинг является важным, востребованным и  необходимым компонентом для управления сетевой инфраструктурой. Данное решение является востребованным на кафедре ИКТ и направленно на создание продукта, который можно будет быстро развертывать и расширять.

Компьютерные сети и информационные среды постоянно развиваются, повышая необходимость в использовании средств централизованного управления и мониторинга.

Такого рода системы позволяют своевременно реагировать на сбои и прогнозировать выход из строя сетевого оборудования.

Этими доводами  и обосновывается выбор темы дипломного проекта «Разработка решения для централизованного мониторинга ресурсов ЕИС кафедры ИКТ.»

1.4. Анализ ТЗ

В процессе анализа технического задания на дипломное проектирование дипломантом были выяснены основные требованию к решению:

  •  решение должно учитывать особенности сетевой структуры кафедры ИКТ;
  •  решение должно основываться на программном обеспечении с открытым исходным кодом;
  •  решение должно покрывать функционал, указанный в техническом задании;
  •  решение должно обеспечивать возможность легкого расширения функционала;
  •  решение должно иметь инструмент для быстро развертывания;
  •  решение должно работать под операционной системой Linux.

Данное решение должно обеспечивать круглосуточный анализ состояния сетевых и локальных ресурсов сетевого оборудования, а также обеспечивать своевременное оповещение по электронной почте и SMS.

Для обеспечения SMS оповещений, дипломантом предлагается использовать следующие способы:

  1.  Подключить к серверу мобильный телефон и обеспечить возможность отправки SMS с сервера непосредственно через подключенный мобильный телефон;
  2.  Можно воспользоваться услугой SMS почта, предоставляемой любым московским мобильным оператором;
  3.  Можно воспользоваться GPRS модемом, что по сути является модификацией первого способа.

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

Проанализировав факты, дипломант пришёл к выводу, что поставленные задачи выполнимы. Для того, чтобы решение полностью соответствовало особенностям кафедры ИКТ, дипломантом будет произведен анализ сетевой структуры кафедры.

2. СПЕЦИАЛЬНАЯ ЧАСТЬ ПРОЕКТА

2.1 Обзор литературы

2.1.1. Анализ систем централизованного мониторинга с открытым исходным кодом

Система мониторинга - это мощное средство поддержки и анализа состояния сетевых ресурсов, позволяющая обеспечивать круглосуточный контроль за сетевыми ресурсами массового пользования. Использование такой системы позволяет отследить возможные сбои и причины выхода из строя сетевого оборудования. Она также обеспечивает оповещение о критическом состоянии ресурсов, что позволяет незамедлительно принять меры для поддержания работы данных ресурсов.

Система Nagios [17] — это система с открытым кодом, предназначенная для мониторинга компьютерных систем и сетей. Она следит за указанными узлами и службами, и оповещает администратора в том случае, если какие-то из служб прекращают (или возобновляют) свою работу.

Nagios, первоначально созданная под именем Netsaint, разработана Этаном Галстадом (Ethan Galstad). Он же поддерживает и развивает систему сегодня, совместно с командой разработчиков, которые занимаются как официальными, так и неофициальными плагинами.

Первоначально Nagios была разработана для работы под GNU/Linux, но она также хорошо работает и под другими Unix-подобными ОС.

Nagios распространяется по лицензии GNU General Public License Version 2.

Возможности:

  •  Мониторинг сетевых служб (SMTP, POP3, HTTP, NNTP, ICMP, SNMP);
  •  Мониторинг состояния хостов (загрузка процессора, использование диска, системные логи). В большинстве сетевых операционных систем, даже Microsoft Windows с модулем NRPE_NT;
  •  Поддержка удаленного мониторинга через шифрованные туннели SSH или SSL;
  •  Простая архитектура модулей расширений (плагинов) позволяет, используя любой язык программирования по выбору (Shell, C++, Perl, Python, PHP, C# и другие), легко разрабатывать свои собственные способы проверки служб;
  •  Параллельная проверка служб;
  •  Возможность определять иерархии хостов сети с помощью родительских хостов, позволяет обнаруживать и различать хосты, которые вышли из строя, и те, которые недоступны;
  •  Отправка оповещений в случае возникновения проблем со службой или хостом (с помощью почты, пейджера, смс, или любым другим способом, определенным пользователем через модуль системы);
  •  Возможность определять обработчики событий произошедших со службами или хостами для проективного разрешения проблем;
  •  Автоматическая ротация лог-файлов;
  •  Возможность организации совместной работы нескольких систем мониторинга с целью повышения надёжности и создания распределенной системы мониторинга;
  •  Включает в себя утилиту nagiostats, которая выводит общую сводку по всем хостам, по которым ведется мониторинг.

Система Icinga [16] - это система мониторинга с открытым кодом, основанная на системе Nagios. Она позволяет наблюдать за состоянием сети и сетевыми ресурсами, сообщать пользователям о сбоях, а также собирать данные по производительности для отчетности.

Основное отличие Icinga от Nagios:

  •  собственный интерфейс;
  •  модифицированная структура взаимодействия API и ядра системы.

Система Big Sister [18] - это системный и сетевой монитор с открытым кодом, с лицензией GNU. Изначально был только системой сетевого мониторинга, а теперь является мультипроектом в области систем управления и мониторинга. В нее входит:

  •  монитор сетевых систем(серверов);
  •  предоставление легкого отслеживания, в реальном времени, состояния сети;
  •  предупреждение о критическом состоянии систем;
  •  генерация истории изменений состояний;
  •  сбор и отображение различных данных по производительности систем;
  •  хранения собранных данных в MySQL или текстовом файле.

Система Ganglia [19] - масштабируемая распределенная система мониторинга для высоко производительных систем, таких как кластерные и грид системы. Активно используются следующие технологии:

  •  XML - для передачи данных;
  •  XDR для компактного, портативного транспорта данных;
  •  RRDtool для хранения данных и визуализации.

Система Zabbix [20] — открытое программное обеспечение написанное Алексеем Владышевым. Zabbix создан для мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования.

Для хранения данных используется MySQL, PostgreSQL, SQLite или Oracle. Web-интерфейс написан на PHP. Zabbix поддерживает несколько видов мониторинга. Simple checks может проверять доступность и реакцию стандартных сервисов, таких как SMTP или HTTP без установки какого-либо программного обеспечения на наблюдаемом хосте. Zabbix agent может быть установлен на UNIX-подобных или Windows хостах для получения данных о нагрузке процессора, использования сети, дисковом пространстве и тд. External check — выполнение внешних программ. Zabbix также поддерживает мониторинг через SNMP.

Возможности:

  •  Распределенный мониторинг вплоть до 1000 узлов. Конфигурация младших узлов полностью контролируется старшими узлами, находящимися на более высоком уровне иерархии;
  •  Сценарии на основе мониторинга;
  •  Автоматическое обнаружение;
  •  Централизованный мониторинг лог-файлов;
  •  Web-интерфейс для администрирования и настройки;
  •  Отчетность и тенденции;
  •  SLA мониторинг;
  •  Поддержка высокопроизводительных агентов (zabbix-agent) практически для всех платформ;
  •  Комплексная реакция на события;
  •  Поддержка SNMPv1,2,3;
  •  Расширение за счет выполнения внешних программ;
  •  система шаблонов и групп;
  •  Возможность создавать карты сете;
  •  Автоматическое обнаружение по диапазону IP-адресов, доступным сервисам и SNMP проверка;
  •  Автоматический мониторинг обнаруженных устройств;
  •  Автоматическое удаление отсутствующих хостов;
  •  Распределение по группам и шаблонам в зависимости от возвращаемого результата.

Система Pandora FMS (Pandora Flexible Monitoring System)[21] - программное решение для мониторинга. Pandora FMS позволяет осуществлять мониторинг c визуализацией состояний и производительностью нескольких параметров из различных операционных систем, серверов приложений и аппаратных систем, таких как брандмауэры, прокси, баз данных, web-серверов или маршрутизаторов.

Pandora FMS могут быть развернуты практически в любой операционной системе. Мониторинг осуществляется по средствам (WMI, SNMP, TCP. UDP, ICMP, HTTP) и агентов. Агенты доступны для каждой платформы. Она может также контролировать аппаратные системы с TCP / IP стеком такие, как балансировки нагрузки, маршрутизаторы, сетевые коммутаторы, принтеры и брандмауэры.

Возможности:

  •  Обнаружение новых систем в сети;
  •  Проверка на наличие или производительности;
  •  Позволяют получать данные внутри систем со своим агентам Lite (почти каждая операционная система);
  •  Позволяют получать данные из вне, используя только зонды сети. Включая SNMP;
  •  Get SNMP ловушек из общих сетевых устройств;
  •  Создание в реальном времени отчетов и графиков;
  •  SLA отчетности;
  •  Пользователь определяет уровень графического просмотра;
  •  Хранение данных в течение нескольких месяцев, готовых для использования в отчетность;
  •  Графики в реальном времени для каждого модуля;
  •  Высокая доступность для каждого компонента;
  •  Масштабируемость и модульная архитектура;
  •  Поддерживает до 2500 модулей на сервере;
  •  Оповещения пользователя. Также могут быть использованы для реагирования на инциденты;
  •  Интегрированный инцидент менеджер;
  •  Интегрированное управление БД: чистка и БД уплотнения;
  •  Многопользовательские, многопрофильное, групповые;
  •  Система событий с пользовательской проверкой для работы в группах;
  •  Детализация доступа и пользовательские профили для каждой группы и каждого пользователя;
  •  Персонализированное использование профилей с количеством атрибутов безопасности до 8, без ограничений по группам или профилям.

Система GroundWork[22] - это система обеспечивает мониторинг за всеми аспектами ИТ-среды в том числе сетями, серверами, операционными системами, приложениями и базами данных, используя тысячи Nagios плагинов. GroundWork могут отслеживать практически любые устройства, системы или программного компонента. GroundWork также поддерживает стандартизированные методы мониторинга, такие как SNMP, Syslog и WMI.

GroundWork Monitor основан на:

  •  Nagios;
  •  RRDtool.

Данный проект имеет два решения:

  •  Community Edition - бесплатное решение;
  •  Enterprise Edition - платное решение.

Система NOC network monitoring application[23] разработана на основе интеграции визуализации трафика(RRDTool) с проверкой хостов(SNMP), мониторинга и системы построения графиков. Он использует SNMP для мониторинга серверов, wireless точек доступа, UPS систем, роутеров, фаерволов, сетевых коммутаторов - всего, что работает с SNMP, f а также оповещает на web-странице и по электронной почте о сбоях.

Возможности:

  •  Мониторинг в системах Linux/UNIX and Microsoft? Servers/Workstations;
  •  Процесс мониторинга;
  •  CPU загрузку / среднюю загрузку;
  •  Использование оперативной памяти;
  •  Использование памяти жестких дисков;
  •  Противоречия ввода/вывода дисков;
  •  Трафик сетевого интерфейса;
  •  Полная интеграция с RRD для всех графиков/диаграмм;
  •  Настройка оповещений по электронной почте, для всех устройств;
  •  Монитор времени работы всех устройств;
  •  Отображение пропускной способности для всех устройств которые мониторяться с помощью SNMP;
  •  Гибкая и полностью настраиваемая конфигурация.

Система М/Monit[24] - это система для автоматического управления и контроля, информационно-технологических систем. С помощью M/Monit можно контролировать и управлять распределенными вычислительными система, проводить автоматическое обслуживание, восстановление и реагировать на сбои.

Возможности: M/Monit использует приложение "агент", для управления и мониторинга всех хостов. Он может запускать, останавливать, перезапускать, а замораживать и активировать сервисы, если они используют слишком много ресурсов.

M/Monit позволяет следить за:

  •  Загрузкой процессора;
  •  Загрузкой оперативной памяти;
  •  Использованием жестких дисков;
  •  Состоянием файлов, папок;
  •  Изменениями в файловой системе.

M/Monit имеет простой web-интерфейс, в котором можно отслеживать состояния и события в реальном времени, а также строить диаграммы, графики и таблицы.

    В процессе анализа дипломант выяснил, что не все рассмотренные системы в полной мере покрывают необходимый функционал. Для систем, покрывающих необходимый функционал, дипломантом была составлена таблица, отражающая основные критерии выбора системы для разрабатываемого решения. Таблица 1.

Таблица 1. Анализ систем мониторинга.

Критерий

Nagios

Icigna

Zabbix

Pandora FMS

GroundWork

Графический интерфейс

Да 

Да 

Да 

Да 

Да 

Создание проверок

Да 

Да 

Да 

Да 

Да 

Создание компонентов 

Да 

Да 

Сложно 

Сложно 

Сложно 

Интеграция других систем

Да 

Да 

Сложная

Сложная

Сложная

 

Проанализировав системы мониторинга дипломант сделал вывод, что за основу разрабатываемого решения необходимо выбрать систему Nagios. Система Nagios является наиболее удобной для создания на ее основе собственного решения так как:

  •  позволяет создавать собственные проверки;
  •  позволяет создавать собственные компоненты;
  •  позволяет легко интегрировать другие системы;
  •  является основой ряда систем мониторинга.

2.2. Анализ Единой Информационной Среды кафедры ИКТ

ЕИС кафедры ИКТ - это сложная структура в которую входят дисплейная лаборатория и дисплейный класс, оборудованные персональными компьютерами, подключенными к локальной сети и имеющие доступ в интернет. Беспроводная сеть (wifi), покрывающая большую часть главного здания института.

В сетевую инфраструктуру кафедры входит маршрутизатор, три основных коммутатора, шесть серверов, примерно пятьдесят девять виртуальных частных серверов (VPS). Основные ресурсы ЕИС, требующие постоянного мониторинга это: сервер баз данных, сервера - хостинги VPS и сами виртуальны частные сервера (VPS). На этих серверах расположены основные информационные ресурсы:

  •  сайт кафедры;
  •  форум кафедры;
  •  фото галерея;
  •  файл-сервер;
  •  электронная библиотека;
  •  база знаний;
  •  почтовый сервер;
  •  система электронного обучения.

Детальная схема ЕИС кафедры ИКТ изображена на Рисунке 1.

Система мониторинга должна обеспечить постоянный сбор данных о состоянии работы ресурсов ЕИС как на самих ресурсах, так и обеспечить внешний мониторинг их сетевых служб.

Рисунок 1. Схема ЕИС кафедры ИКТ.

В процессе анализа ЕИС кафедры ИКТ дипломантом были составлены таблицы ресурсов, отражающие перечень и описание ресурсов.

Таблица 1. Описание ресурсов кафедры подлежащих мониторингу.

Тип 

Домен 

IP адрес 

Описание 

Коммутаторы

-

172.16.255.10

SW/04 - коммутаторы 

-

172.16.255.2

SW/01 - коммутатор 

-

172.16.255.6

SW/02 -коммутатор 

Тип 

Домен 

IP адрес 

Описание 

Сервера

-

10.0.0.20

База Данных

-

10.0.1.87

WS0 - VPS хостинг

-

10.0.0.1

глв. маршрутизатор

VPS

www.auditory.ru

10.0.0.172

Сайт кафедры

forum.auditory.ru

10.0.0.52

Форум кафедры

photo.auditory.ru

10.0.0.35

Фотогалерея кафедры

wiki.auditory.ru

10.0.0.145

База знаний

lms.auditory.ru

10.0.0.143

Сис. элк. обучения

mail.auditory.ru

10.0.0.180

Элк. почта

bugs.auditory.ru

10.0.0.42

Система учета неисправностей

quality.auditory.ru

10.0.0.115

Журнал Качества

svn.auditory.ru

10.0.0.153

Репозиторий

ldap.auditory.ru

10.0.0.185

Сис. хранения авторизационных данных пользователей

library.auditory.ru

10.0.0.189

Электронная библиотека

webmail.auditory.ru

10.0.0.108

Электронная почта 2

-

10.0.0.141

dh1 - хостинг

-

10.0.0.152

dh2 - хостинг

Таблица 2. Описание ресурсов видеостудии подлежащих мониторингу

Тип 

Домен 

IP адрес 

Описание 

Сервера

 

 

 

 

-

10.0.2.20

DIV0 - VPS хостинг

-

10.0.2.42

DIV1 - VPS хостинг

-

80.250.162.11

DIV2

-

10.0.2.45

DSIP

-

10.0.0.10

DVR

VPS

sova.auditory.ru

10.0.2.65

sova - видео хранилище 

-

10.0.2.21

Nginix - сервер

-

10.0.2.30

Dev - сайт

-

10.0.2.32

Webdev - сайт

-

10.0.2.51

Red51 – видео вещание

-

10.0.2.52

Red52 – видео вещания

-

10.0.2.53

Red53 – видео вещание

-

10.0.2.62

Live – видео вещание

Основные сетевые службы ресурсов ЕИС, подлежащие мониторингу[1] :

  •  HTTP (англ. HyperText Transfer Protocol — протокол передачи гипертекста);
  •  FTP (англ. File Transfer Protocol — протокол передачи файлов);
  •  SSH (англ. Secure SHell — безопасная оболочка).

Для отдельных ресурсов ЕИС требуется мониторинг:

  •  SMB (сокр. от англ. Server Message Block);
  •  NFS (Network File System);
  •  SNMP (англ. Simple Network Management Protocol — протокол простого управления сетями);
  •  POP3 (англ. Post Office Protocol Version 3 — протокол почтового отделения, версия 3);
  •  RTMP (англ. Real Time Messaging Protocol);
  •  MySQL (TCP 3306).

В системе Nagios проверка сетевых служб обеспечивается набором программ - проверок, инициализирующихся непосредственно системой Nagios, путем обращения на порт сервера и анализа ответа.

Для большинства серверов и VPS мониторингу подлежат следующие основные ресурсы:

  •  свободное место на жестком диске;
  •  оперативная память;
  •  загрузка CPU;
  •  использование виртуальной памяти.

Помимо основных ресурсов, некоторым серверам требуется мониторинг специализированных ресурсов:

  •  состояние RAID массива;
  •  общее использование ресурсов VPS.

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

2.3. Разработка компонента для сбора данных о работе серверов

2.3.1 Постановка задачи

Дипломанту была поставлена задача, разработать компонент для сбора данных о состоянии системных ресурсов серверов и передачи собранных данных по HTTP протоколу на сервер мониторинга.

2.3.2. Анализ задачи

Дипломант проанализировал поставленную задачу и сделал выводы. Данный компонент, ввиду своей специфичности, необходимо создать с нуля, а также данный компонент должен работать под операционной системой Linux.

Для языка программирования, на котором будет создаваться компонент, дипломантом были сформированы следующие требования:

  •  язык должен быть совместим с ОС Linux;
  •  язык должен позволять быстро создавать программы;
  •  язык должен иметь читабельный синтаксис;
  •  язык должен позволять быстро модифицировать код, по мере надобности.

По мнению дипломанта, данным требованиям в полной мере удовлетворяет язык программирования Python.[2]

Введу того, что система мониторинга Nagios не имеет подобного компонента, данный компонент должен обеспечить интерфейс для передачи полученных данных системе Nagios. Для этого компонент должен состоять из 2-х частей:

  1.  Часть находится непосредственно на сервере и представляет из себя менеджера. Данный менеджер обеспечивает обработку и представление полученных данных системе Nagios, в понятном для нее формате;
  2.  Часть устанавливается на серверах, подлежащих мониторингу, и представляет из себя агента. Данный агент обеспечивает сбор данных о системных ресурсах и передачу данных менеджеру.

В процессе анализа задачи дипломантом были сформированы требования к разрабатываемому компоненту:

  1.  Компонент должен обеспечивать передачу и прием данных по HTTP протоколу;
  2.  Компонент должен позволять выполнять уже существующие проверки, которые поддерживает система мониторинга, а также позволять добавлять новые;
  3.  Компонент должен иметь возможность легкого конфигурирования под каждый хост, подлежащий мониторингу;
  4.  Компонент должен позволять выполнять все проверки и передачу данных параллельно;
  5.  Компонент должен иметь возможность остановки проверок, если они не укладываются в отведенное время.

2.3.3. Алгоритм работы компонента

Учитывая требования к разрабатываемому компоненту дипломантом был построен алгоритм работы данного компонента.

Алгоритм работы компонента-агента (Рисунок 2):

  1.  Планировщик задач (Cron) инициализирует агента, по заданному режиму;
  2.  Агент читает конфигурационный файл и формирует список проверок;
  3.  Агент создает под процесс для выполнения каждой проверки;
  4.  Агент включает счетчик жизни;
  5.  Подпроцессы выполняют проверки и передают данные менеджеру через HTTP запрос;
  6.  Счетчик прерывает проверки, если работа агента превысила отведенное время.

Рисунок 2. Алгоритм работы компонента-агента.

Алгоритм работы компонента-менеджера (Рисунок 3):

  1.  Менеджер получает переданные по HTTP запросу данные;
  2.  Менеджер формирует данные в формат понятный системе Nagios;
  3.  Менеджер записывает данные в файл с именем хоста, от которого пришли данные;
  4.  Планировщик задач по заданному режиму запускает скрипт, который читает файлы хостов и передает данные системе Nagios.

Рисунок 3. Алгоритм работы компонента-менеджера.

Исходный код компонента приведен в Приложении к дипломному проекту.

Таким образом, общая структура процесса сбора и обработки данных о состоянии серверов представлена на Рисунке 4.


Рисунок 4. Структура процесса сбора и обработки данных о состоянии серверов.


2.4. Разработка инструмента для быстрого конфигурирования системы

В системе Nagios все конфигурирование осуществляется через конфигурационные файлы. Такой вид конфигурирования удобен но немного медлителен, без использования дополнительных инструментов.

Поэтому, перед дипломантом была поставлена задача разработать инструмент для быстрого и удобного конфигурирования системы мониторинга.

Проанализировав задачу дипломант рассмотрел уже готовые решения и сделал вывод. Для удобного конфигурирования можно использовать уже существующий инструмент под названием Ym, но для быстрого конфигурирования дипломантом было создано расширение данного инструмента.

Данное расширение будет представлять из себя отдельный инструмент, который будет написан на языке командной строки. В основе данного инструмента будет использоваться Ym. В веду особенностей работы инструмента Ym, все конфигурирование системы Nagios должно происходить через него. также разрабатываемый инструмент будет использовать данные, которые аккумулирует ранее разработанный дипломантом компонент по сбору данных о состоянии серверов.

Дипломантом были сформулированы требования к разрабатываемому инструменту:

  1.  инструмент должен брать данные из директории, в которой находятся файлы хостов, с данными полученными от ранее разработанного компонента;
  2.  инструмент должен отфильтровывать уже добавленные хосты;
  3.  инструмент должен проверять корректность данных у новых хостов;
  4.  инструмент должен выводить список новых хостов и запрашивать подтверждение на добавление;
  5.  инструмент должен добавлять хосты используя Ym;
  6.  Схема работы данного инструмента приведена на рисунке 5.

Рисунок 5. Блок схема работы инструмента для быстрого конфигурирования.

Исходный код инструмента приведен в Приложении к дипломному проекту.

2.5. Интеграция решения для графического отображения параметров работы серверов и оборудования

2.5.1. PNP добавление к системе Nagios

PNP[26] - это дополнение к системе Nagios, которое позволяет автоматически собирать данные от системы Nagios и передавать в базу RRD. Данное дополнение использует в основе систему RRDTool, которая позволяет визуализировать данные в виде графиков. Интеграция данного дополнения позволить автоматически строить графики для всех хостов и их сервисов.

PNP поддерживает несколько способов обработки данных. Эти способы отличаются друг от друга сложностью и производительностью. Для всех сервисов и хостов можно указать флаг process_perf_data=1, который отвечает за то, чтобы данные от хоста или сервиса обрабатывались сторонним обработчиком.

В зависимости от способа интеграции, данные будут обрабатываться либо сразу через process_perfdata.pl либо записываться во временные файлы и обрабатываться периодически. Скрипт process_perfdata.pl обрабатывает данные и формирует из них XML файлы которые обрабатывает система RRDTool.

Способ "default Mode" - это самый простой и легкий способ. Nagios вызывает perl скрипт process_perfdata.pl для обработки данных каждого сервиса.

Способ "Bulk Mode", в этом случае Nagios записывает всю нужную информацию во временный файл, после указанного в конфигурационном файле интервала времени, этот временный файл будет обработан и удален. Этот способ позволяет меньшее количество раз вызывать скрипт для обработки, что снижает нагрузку.

Способ "Bulk Mode with NPCD" наиболее сложный и производительный. Nagios опять же использует временные файлы и запускает обработку по истечению интервала времени. Но взамен непосредственного запуска обработки через perl скрипт, фал перемещается в spool директорию. После чего он передается на обработку perl скрипту, а nagios не прекращает выполнять команды на время обработки, как в остальных случаях. Пример интеграции Nagios и PNP дополнения показан на Рисунке 6.

Рисунок 6. Интеграции дополнения pnp4nagios.

также можно добавить ссылку в меню Nagios на интерфейс pnp4nagios, что обеспечит удобное взаимодействие. Рисунок 7.

Рисунок 7. Интеграция интерфейса pnp4nagios в интерфейс Nagios.

2.5.2. Nagvis дополнение к системе Nagios

Система NagVis[25] является дополнением к известной системе мониторинга Nagios, она визуализирует состояние узлов и сервисов.

Необходимые данные NagVis получает из базы данных, которую обеспечивает NDOUtils (дополнение к Nagios, предназначенное для хранения данных не в текстовых файлах, а в базе данных) и через заданный промежуток времени обновляет состояние объектов, которые размещены на карте.

Nagvis позволяет создать карту и разместить любые объекты из Nagios (узлы и группы узлов, сервисы и группы сервисов) на этой карте. Рисунок 8.

Рисунок 8. Карты для визуализации расположения серверов.

Любая карта может быть настроена через свой собственный конфигурационный файл. Конфигурационный файл при помощи текстового редактора или через браузер, при помощи WUI.

Кроме того на карту можно добавлять специальные объекты NagVis, такие как формы, текстовые надписи и объект ссылающийся на другую карту.

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

По умолчанию также присутствует всплывающее меню, которое показывает детальную информацию для каждого объекта. Содержимое всплывающего меню можно изменить, отредактировав шаблон всплывающего меню или вовсе отключить. Объекты отображаются на карте в виде графических пиктограмм.

Чтобы изменить внешний вид этих пиктограмм, необходимо установить тему, которую можно взять с домашней страницы NagVis, а также можно создать свою тему.

В дополнение к обычным картам, есть специальный тип карты - automap. Данный тип карты предназначен для автоматической генерации новых объектов, основываясь на конфигурации Nagios. Фоновое изображение automap карты создаётся динамически, основываясь на конфигурационном файле.

также Nagvis может строить диаграммы, используя дополнительные модули. Рисунок 9.

Рисунок 9. Карты для визуализации сервисов в виде диаграмм

Для интеграции системы графического представления объектов Nagvis в систему мониторинга Nagios необходимо установить базу данных MySQL и пакет NODUtils. Пакет NODUtils позволит системе Nagios помещать данные о хостах и сервисах в базу данных MySQL. В место MySQL базы также можно использовать PostgreSQL.

После чего система Nagvis сможет брать данные из базы данных и графически представлять их на картах. Карты можно формировать для хостов, например построить карту сети кафедры ИКТ. Для сервисов также можно строить карты, например, можно построить диаграммы состояния сервисов.

Синтаксис конфигурационных файлов для размещения объектов на карте очень похож на синтаксис конфигурационных файлов системы Nagios. Например, для добавления объекта - хоста в конфигурационный файл карты нужно добавить следующие данные:

define host {

  host_name=host_name название хоста из конфигурационных файлов системы Nagios;

  x=257 - координата по оси х, для расположение на карте;

  y=155 - координата по оси у, для расположение на карте;

  recognize_services=1 - указывается если не указана в основном конфигурационном файле, обеспечивает проверку состояния сервисов;

}

также для удобной работы в главном меню интерфейса системы Nagios можно добавить ссылку на Nagvis. Это позволит пользоваться Nagios и Nagvis как одной системой. Пример такой интеграции представлен на Рисунке 10.

Рисунок 10. Пример внедрения системы Nagvis в систему мониторинга Nagios.

2.6. Создание средства для быстрого развертывания системы

2.6.1. Анализ решений

Для внедрения данного решения и последующего развертывания дипломанту необходимо создать удобный для этого инструмент. Для выполнения данной задачи дипломант счел необходимым проанализировать часто используемые инструменты в Linux системах.

По мнению дипломанта следует рассмотреть следующие инструменты:

  •  файл ebuild, который используется в операционной системе Gentoo Linux, именно эта система используется на кафедре ИКТ;
  •  rpm пакет, так как данный вид инсталляционного пакета очень распространен в среде Linux;
  •  tar архив с инсталляционным скриптом, так как данный вид инсталляции пакетов очень распространенный для установки пакетов не зависящих от дистрибутива Linux.

2.6.2. RPM пакет

RPM (Red Hat Package Manager) - Это открытая система управления пакетами. Она позволяет формировать пакет для программ в виде исходных кодов, с возможностью удобной сборки и установки, а также пакеты для уже собранных программ, с возможностью их установки и удаления. также данная система поддерживает базу данных.

Компания Red Hat поддерживает использование данного менеджера в разных дистрибутивах Linux. RPM очень прост для исправлений и использования, а также может использоваться как базовый менеджер пакетов в больших системах.

RPM позволяет искать программы в личной базе данных, сверять версии и целостность пакетов. А также получать данные о программе и о пакете, кем собран и где. Хотя сами данные в пакете находятся в жатом состоянии, но по требованию они быстро разжимаются.

Для использования RPM пакетов необходимо установить менеджер пакетов RPM. Это можно сделать командой:

emerge rpm

Далее дипломантом приведены основные команды для работы с RPM пакетами. Для установки RPM пакета, необходимо выполнить команду rpm с флагом i:  

rpm -i package_name.rpm (если файл находится на ftp или web-сервере то можно указать ссылкой)

Для удаления пакета, необходимо выполнить команду rpm c флагом e:

rpm -e package_name.rpm

Для вывода данных о rpm пакете, нужно выполнить команду rpm с флагами qpi:

rpm -qpi package_name.rpm

В результате данной команды будет выведена вся информация о пакете, например:

Name        : koules                      Distribution: Red Hat Linux Colgate

Version     : 1.2                               Vendor: Red Hat Software

Release     : 2                             Build Date: Mon Sep 02 11:59:12 1996

Install date: (none)                        Build Host: porky.redhat.com

Group       : Games                         Source RPM: koules-1.2-2.src.rpm

Size        : 614939

Summary     : SVGAlib action game with multiplayer, network, and sound support

Description :

This arcade-style game is novel in conception and excellent in execution.

No shooting, no blood, no guts, no gore.  The play is simple, but you

still must develop skill to play.  This version uses SVGAlib to

run on a graphics console.

Для создания RPM пакетов необходимо создать дерево каталогов, которое будет иметь определенную структуру:

  •  BUILD - директория в которой собираются исходные коды;
  •  RPMS - директория в которую помещаются собранные бинарные RPM пакеты;
  •  SOURCES - директория в которой находятся исходные коды программ;
  •  SPECS - директория в которой находятся файлы с расширением *.spec, представляющие из себя инструкцию по сборке пакетов;
  •  SRPMS - директория в которую помещаются RPM пакеты с исходным кодом.

Как правило, это структура создается автоматически и размещается в /usr/src/RPM, при установки пакета rpm.

Для формирования пакета необходимо создать сценарий .spec файл, ниже приведен пример такого сценария:

# /root/hdplugin/hdtp.spec

#Файл спецификаций для программы hdtplugin

#Общее описание программы

Summary: Программа для сбора данных о состоянии серверов

#Название пакета

Name: hdtp

# Его версия

Version: 1.0

# Релиз

Release: 99

Group: Monitoring

License: GPL

Packager: Alexandr Scherbatyuk [a.scherbatyuk@gmail.com]

URL:

# Тэги Summary, Name, Version, Release, Group, License являются обязательными

# Из вышеуказанной информации видно, что будет создан пакет:

# hdtp-1.0-99.i686.rpm

# Полное описание пакета

%description

#Программа является компонентом по сбору данных о состоянии серверов,

#для системы мониторинга Nagios.

# Файлы, которые будут помещены в пакет

%files

/root/hdtplugin/hdtplugin.py

# Файлы, которые будут помещены в каталог /etc/hdtp/

%config /root/hdtplugin/hdtp.conf

# Действия, выполняемые при установке пакета

%install

# Файл hdtplugin копируется в каталог /usr/bin (права доступа 750)

install -m 750 -o root -g root /root/hdtplugin/hdtplugin.py /usr/bin/hdtplugin

mkdir -p /etc/hdtp/

# Файл port.1 копируется в каталог /etc/hdtp

install -o root -g root /root/hdtplugin/hdtp.conf /etc/hdtp/

Сборка пакета осуществляется командой:

rpmbuild -v -bb --clean hdtp.spec

Проанализировав данное метод установки пакетов дипломант пришел к выводу,  что использование rpm пакетов не является удобным способом для развертывания решения или его компонентов. Это связано с тем, что система Nagios имеет свой менеджер по установки пакетов, а для использования rpm пакетов необходимо устанавливать, на всех серверах, дополнительный менеджер пакетов.

2.6.3. Ebuild скрипты

Ebuild[15] скрипт является основным компонентом системы Portage. В свою очередь система Portage является основным источником программ в операционной системе Gentoo Linux.

Ebuild скрипт содержит в себе всю информацию необходимую для загрузки, распаковки, сборки и установки программ, как правило хранящихся в исходных кодах. также в данном скрипте находятся опции для каждого шага установки и удаления программ. Большая часть системы Portage написана на языке Python, тогда как ebuld скрипты написаны на языке командной строки bash, так как использование bash позволяет нам вызывать команды также как из командной строки. Один из важнейших принципов разработки ebuild скриптов, это использование команд аналогичных командной строки, как если бы потребовалась устанавливать пакет вручную. Использование bash для этой цели, самая лучшая мысль.

Ebuild скрипт интерпретируются командами ebuild и emerge. Где команда ebuild представляет упрощенный вариант приложения для сборки. Оно позволяет собирать и устанавливать только одиночные ebuild скрипты. Оно также позволяет увидеть если зависимости, но не имеет возможности их разрешения. С другой стороны команда emerge это мощное устройство для работы с ebuild скриптами, она позволяет разрешать зависимости, если это необходимо. Отображает какие ebuild скрипты также будут установлены. Команда emerge позволяет отслеживать каждый этап сборки пакета.

Ebuild скрипты именуются следующим образом:

pkg-ver{_suf{#}}{-r#}.ebuild

Название отражает данные о пакете, который данный скрипт устанавливает:

  1.  pkg - название пакета;
  2.  ver - версия пакета;
  3.  {_suf{#}} - данная секция является опционально и может например содержать данные о типе релиза:
    •  _alpha;
    •  _beta;
    •  _pre;
    •  _rc;
    •  _p;
  4.  {-r#} - ревизия пакета.

В начале каждого скрипта находится заголовок, содержащий данные о лицензии.

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

Далее объявляются переменные, в которых указываются данные о пакете, источники для загрузки:

  •  DESCRIPTION - описание пакета менее 80 символов;
  •  SRC_URI - список ссылок на исходные коды программ;
  •  HOMEPAGE - домашняя web-страница программы;
  •  KEYWORDS - архитектуры на которые можно поставить программу;
  •  SLOT - указывается для установки нескольких версий одной программы;
  •  LICENSE - лицензия;
  •  IUSE - список флагов, с которыми собирается программа .

Затем идут переменные, отвечающие за зависимости:

  •  S - Путь к временной директории, используется функциями src_compile и src_install. По умолчанию: "${WORKDIR}/${P}";
  •  DEPEND - Список зависимостей для данного пакета;
  •  RDEPEND - Список временных зависимостей;
  •  PDEPEND - Список пакетов которые должны быть установлены после того как основной пакет будет установлен;
  •  RESTRICT - Список ограничений;
  •  PROVIDE - Виртуальные сопровождающие пакета.

Далее описываются основные функции:

  •  pkg_setup Эту функцию можно использовать для любых задач, например проверять существует ли конфигурационный файл;
  •  pkg_nofetch Информировать пользователя если по каким-то причинам Portage не может скачать исходные коды автоматически. Например, из-за лицензии;
  •  src_unpack Данная функция используется для распаковки архива, применения исправлений;
  •  src_compile Данная функция используется для конфигурирования и сборки пакетов;
  •  src_install Данная функция отвечает за установку пакета;
  •  src_test Данная функция используется для проверки, например, зависимостей;
  •  pkg_preinst Команды в данной функции выполняются перед установкой пакетов в файловой системе;
  •  pkg_postinst Команды в данной функции выполняются сразу после установки пакетов в файловой системе;
  •  pkg_prerm Команды в данной функции выполняются перед удалением пакета из файловой системы;
  •  pkg_postrm Команды в данной функции выполняются сразу после удаления пакета из файловой системы;
  •  pkg_config Данная функция инициализирует конфигурационные файлы.

Помимо основных функций, также существует множество вспомогательных.

USE флагов. Цель USE флагов позволить сконфигурировать систему Portage глобально и автоматически включать или выключать опции для собирающихся пакетов. Глобальные USE флаги указываются в системном файле /etc/make.conf.

Пример команды на проверку установлен ли флагов.

if use X; then

 # Commands specific to X...

fi

USE флаги также можно использовать для проверки и установки зависимостей. Пример проверок зависимостей.

DEPEND="X? ( >=x11-base/xfree-4.3 )

mysql? ( >=dev-db/mysql-3.23.49 )

apache2? ( >=net-www/apache-2 )

!apache2? ( =net-www/apache-1* )"

также можно указать флаги, которые должны обязательно использоваться при компиляции, вне зависимости от того были они указаны по умолчанию или нет.

src_compile() {

 econf \

   $(use_enable X x11) \

   $(use_enable mysql) \

   || die "Error: econf failed!"

 emake || die "Error: emake failed!"

}

Проанализировав данный метод инсталляции пакетов дипломант сделал вывод, что данный метод является наиболее удобным. Этот метод позволяет сформировать инструмент для развертывания всей системы и отдельных ее компонентов.

2.6.4. Tar aрхив

Данный метод, по мнению дипломанта, является наиболее простым в реализации. В основе данного метода лежит tar архив с данными и инсталляционным скриптом. Принцип данного метода заключается в архивировании всех данных и написанию инструкции по их установки.

Для установки пакета необходимо сначала разархивировать архив, а затем запустить скрипт инсталляции.

Основные команды использования менеджера архивов. Для создания архива можно воспользоваться командой:

tar cjvfp название_архива.tar.bz2 директория/(или файл)

где флаги означают:

  •  с - создать;
  •  j - тип архива bzip2 (можно не указывать, тогда архив будет иметь тип tar или например поставить флаг z, тогда архив будет иметь тип gzip );
  •  v - выводит процесс архивации;
  •  f - архив одним файлом.

Для разархивирования можно воспользоваться командой:

tar xjvfp название_архива.tar.bz2

Проанализировав данный метод дипломант пришел к выводу, что данный метод не является подходящим для создания инструмента быстрого развертывания всей системы. Но может использоваться для инсталляции небольших компонентов.

2.7. Внедрение системы мониторинга в ЕИС кафедры ИКТ

2.7.1. Установка и базовая настройка системы Nagios

На серверах кафедры используется операционная система Gentoo Linux. также и на сервере, отвечающем за мониторинг. В системе Gentoo есть средство для сборки и установки исходных кодов программ, которое имеет собственный репозиторий. Nagios — система централизованного мониторинга, также присутствует в этом репозитории. Поэтому для ее установки необходимо выполнить команду:

emerge nagios

Данная программа установки предложит также установить дополнительные пакеты, необходимые для системы Nagios. В эти дополнения входит пакет nagios-plugins, содержащий набор программ и тестов, для сбора данных о состояниях локальных ресурсов сервера и для определения работы сетевых служб.

Для работоспособности системы на сервере также должен быть установлен web-сервер, в данном случае мы используем Apache. Пакет для установки web-сервера Apache также находится в репозитории, поэтому для его установки необходимо выполнить команду:

emerge apache

После установки web-сервера и системы мониторинга запускаем их, для проверки:

/etc/init.d/apache2 start

/etc/init.d/nagios start

Все конфигурационные файлы системы находятся в директории /etc/nagios/. Основной конфигурационный файл nagios.cfg. В этом конфигурационном файле содержатся данные по месту расположения логов, имя и группа пользователя от которого запускается Nagios, данные о расположении конфигурационных файлов: сетевых узлов, команд проверок, групп. В конфигурационном файле nagios.cfg нужно указать:

log_file=/var/nagios/nagios.log — основной лог системы Nagios

cfg_file=/etc/nagios/objects/services.cfg - конфигурационный файл с описанием сервисов, которые должны проверять необходимые сетевые службы и локальные ресурсы серверов.

cfg_file=/etc/nagios/objects/commands.cfg - конфигурационный файл с командами

cfg_file=/etc/nagios/objects/contacts.cfg -

cfg_file=/etc/nagios/objects/timeperiods.cfg -

cfg_file=/etc/nagios/objects/templates.cfg -

cfg_file=/etc/nagios/objects/hosts.cfg - конфигурационный файл с хостами

cfg_file=/etc/nagios/objects/groups.cfg - конфигурационный файл с группами

nagios_user=nagios

nagios_group=nagios

В файле commands.cfg можно создавать собственные команды и модификации существующих:

define command{

       command_name    check_nodata

       command_line    $USER1$/check_nodata

       }

define command{

       command_name    check_smb_unix

       command_line    $USER1$/check_tcp -H $HOSTNAME$ -p 445  

       }

В файле groups.cfg содержаться группы, на которые разделены хосты:

define hostgroup{

       hostgroup_name  Multimedia ; The name of the hostgroup

       alias           Multimedia Rescues; Long name of the group

       members         div0.auditory.ru, div1.auditory.ru, dvr.aditory.ry, dsip.auditory.ru

       }

define hostgroup{

       hostgroup_name  ICT; The name of the hostgroup

       alias           ICT Rescues; Long name of the group

       members         www.auditory.ru, forum.auditory.ru, share.auditory.ru, lms.auditory.ru

       }

В Файлt hosts.cfg содержатся параметры хостов:

define host {

      use     linux-server

      host_name       bugs.auditory.ru

      address bugs.auditory.ru

      contact_groups  admins

      alias   bugs.auditory.ru

}

define host {

      use     linux-server

      host_name       dh2.auditory.ru

      address 10.0.0.152

      contact_groups  admins

      alias   dh2.auditory.ru

}

Файл services.cfg содержит параметры активных и пассивных проверок сетевых служб и локальных ресурсов сетевых хостов ЕИС.

define service {

      service_description     Mem Free

      check_command   check_nodata

      use     passive-service

      host_name       dh1.auditory.ru

      contact_groups  admins

}

define service {

      check_command   check_ssh

      service_description     SSH

      process_perf_data       0

      use     active-service

      host_name       dh1.auditory.ru

      contact_groups  admins

}

Помимо настройки системы непосредственно через конфигурационные файлы дипломантом предлагается использовать компонент ym, который предоставляет набор команд для удобной и быстрой настройки системы.

Для того чтобы посмотреть описание команд, можно выполнить команду ym с флагом -h, также этот флаг можно использовать на всех этапах составления команды настроек:

ym -h  (выведет весь список команд)

...

или

ym -c add-host -h (выведет список параметров для команды )

Usage: ./ym -c COMMAND

add-host -  Add one or more hosts.

       -o hostname|READ_FILE=file [-o object2 -o object3]

       -p use=default-host -p contact_groups=some-admins

ym -c add-service -h

Usage: ./ym -c COMMAND

add-service -  Add service(s) to host(s)

       -o service|READ_FILE=file [-o object2 -o object3]

       -d|--dest hostname|/REGEX/|READ_FILE=file [-d dest2 -d dest3]

       -p use=default-service -p contact_groups=some-admins

ym -c delete-host -h

Usage: ./ym -c COMMAND

delete-host -  Delete one or more hosts.

       -o hostname|/REGEX/|READ_FILE=file [-o object2 -o object3]

ym -c delete-service -h

Usage: ./ym -c COMMAND

delete-service -  Delete service(s) from host(s)

       -o service|/REGEX/|READ_FILE=file [-o object2 -o object3]

       -d|--dest hostname|/REGEX/|READ_FILE=file [-d dest2 -d dest3]

Для добавления хоста необходимо выполнить команду:  

ym -c add-host -o photo.auditory.ru -p use=linux-server -p contact_groups=admins -p address 10.0.0.35

Для добавления сервиса всем хостам необходимо выполнить команду:

ym -c add-service -o HTTP -d /.*/ -p use=generic-service -p contact_groups=admins -p check_command=check_http

-d /.*/ (регулярное выражение) означает, что данный сервиc необходимо добавить всем хостам.

Для удаления хоста необходимо выполнить команду:

ym -c delete-host -o bugs.auditory.ru

Для удаления сервиса у всех хостов необходимо выполнить команду:

ym -c delete-service -o HTTP -d /.*/

 также дипломником был разработан инструмент, который позволяет быстро добавлять группу хостов со всеми сервисами. Для его использование необходимо первоначально установить компонент по сбору данных, разработанный дипломником, на новые хосты. Данный инструмент работает в связке с инструментом ym и компонентом по сбору данных, упомянутом ранее. Этот инструмент можно вызвать командой:

hdtp-hosts

После чего инструмент проверит, появились ли на сервере данные о новых хостах, на которых был установлен компонент по сбору данных. Если данные о новых хостах есть, то инструмент hdtp-hosts предложить добавить новые хосты со всеми его сервисами.

ym -c add-host -o www.auditory.ru -p use=linux-server -p contact_groups=admins

ym -c add-service -o 'Swap Usage' -d www.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Current Load' -d www.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Root Partition' -d www.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'CPU Load' -d www.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Mem Free' -d www.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-host -o wiki.auditory.ru -p use=linux-server -p contact_groups=admins

ym -c add-service -o 'Swap Usage' -d wiki.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Current Load' -d wiki.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Root Partition' -d wiki.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'CPU Load' -d wiki.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Mem Free' -d wiki.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-host -o bugs.auditory.ru -p use=linux-server -p contact_groups=admins

ym -c add-service -o 'Swap Usage' -d bugs.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Current Load' -d bugs.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Root Partition' -d bugs.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'CPU Load' -d bugs.auditory.ru -p use=generic-service -p check_command=check_nodata

ym -c add-service -o 'Mem Free' -d bugs.auditory.ru -p use=generic-service -p check_command=check_nodata

Do you want make all cmd [Y|N]?

В результате настроек на странице Nagios->Service Detail можно увидеть состояние хостов и их сервисов. Рисунок 11.

Рисунок 11. Изображение результата мониторинга в системе Nagios.

2.7.2 Настройка E-mail оповещения.

Для настройки оповещения по email первым делом необходимо настроить отправку email сообщений через командную строку. Для этого необходимо установить программу, которая должна передавать письма на почтовый сервер.

Например можно установить пакет mail-mta/ssmtp[3], это можно сделать командой:

emerge mail-mta/ssmtp

Далее необходимо настроить конфигурационный файл /etc/ssmtp.conf. В нем необходимо указать почтовый адрес, с которого будут отправляться письма, а также почтовый сервер, тип соединения и авторизационные данные. Например, для почтового ящика на yandex.ru

# /etc/ssmtp.conf -- конфигурационный файл sSMTP sendmail.

#

mailhub=smtp.yandex.ru:465

hostname=Nagios

FromLineOverride=YES

UseTLS=YES

AuthUser=<название_почтового_ящика>@yandex.ru

AuthPass=<пароль>

Добавляем в файл /etc/ssmtp/revaliases:

root:<название_почтового_ящика>:smtp.yandex.ru:465

nagios:<название_почтового_ящика>:smtp.yandex.ru:465

Теперь можно отправлять письма используя команду /usr/bin/mail:

echo 'Текс письма' | mail -s 'Заголовок письма' <почтовый_адрес>@domen.com

Далее необходимо создать контакт для системы мониторинга или модифицировать существующий, пример создания нового контакта:

 define contact {

    contact_name nagiosadmin

    alias NagiosAdmin

    service_notification_period 24x7

    host_notification_period 24x7

    service_notification_options w,u,c,r

    host_notification_options d,r

    service_notification_commands notify-service-by-email

    host_notification_commands notify-host-by-email

    email <название_почтового_ящика>@auditory.ru

 }

2.7.3 Настройка SMS оповещения через услугу оповещения о новом письме

Данный метод, по сути является расширением для оповещения по электронной почте. А именно, оповещение Nagios посылает на электронную почту, а администратор, подключив услугу мобильного оператора, может получить SMS о новом письме и краткое его содержание.

По мнению дипломанта, данный метод не является наиболее удобном, но может быть полезным если нет другой возможности оповестить по SMS.

2.7.4 Настройка SMS оповещения через мобильный телефон

Для конкретной реализации данного сервиса использовались следующие средства:

  •  мобильный телефон Nokia;
  •  программа для управления телефоном по средствам консоли gammu; поддерживает множество марок и серий мобильных телефонов;
  •  USB кабель.

Для использования мобильного телефона как GPRS модема и отправки SMS оповещения, необходимо включить в ядре системы поддержку:

Device Drivers--->[*] USB Support --->

 <*> USB Modem (CDC ACM) support

пример для версии ядра 2.6.30-r8

Для установки программы нужно выполнить команду:

emerge gammu

Для настройки системы можно воспользоваться мастером настроек, выполнив команду:

gammu-config

в данном мастере нужно указать следующие данные:

  •  Port /dev/ttyACM0;
  •  Connection (at19200 - тип драйвера для мобильного телефона Nokia);
  •  Model (NAUTO);
  •  Synchronize time yes;
  •  Log file /var/log/log_name.log.

Для проверки работы процесса отправки SMS можно воспользоваться командой:

echo "Текст сообщения" | gammu sendsms TEXT +7номер_мобильного_телефона

Для использования функции SMS оповещения в системе Nagios необходимо создать команду, в конфигурационном файле команд commands.cfg

# 'notify-host-by-sms' command definition

define command{

 command_name notify-host-by-sms

 command_line /usr/bin/printf "%b" "** Nagios **\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/gammu sendsms TEXT $CONTACTADDRESS1$

 }

 # 'notify-service-by-sms' command definition

 define command{

   command_name notify-service-by-sms

  command_line /usr/bin/printf "%b" "** Nagios **\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/gammu   sendsms TEXT $CONTACTADDRESS1$

 }

Далее необходимо создать контакт или модифицировать существующий, пример создания нового контакта:

 define contact {

    contact_name smsadmin

    alias SMSAdmin

    service_notification_period 24x7

    host_notification_period 24x7

    service_notification_options w,u,c,r

    host_notification_options d,r

    service_notification_commands notify-service-by-email,notify-service-by-sms

    host_notification_commands notify-host-by-email,notify-host-by-sms

    email <название_почтового_ящика>@auditory.ru

    address1 +700000000000

}

2.7.5. Установка и настройка Nagvis

Для работы системы Nagvis нужно, чтобы на сервере были установлены также:

  •  MySQL;
  •  Nagios;
  •  Apache[4] или другой web-сервер;
  •  PHP с поддержкой библиотек: apache2, gd, mysql, session, xml.

Для установки необходимо выполнить следующие команды:

echo "dev-lang/php apache2 gd mysql session xml" >> /etc/portage/packege.use

echo "net-analyzer/nagvis automap" >> /etc/portage/packege.use

emerge php mysql ndoutils nagvis

Помимо перечисленных пакетов-программ, менеджер пакетов может предложить дополнительные пакеты необходимые для работы Nagvis. Для работы системы Nagvis, необходимо первоначально настроить пакет NDOUtils.

Для работы NDOUtils необходимо создать базу данный в MySQL[27], в которой будут храниться данные мониторинга от системы Nagios.

Для создания базы данных нужно выполнить следующие команды:

mysql -u <user> -h <host> -p

mysq> create database nagios;

Чтобы наполнить базу структурой необходимо выполнить следующую команду:

/usr/share/nagios/db/installdb -u <user> -p -h <host> -d nagios

Проверяем установки в файле /etc/nagios/ndomod.cfg

Переменная output_type может принимать три значения: file, tcpsocket и unixsocket. Соответственно если администратор устанавливает тип tpcsocket, то он должен указать IP адрес и номер tcp порта. Если установлено значение file, то переменной output также следует передать значение в виде полного пути к файлу ndo.dat

output_type=tcpsocket

output= адресс сервера

tcp_port=5668

Проверяем установки в файле /etc/nagios/ndo2db.cfg

socket_type=tcp

tcp_port=5668

db_servertype=mysql

db_host=адресс сервера базы данных

db_port=3306

db_name=nagios база данных

db_prefix=nagios_ префикс таблиц

db_user=<user> пользователь базы данных

db_pass=<password> пароль для базы данных

Для того, чтобы Nagios видел NDOUtilits в конфигурационный файл необходимо добавить следующие данные:

broker_module=/usr/bin/ndomod-3х.o config_file=/etc/nagios/ndomod.cfg

event_broker_options=-1

Далее нужно запустить службу ndo2db и добавить ее в автозапуск:

/etc/init.d/ndo2db start

rc-update add ndo2db default

Для проверки нужно перезагрузить Nagios и отследить, появиться ли в логе сообщения, подтверждающие, что все работает правильно:

/etc/init.d/nagios restart

tail -f /var/nagios/nagios.log

...

ndomod: NDOMOD 1.4b9 (10-27-2009) Copyright (c) 2009 Nagios Core Development Team and Community Contributors

ndomod: Successfully connected to data sink.  0 queued items to flush.

Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.

...

Базовая конфигурация Nagvis находится в файле nagvis.ini.php. Для его кофигурирования необходимо выполнить следующие действия:

cd /etc/nagvis/

cp etc/nagvis.ini.php-sample etc/nagvis.ini.php

nano nagvis.ini.php

В нем для базовой настройки необходимо указать следующие данные:

[global]

language="english"

refreshtime=60

[defaults]

backend="ndomy_1"

icons="std_medium"

recognizeservices=1

onlyhardstates=0

usegdlibs=1

backgroundcolor="#fff"

headertemplate="default"

hovertemplate="default"

hoverdelay=0

showinlists=1

urltarget="_self"

[wui]

autoupdatefreq=25

maplocktime=5

allowedforconfig=EVERYONE

[paths]

base="/usr//share/nagvis/"

htmlbase="/nagios/nagvis"

htmlcgi="/nagios/cgi-bin"

[backend_ndomy_1]

backendtype="ndomy"

dbhost="адрес базы данных"

dbport=3306

dbname="nagios" название базы

dbuser="<user>" пользователь к базе данных

dbpass="<password>" пароль к базе данных

dbprefix="nagios_" префикс к таблицам

dbinstancename="default"

maxtimewithoutupdate=181

htmlcgi="/nagios/cgi-bin"

В дальнейшем эти данные можно будет отредактировать через web-интерфейс.

Для того, чтобы к Nagvis можно было обращаться из меню Nagios, нужно добавить ссылку в файл /usr/share/nagios/htdocs/side.php:

<a href="nagvis/" target="<?php echo $link_target;?>">Nagvis</a>

Создать карты также можно из интерфейса системы Nagvis.

2.7.6. Установка и настройка PNP4Nagios

Для установки PNP дополнения к системе Nagios, нужно выполнить команду:

emerge pnp4nagios

Далее надо сделать ссылку в каталог /usr/share/nagios/htdocs, чтобы легче было интегрировать в Nagios.

ln -s /usr/share/pnp /usr/share/nagios/htdocs/pnp

Основные конфигурационные файлы находятся в папке /etc/pnp/. Некоторые конфигурационные файлы могут не использоваться. В частности нам необходим файл process_perfdata.cfg, поэтом нужно выполнить команду:

cp /etc/pnp/process_perfdata.cfg-sample /etc/pnp/process_perfdata.cfg

Далее необходимо отредактировать этот конфигурационный файл. Это можно сделать командой:

nano /etc/pnp/process_perfdata.cfg

И изменить следующие строки:

TIMEOUT = 15

RRDPATH = /var/nagios/perfdata

LOG_FILE = /var/nagios/perfdata.log

Как было описано ранее, есть три способа для интеграции pnp и Nagios. По мнению дипломанта, необходимо использовать метод, обеспечивающий наибольшую производительность системы. В данном методе обработку данных, для визуализации в виде графиков выполняет не Nagios, а служба NPCD.

Для настройке метода "Bulk Mode with NPCD" нужно сначала настроить метод "Bulk Mode". Для этого надо открыть на редактирование файл nagios.cfg командой:

nano /etc/nagios/nagios.cfg

и изменить строки:

process_performance_data=1

service_perfdata_file=/var/nagios/service-perfdata

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$

service_perfdata_file_mode=a

service_perfdata_file_processing_interval=15

service_perfdata_file_processing_command=process-service-perfdata-file

host_perfdata_file=/var/nagios/host-perfdata

host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$

host_perfdata_file_mode=a

host_perfdata_file_processing_interval=15

host_perfdata_file_processing_command=process-host-perfdata-file

Затем, чтобы использовать метод "Bulk Mode with NPCD" нужно изменить две команды в конфигурационном файле /etc/nagios/commands.cfg:

define command{

      command_name    process-service-perfdata-file

      command_line    /bin/mv /var/nagios/service-perfdata /var/spool/pnp/service-perfdata.$TIMET$

}

define command{

      command_name    process-host-perfdata-file

      command_line    /bin/mv /var/nagios/host-perfdata /var/pnp/spool/host-perfdata.$TIMET$

}

Для того чтобы можно было использовать службы NPCD, нужно активировать конфигурационный файл /etc/pnp/npcd.cfg:

cp /etc/pnp/npcd.cfg-sample /etc/pnp/npcd.cfg

И проверить пути в строках:

perfdata_spool_dir = /var/spool/pnp

perfdata_file_run_cmd = /usr/libexec/process_perfdata.pl

Далее нужно запустить npcd службу и добавить ее в автозапуск:

/etc/init.d/npcd start

rc-update add npcd default

Чтобы к pnp была ссылка из меню Nagios нужно добавить в /usr/share/nagios/htdocs/side.php следующую строку:

<a href="pnp/" target="<?php echo $link_target;?>">PNP4Nagios</a>

Чтобы графики можно было наблюдать из раздела состояния сервисов, нужно создать файл /usr/share/nagios/htdocs/ssi/status-header.ssi и добавить в него следующие строки:

<script src=\"/pnp4nagios/media/js/jquery-min.js\" type=\"text/javascript\"></script>

<script src=\"/pnp4nagios/media/js/jquery.cluetip.js\" type="text/javascript\"></script>

<script type=\"text/javascript\">

$(document).ready(function() {

 $('a.tips').cluetip({ajaxCache: false, dropShadow: false,showTitle: false });

});

</script>

Теперь можно перезагрузить Nagios:

/etc/init.d/nagios restart

2.7.7. Установка и настройка компонента для анализа собранных данных

Для использования разработанного дипломантом компонента по сбору данных, необходимо на сервере мониторинга установить часть компонента-менеджера. Данный менеджер будет принимать данные от компонента-агента и передавать их системе мониторинга.

Для установки компонента необходимо создать директорию по структуре схожую с структурой системы Portage и добавить путь к директории в основной конфигурационный файл /etc/make.conf:

echo 'PORTDIR_OVERLAY="/usr/local/overlay"' >> /etc/make.conf

Далее создаем папку для компонента:

mkdir -p /usr/local/overlay/net-analyzer/hdtp/

Далее необходимо скачать ebuild скрипт и добавить его в систему:

cd /usr/local/overlay/net-analyzer/hdtp/

wget http://share.auditory.ru/2010/Alexandr.Scherbatyuk/HDTP-NAGIOS/hdtp-1.0.3.ebuild (версия может изменять с течением времени)

ebuild hdtp-1.0.3.ebuild manifest

Далее необходимо добавить в /etc/portage/package.use данные о том, что компонент устанавливает только менеджера:

echo 'net-analyzer/hdtp server' >> /etc/portage/package.use

Далее запускаем установку, система может предложить установить дополнительные пакеты, которые также необходимы:

emerge hdtp

В процессе установки компонента в менеджере задач создается задача проверки новых данных.

*/5 * * * * /usr/bin/hdtp-meta-filter;

2.7.8. Инструмент для быстрого развертывания системы

В рамках задания на дипломное проектирование дипломантом был создан инструмент для быстрого развертывания системы. Для создания данного инструмента дипломант проанализировал возможны методы инсталляции и пришел к выводу, что необходимо создать ebuild скрипт.

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

Перечень основных программных пакетов, устанавливаемых ebuild скриптом:

  •  www-servers/apache;
  •  net-analyzer/nagios;
  •  net-analyzer/pnp4nagios;
  •  mail-mta/ssmtp;
  •  net-analyzer/nagvis.

Помимо данных пакетов, также будут установлены все необходимые зависимости для каждого из этих пакетов.

Данный ebuild скрипт позволяет установить:

  •  разработанный дипломантом компонент для сбора данных, как весь компонент целиком так и отдельные его части;
  •  инструменты для быстрого конфигурирования системы мониторинга.

Для развертывания решения необходимо скачать сам ebuild скрипт, добавить в систему и запустить установку.

echo 'PORTDIR_OVERLAY="/usr/local/overlay"' >> /etc/make.conf

mkdir -p /usr/local/overlay/net-analyzer/iktmonitoring/

cd /usr/local/overlay/net-analyzer/iktmonitoring/

wget http://share.auditory.ru/2010/Alexandr.Scherbatyuk/HDTP-NAGIOS/iktmonitoring-1.0.0.ebuild (версия может изменяться с течением времени)

ebuild iktmonitoring-1.0.0.ebuild manifest

emerge iktmonitoring

После чего можно проверить настройки и добавить ресурсы для мониторинга. Код ebuild скрипта приведен в Приложении к дипломному проекту.

2.7.9. Добавление серверов в мониторинг

Для сбора данных о состоянии локальных ресурсов серверов и их передачи    по HTTP протоколу  системе мониторинга, необходимо установить  компонент, разработанный дипломантом.

Данный компонент написан на языке Python. Он состоит из двух частей:

  •  Первая часть находится непосредственно на сервере и представляет зи себя менеджера.
  •  Вторая часть устанавливается на сервере, подлежащем мониторингу, и представляет из себя агент.

Агент выполняет команды проверок и передает результаты по HTTP протоколу менеджеру, менеджер получает данные и обрабатывает результаты.

Агент имеет конфигурационный файл, содержащий перечень команд и их параметров. Команды выполняются параллельно, для каждой команды создается отдельный процесс и уничтожается по выполнению или по истечению времени жизни. В конфигурационном файле можно указать следующие параметры:

  •  host_name - хост имя компьютера, для которого настраиваться плагин;
  •  nagios_server — URL-адрес обработчика, расположенного на сервере мониторинга;
  •  nagios_plugins_dir — путь к каталогу, содержащему программы и исполняемые файлы проверок локальных ресурсов сервера, этот набор проверок  входит в пакет nagios-plugins;
  •  max_command_lifetime — максимальное время, в течение которого могут выполняться проверочные плагины. По истечении этого времени все процессы, отвечающие за выполнение команд, уничтожаются;
  •  method — тип передачи данных на сервер: GET или POST запросом;
  •  description - название сервиса, должно быть таким же как на сервере;
  •  сommand — команда на выполнение проверки. Тип команд определяется набором программ проверок, входящих в состав пакета nagios-plugins, а также может быть расширен собственными, которые должны находиться в общей папке со всеми плагинами;

Для установки компонента необходимо создать директорию по структуре схожую с структурой системы Portage и добавить путь к директории в основной конфигурационный файл /etc/make.conf:

echo 'PORTDIR_OVERLAY="/usr/local/overlay"' >> /etc/make.conf

Далее создаем папку для компонента:

mkdir -p /usr/local/overlay/net-analyzer/hdtp/

Далее необходимо скачать ebuild скрипт и добавить его в систему:

cd /usr/local/overlay/net-analyzer/hdtp/

wget http://share.auditory.ru/2010/Alexandr.Scherbatyuk/HDTP-NAGIOS/hdtp-1.0.3.ebuild (версия может изменять с течением времени)

ebuild hdtp-1.0.3.ebuild manifest

Далее необходимо добавить в /etc/portage/package.use данные о том, что компонент устанавливает только агента:

echo 'net-analyzer/hdtp client' >> /etc/portage/package.use

Далее запускаем установку, система может предложить установить дополнительные пакеты, которые также необходимы:

emerge hdtp

При установке в папку /etc/hdtp/ будет помещён конфигурационный файл со всеми данными для агента. А также автоматически будет добавлена задача в менеджер задач Cron, для пользователя nagios.

crontab -u nagios -l

*/10 * * * * /usr/bin/hdtplugin > /var/nagios/home/nagios-hdtp.log

Пример работы компонента:

GET: [1275080258];newwebmail.auditory.ru;Current Load;0;OK - load average: 0.63, 0.70, 0.89|load1=0.630;5.000;10.000;0; load5=0.700;4.000;6.000;0; load15=0.890;3.000;4.000;0;  

GET: [1275080259];newwebmail.auditory.ru;CPU Load;0;OK - user: 4.34, nice: 0.50, sys: 20.93, iowait: 1.22, irq: 0.50, softirq: 1.94 idle: 74.05 | 'user'=4.34 'nice'=0.50 'sys'=20.93 'softirq'=1.94 'iowait'=1.22 'irq'=0.50 'idle'=74.05

Список процессов, которые были созданы для выполнения команд проверок:

23681 pts/0    00:00:00 python2.6

23682 pts/0    00:00:00 python2.6

23691 pts/0    00:00:00 python2.6

3. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

 3.1. Введение

В экспериментальной части проекта был проведен ряд тестов, направленных на проверку компонентов системы мониторинга. Для тестирования системы провоцировались ситуации возможных нарушений работы сети.

3.2. Тестирование системы Nagios

3.2.1 Тестирование графического интерфейса

Для проверки реакции системы мониторинга Nagios, дипломантом был отключен один из виртуальных серверов. На рисунках 12 и 13 приведены показатели системы до и после отключения сервера.

Рисунок 12. Состояние сервера до отключения.

Рисунок 13. Состояние сервера после отключения.

Далее дипломантом была проверена реакция системы мониторинга на изменение состояния загрузки ЦПУ на наблюдаемом сервере. На рисунке 14 и 15 показано состояние ЦПУ до и после проверки.

Рисунок 14. Состояние ЦПУ до проверки.

Рисунок 15. Состояние ЦПУ после проверки.

Также данные изменения нагрузки ЦПУ можно наблюдать на графике. Рисунок 16.

Рисунок 16. График изменения нагрузки ЦПУ.

3.2.2. Тестирование системы оповещения

Во время тестирования выхода из строя серверов и их служб, также производилось тестирование оповещения по электронной почте и  SMS администратора. На рисунке 17 показаны сообщения, пришедшие на электронный адрес администратора.

Рисунок 17. Список сообщений пришедшие на электронный адрес администратора.

Соответственно точно такие же сообщения были получены администратором в виде SMS сообщения на мобильный телефон. Пример сообщения присланного системой Nagios:

***** Nagios *****

Notification Type: PROBLEM

Service: Mem Free

Host: wiki.auditory.ru

Address: wiki.auditory.ru

State: CRITICAL

Date/Time: Sun May 30 18:47:36 MSD 2010

Additional Info:

CRITICAL: Service didnt respond by shedule

Протестировав реакцию системы на сбои в работе сетевых ресурсов, а также своевременное  оповещение администратора, дипломант сделал вывод, что данная система  готова к использованию.

4. ОХРАНА ТРУДА


4.1. Исследование возможных опасных и вредных факторов при эксплуатации ЭВМ и их влияния на пользователей

Охрана труда это система законодательных актов, социально-экономических, организационных, технических, гигиенических и лечебно-профилактических мероприятий и средств, обеспечивающих безопасность, сохранение  здоровья и работоспособности человека  в процессе труда.

Полностью безопасных и безвредных производственных процессов не существует.  Задача охраны труда – свести к минимуму вероятность поражения или заболевания работающего с одновременным обеспечением комфорта при  максимальной  производительности труда.

В процессе использования ПЭВМ здоровью, а иногда и жизни оператора угрожают различные вредные факторы, связанные с работой на персональном компьютере. Типичными ощущениями, которые испытывают к концу дня люди, работающие за компьютером, являются: головная боль, резь в глазах, тянущие боли в мышцах шеи, рук и спины, зуд кожи на лице и т.п. Испытываемые каждый день, они могут привести к мигреням, частичной потере зрения, сколиозу, тремору, кожным воспалениям и другим нежелательным явлениям.

Была выявлена связь между работой на компьютере и такими недомоганиями, как астенопия (быстрая утомляемость глаз), боли в спине и шее, запястный синдром (болезненное поражение срединного нерва запястья), тендениты (воспалительные процессы в тканях сухожилий), стенокардия и различные стрессовые состояния, сыпь на коже лица, хронические головные боли, головокружения, повышенная возбудимость и депрессивные состояния, снижение концентрации внимания, нарушение сна и немало других, которые не только ведут к снижению трудоспособности, но и подрывают здоровье людей.

Основным источником проблем, связанных с охраной здоровья людей, использующих в своей работе автоматизированные информационные системы на основе персональных компьютеров, являются дисплеи (мониторы), особенно дисплеи с электронно-лучевыми трубками. Они представляют собой источники наиболее вредных излучений, неблагоприятно влияющих на здоровье операторов и пользователей.

Любой производственный процесс, в том числе работа с ЭВМ, сопряжен с появлением опасных и вредных факторов.

Опасный фактор – это производственный фактор, воздействие которого на работающего в определенных условиях приводит к травме или другому резкому внезапному ухудшению здоровья.

 Вредный фактор – производственный фактор, приводящий к заболеванию, снижению работоспособности или летальному исходу. В зависимости от уровня и продолжительности воздействия вредный производственный фактор может стать опасным.

Типовая конфигурация компьютеризированного рабочего места:

  •  ПК на основе современного процессора c необходимым набором устройств ввода-вывода и хранения информации;
  •  цветной ЖК монитора  Samsung SyncMaster 1940BF 19”;
  •  разрешение по горизонтали (max) - 1600 пикселей;
  •  разрешение по вертикали (max) - 1200 пикселей;
  •  частота кадровой развертки при максимальном разрешении - 85 Гц;
  •  частота строчной развертки при максимальном разрешении - 42 кГц.

Рассмотрим какие могут быть вредные факторы при эксплуатации указанных элементов ВТ. Питание ПЭВМ производится от сети 220 В. Так как безопасным для человека напряжением является напряжение 40 В, то при работе на ПЭВМ опасным фактором является поражение электрическим током.

Исходя из анализа вредных факторов, видна необходимость защиты от них.

При эксплуатации вычислительной техники могут возникнуть следующие опасные и вредные факторы:

  •  Поражение электрическим током;
  •  Электромагнитное излучение НЧ;
  •  Статическое электричество.

4.2. Анализ влияния опасных и вредных факторов на пользователя

4.2.1 Влияние электрического тока

Электрический ток, воздействуя на человека, приводит к травмам.

Проходя через тело человека, электрический ток оказывает следующие воздействия:

  •  Термическое – нагрев тканей и биологической среды;
  •  Электролитическое – разложение крови и плазмы;
  •  Биологическое – способность тока возбуждать и раздражать живые ткани организма;
  •  Механическое – возникает опасность механического травмирования в результате судорожного сокращения мышц.

Тяжесть поражения электрическим током зависит от:

  •  Величины тока;
  •  Времени протекания;
  •  Пути протекания;
  •  Рода и частоты тока;
  •  Сопротивления человека;
  •  Окружающей среды;
  •  Состояния человека;
  •  Пола и возраста человека.

При прохождении электрического тока через организм человека возникают электрические травмы, которые классифицируются на местные и общие.

Общие травмы- электроудары. Они по степени опасности классифицируются на 4 класса:

  1.  Судорожное сокращение мышц, без потери сознания;
  2.  Судорожное сокращение мышц, с потерей сознания;
  3.  Потеря сознания с нарушением работы органов дыхания и кровообращения;
  4.  Состояние клинической смерти.

Местные травмы.

  1.  Электрические ожоги;
  2.  Электрический знак;
  3.  Электроофтальмия.

Наиболее опасным переменным током является ток 20 – 100Гц. Так как компьютер питается от сети переменного тока частотой 50Гц, то этот ток является опасным для человека.

4.2.2. Влияние статического электричества

Результаты медицинских исследований показывают, что электризованная пыль может вызвать воспаление кожи, привести к появлению угрей и даже испортить контактные линзы. Кожные заболевания лица связаны с тем, что наэлектризованный экран дисплея притягивает частицы из взвешенной в воздухе пыли, так, что вблизи него «качество» воздуха ухудшается и оператор вынужден работать в более запыленной атмосфере. Таким же воздухом он и дышит.

Особенно стабильно электростатический эффект наблюдается у компьютеров, которые находятся в помещении с полами, покрытыми синтетическими коврами.

При повышении напряженности поля Е>15 кВ/м, статическое электричество может вывести из строя компьютер, так как изделия ВТ питаются напряжением от 3 до 12 В.

За счет частот напряжения и статического электричества возникают электромагнитные излучения НЧ

4.2.3. Влияние электромагнитных излучений НЧ

Электромагнитные поля с частотой 60 Гц и выше могут инициировать изменения в клетках животных (вплоть до нарушения синтеза ДНК). В отличие от рентгеновского излучения, электромагнитные волны обладают необычным свойством: опасность их воздействия при снижении интенсивности не уменьшается, мало того, некоторые поля действуют на клетки тела только при малых интенсивностях или на конкретных частотах. Оказывается переменное электромагнитное поле, совершающее колебания с частотой порядка 60 Гц, вовлекает в аналогичные колебания молекулы любого типа, независимо от того, находятся они в мозге человека или в его теле. Результатом этого является изменение активности ферментов и клеточного иммунитета, причем сходные процессы наблюдаются в организмах при возникновении опухолей.

Выводы: Из анализа воздействия опасных и вредных факторов на организм человека следует необходимость защиты от них.

4.3. Методы и средства защиты пользователей от воздействия на них опасных и вредных факторов

4.3.1. Методы и средства защиты от поражения электрическим током

Для защиты от поражающего электрическим током используется технический метод – зануление.

Зануление – это преднамеренное электрическое соединение с нулевым защитным проводником металлических нетоковедущих частей ЭЛУ, которые могут оказаться под напряжением. Применяется в трёхфазных четырехпроводных сетях с глухо заземленной нейтралью при напряжении менее 1000 В.

Основа принципа защиты занулением: защита человека осуществляется тем, что при замыкании одной из фаз на заземляющий корпус, в цепи появляется ток замыкания, который отключает от потребителя сеть. Ток короткого замыкания еще до срабатывания защиты вызывает перераспределение в сети, приводящее к снижению напряжения на корпусе относительно земли (см. рис. 18).

Рис. 18 Схема зануления.

()

где: 

Jк.з. – ток короткого замыкания [А];

Uф – фазовое напряжение [B];

rm – сопротивление катушек трансформатора [Ом];

rнзп – сопротивление нулевого защитного проводника [Ом].

Uф = 220 В

rm = 0,312 Ом

rобщ = r1 + r2 + r3

  (2)

где:

p – удельное сопротивление материала проводника [Ом · м];

l – длина проводника [м];

s – площадь поперечного сечения проводника [мм2].

медь= 0,0175 Ом · м

По заданным параметрам определим возможный Jк.з

=400 м ;  =150 м ;  =50 м 

s = 1 мм2

;

9,1 (Ом)

(А)

По величине  определим с каким  необходимо включить в цепь питания ПЭВМ автомат.

,

где:

K – качество автомата.

Таким образом, для отключения ПЭВМ от сети в случае короткого замыкания или других неисправностей, в цепь питания ПЭВМ необходимо ставить автомат со значением Jном = 8 А. 

4.3.2. Методы и средства защиты от электромагнитных полей низкой частоты

Защита от электромагнитных излучений осуществляется следующими способами:

  •  Время работы – не более 4 часов;
  •  Расстояние между рабочими местами – не менее 1,5 м;
  •  Экранирование;
  •  Расстояние между мониторами – не менее 1,5 м;
  •  Не находиться  слева от монитора ближе 1.2 м, и сзади не ближе 1м.

4.3.3. Методы и средства защиты от статического электричества

Защита от статического электричества и вызванных им явлений осуществляется следующими способами:

  •  Иметь контурное заземление;
  •  Нейтрализаторы статического электричества;
  •  Отсутствие синтетических покрытий;
  •  Использование экранов;
  •  Влажная уборка;
  •  Подвижность воздуха в помещении не более 0,2 м/с.

Для уменьшения влияния статического электричества необходимо пользоваться рабочей одеждой из малоэлектризующихся материалов, например халатами из хлопчатобумажной ткани, обувью на кожаной подошве. Не рекомендуется применять одежду из шелка, капрона, лавсана.

4.4. Эргономические требования к рабочему месту ПЭВМ

4.4.1. Общие рекомендации при работе с вычислительной техникой

Для защиты от вредных факторов имеющих место при эксплуатации ЭВМ необходимо придерживаться следующих рекомендаций:

  •  правильно организовывать рабочие места;
  •  правильно организовать рабочее время оператора, соблюдая ограничения при работе с вычислительной техникой.

4.4.2. Требования к помещениям и организации рабочих мест

Особые требования к помещениям, в которых эксплуатируются компьютеры:

Не допускается расположение рабочих мест в подвальных помещениях.

Площадь на одно рабочее место должна быть не меньше 6 м2, а объем – не менее 20 м3.

Для повышения влажности воздуха в помещениях с компьютерами следует применять увлажнители воздуха, ежедневно заправляемые дистиллированной или прокипяченной питьевой водой. Перед началом и после каждого часа работы помещения должны быть проветрены.

Рекомендуемый микроклимат в помещениях при работе с ПЭВМ:

  •  температура 19 – 21°С;
  •  подвижность воздуха 0.1- 0.2 м/с;
  •  относительная влажность воздуха 55 – 62%.

В помещениях, где размещены шумные агрегаты вычислительных машин (матричные принтеры и тому подобное), уровень звука не должен превышать 75дБА, в обычных же помещениях, где стоят персональные машины, допускается максимум 65 дБА.

Помещения должны иметь естественное и искусственное освещение. Желательна ориентация оконных проемов на север или северо-восток. Оконные проемы должны иметь регулируемые жалюзи или занавеси, позволяющие полностью закрывать оконные проемы. Занавеси следует выбирать одноцветные, гармонирующие с цветом стен, выполненные из плотной ткани и шириной в два раза больше ширины оконного проема. Для дополнительного звукопоглощения занавеси следует подвешивать в складку на расстоянии 15 – 20 см от стены с оконными проемами.

Рабочие места по отношению к световым проемам должны располагаться так, чтобы естественный свет падал сбоку, преимущественно – слева.

Для устранения бликов на экране, также как чрезмерного перепада освещенности в поле зрения, необходимо удалять экраны от яркого дневного света.

Рабочие места должны располагаться от стен с оконными проемами на расстоянии не менее 1,5 м, от стен без оконных проемов на расстоянии не менее 1,0 м.

Поверхность пола в помещениях должна быть ровной, без выбоин, не скользкой, удобной для чистки и влажной уборки, обладать антистатическими свойствами.

Освещенность на рабочем месте с ПЭВМ должна быть не менее:

  •  экрана – 200 лк;
  •  клавиатуры, документов и стола – 400 лк.

Для подсветки документов допускается установка светильников местного освещения, которые не должны создавать бликов на поверхности экрана и увеличивать его освещенность до уровня более 300 лк. Следует ограничивать прямые блики от источников освещения.

Освещенность дисплейных классов, рекомендуемая отраслевыми нормами лежит в пределах 400-700 лк и мощностью ламп до 40 Вт.

В качестве источников света при искусственном освещении необходимо применять преимущественно люминесцентные лампы типа ЛБ цветовая температура (Тцв) излучения которых находится в диапазоне 3500 – 4200° K.

Допускается применение ламп накаливания в светильниках местного освещения. Для того чтобы избегать ослепления, необходимо устранять из поля зрения оператора источники света (лампы, естественный солнечный свет), а также отражающие поверхности (например, поверхность блестящих полированных столов, светлые панели мебели). При электрическом освещении упомянутые требования могут быть удовлетворены при выполнении следующих условий: освещение должно быть не прямым, для чего необходимо избегать на потолке зон чрезмерной освещенности. При этом освещенность должна быть равномерной, потолок должен быть плоским, матовым и однородным. Необходима также достаточная высота потолка для возможности регулировать высоту подвеса светильников.

При установке рабочих мест нужно учитывать, что мониторы должны располагаться на расстоянии не менее 2 метров друг от друга, если брать длины от задней поверхности одного до экрана другого, и 1,2 метра между их боковыми поверхностями. При выполнении творческой работы, требующей «значительного умственного напряжения или высокой концентрации внимания», между компьютерами должны быть установлены перегородки высотой 1,5 – 2,0 метра.

Дисплей должен поворачиваться по горизонтали и по вертикали в пределах 30 градусов и фиксироваться в заданном направлении. Дизайн должен предусматривать окраску корпуса в мягкие, спокойные тона с диффузным рассеиванием света. Корпус дисплея, клавиатура и другие блоки и устройства должны иметь матовую поверхность одного цвета с коэффициентом отражения 0,4 – 0,6 и не иметь блестящих деталей, способных создавать блики.

Рабочий стул должен быть подъемно-поворотным и регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья.

Экран монитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм. В помещениях ежедневно должна проводиться влажная уборка.

Рабочее место должно быть оборудовано подставкой для ног, шириной не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах 150 мм и по углу наклона опорной поверхности до 20 градусов. Клавиатуру следует располагать на поверхности стола на расстоянии 100 – 300 мм от края, обращенного к пользователю, или на специальной, регулируемой по высоте рабочей поверхности.

4.4.3. Требования к организации работы

Для преподавателей вузов и учителей средних учебных заведений длительность работы в дисплейных классах устанавливается не более 4 часов в день. Для инженеров, обслуживающих компьютерную технику, – не более 6 часов в день. Для обычного пользователя продолжительность непрерывной работы за компьютером без перерыва не должна превышать 2 часов.

Необходимо делать 15-минутные перерывы каждые 2 часа, менять время от времени позу.

Для тех, у кого смена работы за компьютером 12 часов, установлено - в течение последних четырех часов каждый час должен прерываться 15-минутным перерывом.

При работе с ПЭВМ в ночную смену, независимо от вида и категории работ, продолжительность регламентированных перерывов увеличивается на 60 минут. В случаях возникновения у работающих с ПЭВМ зрительного дискомфорта и других неблагоприятных субъективных ощущений, несмотря на соблюдение санитарно-гигиенических, эргономических требований, режимов труда и отдыха, следует применять индивидуальный подход в ограничении времени работ с ПЭВМ и коррекцию длительности перерывов для отдыха или проводить смену деятельности на другую, не связанную с использованием ПЭВМ.

Профессиональные пользователи обязаны проходить периодические медицинские осмотры. Женщины во время беременности и в период кормления ребенка грудью к работе за компьютером не допускаются.

Необходимо строго регламентировать время и условия работы с компьютером для сотрудников, страдающих заболеваниями опорно-двигательного аппарата, глаз и т. д.

4.4.4. Выводы

Выбранные методы и способы защиты от опасных и вредных факторов при соблюдении эргономических требований к рабочему месту ПЭВМ обеспечивают защиту пользователей.

ЗАКЛЮЧЕНИЕ

Заключение

Разработанное в дипломном проекте решение для централизованного мониторинга полностью удовлетворяет всем требованиям технического задания, а именно:

  •  все программное обеспечение функционирует под операционной системой Gentoo Linux;
  •  данное решение обеспечивает проверку состояния основных ресурсов ЕИС и сетевого оборудования;
  •  данное решение обеспечивает проверку основных сетевых служб:  SSH, HTTP, SMB, FTP, ICMP, IMAP, MySQL, RTMP;
  •  данное решение обеспечивает проверку основных системных ресурсов;
  •  данное решение обеспечивает уведомление о сбоях по электронной почте и SMS:
  •  данное решение содержит систему визуализации данных, в виде графиков и интерактивных карт сети;
  •  решение включает в себя компонент по сбору и передачи данных по HTTP протоколу;
  •  решение содержит инструменты для быстрого конфигурирования системы;
  •  решение содержит инструмент для быстрого развертывания.

Основные выводы по дипломному проекту

  •  проведен анализ Единой Информационной Среды кафедры ИКТ. В результате анализа выявлен перечень основных ресурсов кафедры ИКТ;
  •  проведено изучения существующих систем централизованного мониторинга. В результате которого были сформулированы требования к системе мониторинга, а также выбрана система, соответствующая данным требованиям;
  •  разработан компонент для сбора локальных данных на серверах и передачи данных по HTTP протоколу системе мониторинга;
  •  разработан инструмент для быстрого конфигурирования системы;
  •  создан инструмент для развертывания системы;
  •  произведено тестирование, а затем внедрение разработанного решения в ЕИС кафедры ИКТ;
  •  исследованы опасные и вредные факторы, воздействующие на человека при работе с ЭВМ, и методы защиты от них.

Перспективы развития

В заключении следует отменить, что данное решение можно расширять добавлением новых ресурсов в ЕИС кафедры ИКТ и добавлением новых модулей и функций.

Данное решение является переносимым в другие сетевые среды. Поэтому его можно внедрять на другие кафедры нашего института, а также в другие учебные учреждения.

Помимо внедрения в сетевые структуры образовательного процесса нашего института, данный проект можно развить как коммерческий сервис. Создав полностью отлаженную систему ее можно платно внедрять в схожие структуры.

Проект может стать полезным и в образовательном процессе, как пособие по дисциплинам связанным с изучением сетевых технологий.

СПИСОК ЛИТЕРАТУРЫ

Список литературы

  1.  «Компьютерные сети» 3-е издание. В.Г. Олифер, Н.А. Олифер. «Питер» 2006 г.
  2.   Марк Лутц «Изучаем Python, 3-е издание» - Пер.с англ. «Символ-Плюс» 2009 г.
  3.   Колисниченко Д.Н. «Linux-сервер своими руками». - 4-у изд.,«Наука и Техника» 2006 г.
  4.   Эви Немент, Гарт Снайдер, Трент Р. Хейн «Руководство администратора Linux, 2-е издание» Перю с англ. «И.Д. Вильямс», 2009 г.
  5.   ГОСТ 12.0.003-99. Опасные и вредные производственные факторы.
  6.   ГОСТ 12.1.030-01. Электробезопасность. Защитное заземление. Зануление.
  7.   ГОСТ 12.1.045-01. Электростатические поля. Допустимые уровни на рабочих местах.
  8.   ГОСТ 12.4-99. Средства защиты от статического электричества.
  9.   ГОСТ Р 50948, 49-96. Общие эргономические требования и требования безопасности и ее параметры для ЭВМ.
  10.   СанПиН ¹1340-03. Гигиенические требования к персональным ЭВМ и организация работы. Санитарно-гигиенические правила и нормы.
  11.   Указания по проектированию и эксплуатации искусственного УФИ-облучения на промышленных предприятиях.
  12.   Трудовой кодекс РФ (ФЗ ¹197, 30.12.01).
  13.   Перова Ю.Ф., Готовский Ю.В. Электромагнитная безопасность в офисе и дома. М.1998.
  14.   Международные стандарты (шведские) MPR-1990-8,10; ТСО-92-99; ISO-9241-J I
  15.   http://www.gentoo.org
  16.   http://www.icinga.org
  17.   http://www.nagios.org
  18.   http://www.bigsister.ch
  19.   http://ganglia.info
  20.   http://www.zabbix.com
  21.   http://pandorafms.org
  22.   http://www.groundworkopensource.com
  23.   http://unnoc.org
  24.   http://mmonit.com
  25.   http://nagvis.org
  26.   http://www.pnp4nagios.org
  27.   http://mysql.com

ПРИЛОЖЕНИЕ К ДИПЛОМНОМУ ПРОЕКТУ

Компонент-менеджер для анализа собранных данных на сервере мониторинга

from mod_python import apache, util;

def index(req):

 req.content_type = "text/html"

 text_str = []

 req.add_common_vars()

 if req.form.has_key('host_name'): #Проверяем пришел ли данный параметр.

   

   timestamp = req.form['timestamp'] #Получаем временную метку

   text_str.append("["+timestamp+"] PROCESS_SERVICE_CHECK_RESULT")

   req.write("\n timestamp = "+ timestamp )  

        

   host_name = req.form['host_name'] #Получаем имя хоста

   text_str.append(host_name)

   req.write("\n host_name = "+ host_name )

   

   description = req.form['description']#Получаем название проверки

   text_str.append(description)

   req.write("\n description = "+ description )

   

   return_code = req.form['return_code']#Получаем код завершения проверки

   text_str.append(return_code)

   req.write("\n return_code = "+ return_code )

  

   plugin_output = req.form['plugin_output']#Получаем результаты проверки

   text_str.append(plugin_output)

   req.write("\n plugin_output = "+ plugin_output )

   

   text = ';'.join(text_str) #Формируем строку и записываем в файл

   file = open('/usr/share/nagios/hdtp/hosts/'+host_name, 'a+')

   file.write("\n"+text)

   file.close()

Компонент-агент для сбора данных на наблюдаемом сервере

#!/usr/bin/python

# -*- coding: utf-8 -*-

#Загружаем библиотеки 

import os

import sys

import urllib

import re

import time

import datetime

import subprocess

class dataTransferPlugin: #Основной класс

   def __init__(self): #Конструктор класса

       self._nagios_server=

       self._nagios_plugins_dir=

       self._host_name=

       self._method =

       _config = self.getConfig()

       self.letsStart(_config)

   

   def makeCheckCommand(self,data = None): #Функция выполнения

       if data:      выполняющая запуск проверок

       

           scriptResult = []

           _scriptResult = subprocess.Popen(self._nagios_plugins_dir+"/"+data + ";echo ' >'$?", shell=True,stdout=subprocess.PIPE)

           _scriptResult = _scriptResult.communicate()[0]

           _scriptResult = _scriptResult.replace("\n",)

#Обработка результатов проверок

           plugin_output = re.search( ur"[\W|\D|\w|\d]* (?!=>)",_scriptResult)

           if str(plugin_output) != 'None':

               scriptResult.append(plugin_output.group())

           plugin_output = re.search( ur"(?<= >)[\d]{1}",_scriptResult)

           if str(plugin_output) != 'None':

               scriptResult.append(plugin_output.group())

           return scriptResult

       

   def killPid(self,data = None):#Функция убивающая все проверки по

       if data:           счетсчику.

           scriptResult = os.popen("kill -9 "+str(data)).read()       

           return scriptResult

#Функция управления методом передачи данных.

   def dataTransfer(self,command,command_name,method = 'GET'):       

       scriptResult = self.makeCheckCommand(command)

       if method.upper() == 'GET':                   

           self.httpGETRequest(scriptResult,command_name)

       if method.upper() == 'POST':

           self.httpPOSTRequest(scriptResult,command_name)

#Функция передачи данных на сервер мониторинга GET запросом.            

   def httpGETRequest(self,data = None,data_name = None):

       if data != None:

           description = ;

           if data != None:

               description = data_name

           timestamp = time.strftime("%s", time.localtime())

           print "GET: ["+str(timestamp)+"];"+ self._host_name+";"+description+";"+data[1]+";"+data[0]

           params = urllib.urlencode({'timestamp': timestamp,'host_name':self._host_name,

                                      'description':description,'return_code':data[1],'plugin_output':data[0]})

           f = urllib.urlopen(self._nagios_server+"%s" % params)

           f.close()

#Функция передачи данных на сервер мониторинга POST запросом.       

   def httpPOSTRequest(self,data = None):        

       if data != None:

           description = ;

           if data != None:

               description = data_name

           timestamp = time.strftime("%s", time.localtime())

           print "POST: ["+str(timestamp)+"];"+ self._host_name+";"+description+";"+data[1]+";"+data[0]

           params = urllib.urlencode({'timestamp': timestamp,'host_name':self._host_name,

                                      'description':description,'return_code':data[1],'plugin_output':data[0]})

           f = urllib.urlopen(self._nagios_server, params)

           f.close()

#Функция удаления спецсимволов

   def delSpecSymbols(self,data):

       replace_this = re.compile(r"[\n|\t]+")

       clearData = replace_this.sub("",data)

       return clearData.strip()

#Функция чтения конфигурационных файлов.

   def getConfig(self):

       f = open(r'/etc/hdtp/hdtp.conf')

       number = 0

       index = {}

       line = f.readlines()

       for l in line:

           search_host_name = re.search( ur"(?<=host_name) *[\D|\d|\.]*",l)

           if str(search_host_name) != 'None':

               host_name = self.delSpecSymbols(search_host_name.group())

               self._host_name = host_name

               continue

           search_nagios_server = re.search( ur"(?<=nagios_server) *http://[\D|\d]*",l)

           if str(search_nagios_server) != 'None':

               nagios_server = self.delSpecSymbols(search_nagios_server.group())

               self._nagios_server = nagios_server

               continue

           search_nagios_plugins_dir = re.search( ur"(?<=nagios_plugins_dir) *[\D|\d]*",l)

           if str(search_nagios_plugins_dir) != 'None':

               nagios_plugins_dir = self.delSpecSymbols(search_nagios_plugins_dir.group())

               self._nagios_plugins_dir = nagios_plugins_dir

               continue

           search_lifetime = re.search( ur"(?<=lifetime) *\d*",l)

           if str(search_lifetime) != 'None':

               lifetime_data = self.delSpecSymbols(search_lifetime.group())

               self._max_command_lifetime = lifetime_data

               continue

           search_comment = re.search( ur"(?<=#)\D*",l)

           if str(search_comment) != 'None':

               continue

           search_method = re.search( ur"(?<=method) *\D{3,5}",l)

           if str(search_method) != 'None':

               method_data = self.delSpecSymbols(search_method.group())

               self._method = method_data

               continue

           search_command_name = re.search( ur"(?<=description)[ |a-zA-Z|0-9]* (?=command)",l)

           if str(search_command_name) != 'None':

               command_data_name = self.delSpecSymbols(search_command_name.group())

               number+=1

               index[number]={}

               index[number]['name'] = command_data_name

           search_command = re.search( ur"(?<=command)[ |\D|0-9]*",l)

           if str(search_command) != 'None':

               command_data = self.delSpecSymbols(search_command.group())

               index[number]['command'] = command_data

               continue

 

       f.close()

       return index

#Функция параллельного запуска программ проверок.

   def letsStart(self,config = {}):

       pid = {}

       for line in config: #Основной цикл под процессов

           pid[line] = os.fork()

           if pid[line]:             

               pass

           else:

               result = self.dataTransfer(config[line]['command'],config[line]['name'],self._method)

               sys.exit(0)

       time.sleep(float(self._max_command_lifetime))

       for i in pid:

           os.kill(pid[i], 9)

       sys.exit(0)

       

plugin = dataTransferPlugin()

Инструмент для быстрого добавления новых серверов в систему мониторинга

#hdtp-hosts

#Пример команд на добавление хоста и сервиса через систему ym.

#ym -c add-host -o photo.auditory.ru -p use=linux-server -p contact_groups=admins

#ym -c add-service -o PING -d www.auditory.ru -p use=generic-service -p check_command=check_ping

DIR='/var/nagios/hdtp/' #Папка содержащая файлы-хосты с данными.

NAGIOS_ETC_DIR='/etc/nagios' #Основной конфигурационный каталог Nagios

HOSTS_CFG='${NAGIOS_ETC_DIR}/objects/hosts.cfg' #Файл с хостами

CACHE='/var/hdtp-search/new-hosts.cache' #Файл с временными данными

mkdir -p /var/hdtp-search/

function save2cache { #Функция формирования команд и сохранения во временном файле.

addhost=`echo "ym -c add-host -o $1 -p use=linux-server -p contact_groups=admins"`

echo $addhost;

echo $addhost >> $CACHE

echo "$2" | while read service; do

       addservice=`echo "ym -c add-service -o $service -d $1 -p use=generic-service -p check_command=check_nodata"`

       echo $addservice; echo $addservice >> $CACHE

done

}

function check_new { #Функция анализа новых данных

       ls $DIR | while read host; do

               check_exist=`grep $host $HOSTS_CFG| wc -l`

               if [ "$host" != "cmd_file" ] && [ $check_exist == 0  ]; then

               host_data=`cat $DIR$host | awk -F ";" '{

                               srv_list[$3] = $3;

                               } END {

                               for (name in srv_list)

                                               if ( srv_list[name]!="" ) print srv_list[name];

                               }'`

               

               save2cache $host "$host_data"

               fi

       done

}

check_new #Запуск нового анализа

#Запрос действия от пользователя

read -n1 -p "Do you want make all cmd [Y|N]? "

echo ""

case $REPLY in

 n | N)

 echo "You  didn't want to continue..."

 ;;

 y | Y)

 echo "Start make commands..."

 #/bin/bash $CACHE

 cat $CACHE

 ;;

esac

rm $CACHE

exit 0

Ebuild скрипт для быстрого развертывания системы

# Copyright 1999-2009 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header:

inherit eutils autotools

MY_PV=${PV/_/-}

MY_P=${PN}-${MY_PV}

S=${WORKDIR}/${MY_P}

DESCRIPTION="ICT NAGIOS HTTP Data Transfer Plugin"

SRC_URI="http://share.auditory.ru/2010/Alexandr.Scherbatyuk/HDTP-NAGIOS/${MY_P}.tar.bz2"

LICENSE="GPL-2"

SLOT="0"

IUSE="server client sms-gammu php apache"

RDEPEND="server? (>=net-analyzer/nagios-plugins-1.4.13-r1

        >=dev-lang/php-5.2.11-r1

 >=www-apache/mod_python-3.3.1-r1

 >=www-servers/apache-2.2.14-r1

 >=net-analyzer/nagios-3.2.1

 >=net-analyzer/nagvis-1.4.4

 >=net-analyzer/pnp4nagios-0.6.3

 >=mail-mta/ssmtp-2.62-r6 )

       sms-gammu? ( >=app-mobilephone/gammu-1.25.0-r1 )

"

DEPEND="${RDEPEND}"

src_install() {

if use client ; then

 mkdir -p "${D}"/etc/hdtp/

 mkdir -p "${D}"/usr/bin/

 mkdir -p "${D}"/usr/lib/nagios/plugins/

 mkdir -p "${D}"/var/nagios/home/

  

 host=`hostname`

               if [ "$host" == "auditory" ]; then host='www'; fi

 $(sed "s/host_name [ |a-z|A-Z|0-9|\.|_|-]*/host_name $host.auditory.ru/g" -i "${S}"/hdtp.conf )

 install -m 750 -g nagios -p -D "${S}"/hdtp.conf "${D}"/etc/hdtp/

 install -m 755 -g nagios -p -D "${S}"/hdtplugin "${D}"/usr/bin/

 install -m 750 -g nagios -p -D "${S}"/hdtp.crontab "${D}"/var/nagios/home/

 install -m 750 -g nagios -p -D "${S}"/check_aix_cpu.pl "${D}"/usr/lib/nagios/plugins/

 install -m 750 -g nagios -p -D "${S}"/check_cpu.sh "${D}"/usr/lib/nagios/plugins/

 install -m 750 -g nagios -p -D "${S}"/check_physical_mem.sh "${D}"/usr/lib/nagios/plugins/

  

fi

if use server ; then

 mkdir -p "${D}"/usr/share/nagios/hdtp/

 mkdir -p "${D}"/etc/apache2/vhosts.d/

 install -p -D "${S}"/index.py ${D}/usr/share/nagios/hdtp/

 install -p -D "${S}"/hdtp_report.conf ${D}/etc/apache2/vhosts.d/

fi

}

pkg_postinst() {

 

if use client ; then

 crontab -u nagios /var/nagios/home/hdtp.crontab

 rm -f /tmp/memcalc

 chmod -R 775 /var/nagios

 chown -R nagios:nagios /var/nagios

 chown -R nagios:apache /var/nagios/rw

 fi

}