Создаем систему мониторинга большой сети удаленных филиалов своими руками

image
Задача: сделать эффективную и! бесплатную! систему мониторинга сети из ~50-60 Cisco маршрутизаторов и 80 серверов на платформе Windows 2003/2008, чтобы службе поддержки было видно когда что-либо падает, отваливаются службы на серверах, тунели на цисках, загруженность каналов и так далее.

Оборудование: Систему в общем то потянет любой сервер, тестировалась со всей этой сеткой она у меня на стареньком Celeron с 768Mb RAM, сейчас стоит на мощном Xeon'е с 8Gb оперативной памяти, но практически не ест ресурсов.

Программное обеспечение: CentOS 5 + Nagios + Cacti + Plugins
По желанию систему можно грузить еще чем-угодно, у меня например на ней же стоит форум phpBB3 использующийся как база знаний Техподдержки, файловая помойка и ssh терминалы.
Nagios был выбран как платформа для мониторинга доступности хостов по пингу, серверов на платформе Windows и сетевых принтеров HP. Cacti — в основном для мониторинга сети.

Почему выбираем эту связку? Решений для мониторинга сейчас очень много, из испробованных мной — эта связка пришлась по душе больше всего, т.к. она а) полностью бесплатная б) не требует много ресурсов в) эстетически приятный вид мониторингов г) высокая конфигурироемость

Описывать как устанавливать CentOS я не буду, в сети достаточно мануалов по этой теме, да и установка там сложностей не представляет. Единственное, что пожалуй добавлю — ставил его в редакции server. Скачать установщик можно тут.

Читать дальше →

Некоторые подводные камни при использовании сессии

Рассмотрим типичный случай взаимодействия двух страниц в ASP.NET, одна из которых это таблица, а вторая это форма по редактированию записей: Grid и Edit. Кроме основной функции, Edit может также создавать новую запись, поэтому правильней будет назвать её Add/Edit.

Итак, какие сценарии у нас предусмотрены:
  • Редактирование существующей записи
  • Добавление новой записи


Читать дальше →

Вычисление MD5 хэша в .NET

Во время написания некого проекта на ASP.NET, мне понадобилось подключить к своему веб-сайту виджет авторизации ВКонтакте. Так как с JavaScript я вообще не знаком, а как таковых прямых примеров на подключение OpenAPI к веб-сайту я не нашел, возможно плохо искал, но скорее не было желания использовать чужую библиотеку, хотелось понять и изучить само подключение OpenAPI к моему веб-сайту. Я начал с тривиального, то-есть подключение виджета авторизации. Изучив небольшую документацию на сайте, принялся за дело.

Итак, я узнал, что last_name и прочие параметры передаются путем запросов. Собственно для проверки вошел ли пользователь используется зашифрованный MD5 хэш ID приложения, ID пользователя, и Secret key приложения. Отсюда логично то, что нужно путем обычных действий в C#, то-есть декодированием данного набора символов кодировкой UTF-8, вычислением хэша массива байтов и кодированием той-же кодировкой в string, получить зашифрованную строку. Но не тут то было…

Читать дальше →

Политический DDoS на Livejournal.com

Год, через год
Сегодня происходит очередная DDoS-атака на Живой журнал. До сих пор (18 часов МСК) на месте авторизации висит табличка с текстом «Сервис авторизации недоступен. Пожалуйста, повторите попытку через некоторое время». Кроме того, отдельные свежесозданные посты могут отображаться некорректно.


Читать дальше →

Напоминания о днях рождения в iCal и iOS стандартными средствами с помощью AppleScript

В статье я опишу как на Mac OS X используя только встроенные средства системы настроить напоминания о днях рождения (стандартными средствами можно только отобразить календарь без напоминаний). Таже при желании можно воспользоваться результатом на iOS-устройстве.

Читать дальше →

«Именованные параметры» в Delphi

Иногда возникает ситуация, когда в функцию требуется передавать много различных параметров, но при этом необходимый набор этих параметров может сильно различаться. В таких случаях, для Delphi, как правило, есть несколько путей решения:
  1. Просто забить все возможные параметры в интерфейс функции.
  2. Сделать множество перегрузок функции на все случаи жизни.
  3. Передать параметры массивом.
  4. Воспользоваться обходным путём. Например, вынести параметры в класс и проставлять их перед вызовом функции.
Всё эти способы получаются довольно громоздкими в реализации и имеют массу недостатков. А самое главное, что над их реализацией необходимо думать в каждом конкретном случае отдельно — не существует простого общего решения.

В некоторых языках (Scala, Python, Ruby...) такой проблемы не стоит в принципе — там есть такая замечательная вещь как именованные параметры. В Delphi же приходится всегда следовать установленному порядку аргументов. Не спасают даже значения по-умолчанию (их не всегда можно применить из-за конфликта типов, к тому же их использование нередко приводит к путанице).

Однако, используя небольшую хитрость, в Delphi вполне можно написать, к примеру, вот так:

ProcessParams(Par('Param1', 'test') + Par('Param2', 38) + Par('Param3', 3.2));

При этом в функцию ProcessParams придёт массив из трёх записей, содержащих пару «имя — значение». Такая запись становится возможной благодаря модулю объёмом всего 40 строк:


Читать дальше →

GUI: Рекомендации по названию пунктов меню

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

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

Читать дальше →

Монетизация свободного контента — Голосование рублём

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

Читать дальше →

Основные параметры-аргументы в методах обработки изображений

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

Читать дальше →

Доступный линукс

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

Недавно я наткнулся на статью об установке linux в виртуальность Windows 2008 R2. Собственно так я и определился с дистрибутивом и способом установки системы. Оставалось только позвонить своему другу, который администрирует сервер под Windows 2008 и, пообещав, что буду аккуратным и ничего не сломаю, попросить у него учетную запись для удаленного рабочего стола и виртуальную машину.

image

Так как я люблю программировать, то было решено установить средства для удаленного использования системы, а именно SSH и оставить визуальный RDP. А так же поднять вебсервер с поддержкой mysql, php5 и Ruby on Rails.

Читать дальше →