Pull to refresh
0
0
postdig @postdig

User

Send message

Пишем свой плагин для nagios

Reading time1 min
Views9.7K
В своей повседневной работы я очень активно использую nagios. Как мне кажется, это очень мощная система для мониторинга серверов. Можно мониторить загрузку сервера, доступность разных серверов и тд и тп.

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

Итак начнем.

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

Он парсит свой конфиг, находит там команду запуска какого-либо плагина и запускает. Например, php -f checkServer.php. checkServer.php выполняет какую-то свою работу по проверке сервера и отдаёт в ответ статусное сообщение и код завершения работы.

Нагиос понимает 4 кода завершения работы
  • 0 — Все ок.
  • 1 — Предупреждение
  • 2 — Критическая ошибка
  • 3 — Что-то неизвестное случилось

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

И так сам скрипт простейшего плагина под nagios(на php).

define( "STATUS_OK", 0 );
define( "STATUS_WARNING", 1 );
define( "STATUS_CRITICAL", 2 );
define( "STATUS_UNKNOWN", 3 );

$checkFilePath = 'file';
if(file_exists($checkFilePath))
{
echo 'File exists. Everything is ok';
exit(STATUS_OK);
}

echo 'File does not exists';
exit(STATUS_CRITICAL);


вот и все — подключаем в нагиос и он будет проверять существует ли файл или нет. Конечно же Вы можете организовать любую проверку бизнес логики своего проекта, вплоть до автоматического тестирования через phpunit.
Total votes 31: ↑22 and ↓9+13
Comments6

Обратимое шифрование текста — метод «Двойной квадрат»

Reading time5 min
Views50K
Здравствуйте!

Однажды, мне понадобилось шифровать текст. Я знал что в PHP есть расширение mcrypt, но интуиция подсказывала, что не на всех хостингах это включено.
Поэтому я начал подозревать что придется кодить решение самому. Что я собственно и сделал. Получилась функция обратимого шифрования, достаточно быстрая и надежная.
Пример работы функции:
<?php 
	echo dsCrypt('habrahabr.ru');
	//Выведет: 60634K7T0*0!
	echo dsCrypt('60634K7T0*0!',1);
	//Выведет: habrahabr.ru
?>

Если вы все еще пользуетесь XOR шифрованием :), то можете заглянуть под кат и посмотреть как еще можно защищать данные…
Читать дальше →
Total votes 79: ↑60 and ↓19+41
Comments93

MonIT + M\MonIT = простой и бесплатный мониторинг нескольких серверов

Reading time4 min
Views23K
Возникла задача мониторинга нескольких серверов, находящихся в разных ДЦ, имеющих разные ОС и ПО.

ТЗ получилось примерно такое:

  1. Мониторинг системы (cpu, mem, load average, bandwidth).
  2. Мониторинг состояния сервисов (запущен или нет).
  3. Мониторинг функционирования сервисом (отвечает на запросы корректно или нет).
  4. Контроль потребляемых сервисами ресурсов и общего их состояния.
  5. Централизованая «админка» для всей этой радости.
  6. Уведомление по email, самостоятельное исправление проблемы (например рестарт упавшей службы).


Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments35

phpThread: нити в PHP? Запросто

Reading time2 min
Views2.2K
Если вы хотите научиться писать многопоточные приложения на PHP или здорово упростить себе жизнь — статья для вас.

Раньше для этих целей я пользовался либо запуском несколько копий скрипта, либо же использовал pcntl на более низком уровне, чем хотелось бы. Это, а от части и Java-идеология работы с потоками, побудили меня к написанию пакета phpThread.
Читать дальше →
Total votes 75: ↑61 and ↓14+47
Comments78

Подключаем транспорты к GTalk. Через тернии…

Reading time2 min
Views1.6K
То там, то здесь в течение последнего полугода возникают сообщения о том, что люди не могут подключить к их jabber-аккаунту на Google Talk новые транспорты. Как показал анализ трафика и несколько обсуждений в списке рассылки jabber-operators, дело в том, что GTalk «не любит» JIDы в формате srv.example.org, а предпочитает исключительно node@example.org и поэтому честные транспорты не могут запросить у пользователя авторизацию.

Если количество ссылок вас еще не утомило, то ниже я в двух словах расскажу, что с этим можно сделать, пока инженеры Google полгода чинят этот лютый баг.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments36

Футболка Viva La Distribución!

Reading time1 min
Views822
В ходе последних событий в мире свободного распространения информации возникла идея вот такого принта на футболку для всех, так сказать, солидарных с движением:
image
Если кому-то кроме меня захочется сделать себе такую, милости прошу за исходниками:
1) В .eps на Народе;
2) В .ai там же, на всякий.
p.s. Предложения по возможному улучшению также приветствуются)
Total votes 24: ↑19 and ↓5+14
Comments15

Атака на беспроводные сети. Чуть меньше теории и чуть больше практики

Reading time6 min
Views313K
image
В общих чертах теорию и процесс атаки хорошо описал юзер n3m0 в своих статьях «Атаки на беспроводные сети», поэтому я не буду заострять внимание на многих теоретических моментах.
Я же хочу описать самые простейшие способы обхода защиты, но более подробно.
Читать дальше →
Total votes 199: ↑189 and ↓10+179
Comments103

Простой способ восстановить удаленные файлы

Reading time3 min
Views135K
Поделюсь небольшой находкой, маленькой программой для восстанавления удаленные файлы. Какое-то время назад было очень нужно, но программы Scalpel, тогда не нашел, к сожалению. На мой взгляд, из всех известных мне способов — это один из наиболее простых. Scalpel появился из проекта Foremost.

И так любителям rm -rf посвящается:

Читать дальше →
Total votes 65: ↑62 and ↓3+59
Comments29

Марш против RDBMS или проекты распределенных хранилищ (key-value stores)

Reading time5 min
Views15K
candybar2Вот вы часто создаете проекты? И, наверное, везде применяете базу данных, в частности, MySQL (а кто-то и PostgreSQL). Но вот что интересно, по опыту да и просто после чтения описания различных архитектур видно, что далеко не везде в проекте нужны ключевые особенности баз данных, во многих случаях базу используют просто как некоторое хранилище обычных данных. Например, в системах кеширования базы обычно не применяются, более того, кеширование как раз используют для того, чтобы избежать лишних запросов. А что используют для кеширования наиболее часто? Memcached. А что это такое? Это распределенная система хранения данных на основе хеш-таблицы. В общих чертах, это просто хранилище пар ключ-значение, над которыми можно производить только основные операции — запись, чтение, удаление и проверку на присутствие. Да-да, нет никаких фильтров, выборок, сортировки, самый максимум — система тегов для выборки одним запросом всех связанных записей. И во многих случаях такого функционала вполне достаточно.
Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments31

Создание gsmrozetka.ru

Reading time4 min
Views5.7K
Кратенько о нас. Мы — это компактный коллектив разработчиков. Пишем на чем угодно, паяем все, что можно припаять. Своя собственная, небольшая лаборатория для проведения адских экспериментов.
Достаточное количество друзей-знакомых-клиентов, поддерживающих нас. И ставящих перед
нами различные задачи. Иногда эти задачи порождают, кроме основного продукта, еще и побочный.

Сегодня я расскажу не о основном, а о как раз случайно созданном нами продукте. Родился он
благодаря такой цепочке:

Удаленны съем статистики со спец-техники (делали и сделали)->
Шуточки про дистанционное управление 50-тонным тралом (хотим, но пока времени нет )->
Возвращение на землю с мыслью, что это же прикольно -по-управлять чем-нибудь ->
Знакомый, с его постоянными поездками на дачу и включением обогревателя, чтобы что-то
там не промерзло и не прорвало. Товарищ хотел простенькую железку. Чтобы воткнул ее и
все заработало. Чтобы, не выезжая на дачу, он мог включить-выключить свой котел.

Навскидку. У нас был удлинитель. Был сотовый телефон.
Image and video hosting by TinyPic

А хотелось что-то типа вот такого:
Image and video hosting by TinyPic

Ну, или, как вариант, на самый крайний случай — вот такого:
Image and video hosting by TinyPic

Читать дальше →
Total votes 202: ↑194 and ↓8+186
Comments224

PHP Speedy — наше все

Reading time2 min
Views1K
PHP SpeedyЧто такое PHP Speedy? Это набор php-скриптов, которые позволяют объединять и сжимать CSS- и JS-файлы для веб-сайта, написанного на PHP. Изначально разрабатывался как приложение к Wordpress, но сейчас получил более широкое распространение.

PHP Speedy был выбран в качестве основы для начала разработки Web Optimizer — веб-приложения, автоматизирующего клиентскую оптимизацию. Предполагается, что такое приложение можно будет максимально быстро и максимально легко развернуть на любой платформе, а оно уже само позаботится о всех действиях, связанных со скоростью загрузки страницы.

Как показала практика, клиентская оптимизация интересует большой круг людей. Но очень многих останавливает то, что нужны специальные знания для освоения этой области. Web Optimizer создается как раз, чтобы убрать этот барьер (и как наш ответ Чемберлену www.getrpo.com :).
Читать дальше →
Total votes 83: ↑74 and ↓9+65
Comments45

Обслуживание тысяч запросов в секунду на примере XBT Tracker

Reading time5 min
Views8K
Недавно проводили тест, результаты которого показали, что одно приложение обрабатывает 2000 запросов в секунду на скромном сервере, где это было не единственной нагрузкой. При этом результат каждого запроса записывается в 3-5 таблиц в MySQL. Честно говоря, меня такой результат удивил, поэтому решил поделиться с хабрасообществом описанием архитектуры этого приложения. Подобный подход применим от баннерных показов до чатов и микроблогов, надеюсь кому-нибудь покажется интересным.

Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.

Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments41

Серия 50+ советов по оптимизации PHP кода. «За» и «против» такой оптимизации. Первые 10 советов.

Reading time6 min
Views21K
Это перевод первых 10-ти советов статьи по оптимизации PHP кода. На хабре есть перевод более старой версии статьи — 40 советов по оптимизации вашего PHP-кода

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

Пишу по частям, иначе получится очень много материала сразу.

Это моя первая статья на хабре, надеюсь она получилась интересной.

Читать дальше →
Total votes 98: ↑71 and ↓27+44
Comments142

Как можно снизить потребление оперативной памяти на VPS в 2 раза, ничего не меняя в настройках программ

Reading time3 min
Views33K
Взял VPS, построенный на OpenVZ. Поставил туда Debian Lenny и всякие программы (обычный LAMP, по сути). С точки зрения потребления ресурсов ничего почти не настраивал, вышло где-то 200М занятой оперативной памяти (сразу после старта).
Написал ulimit -s 1024 в /etc/init.d/rc ближе к верху. Перезагрузился. Потребление памяти на VPS упало более чем вдвое, стало около 100М.

Если у Вас VPS на Xen или аналогичных, то у Вас нет граблей, с которыми я тут боролся. Если на OpenVZ (Virtuozzo) со товарищи — у Вас, скорее всего, на VPS эти же грабли.

В статье — почему и как это работает.

Читать дальше →
Total votes 66: ↑62 and ↓4+58
Comments45

Журналирование действий администраторов

Reading time1 min
Views7K
Примерно год назад я озаботился журналированием всех действий наших администраторов (а их у нас 5 человек) на Cisco-девайсах.
Как известно, реализуется это на маршрутизаторах с помощью aaa accounting exec, а на PIX/ASA-х с помощью aaa accounting command, причем в обоих случаях только через протокол TACACS+.

Поиск бесплатного TACACS-сервера под Windows (!) не увенчался успехом, в результате чего была написана утилита, которую я и хочу представить Cisco-водам: tacomacc.narod.ru
Подробности настройки сервера и устройств на взаимодействие с ним приведены там же на страничке. Опыт эксплуатации — 1 год на сети из 120 разношерстных устройств (от 1750 до 5350 + PIX-ы/ASA-ы).

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

Сразу упомяну альтернативные пути:
«родные» исходники от Cisco: ods.com.ua/win/rus/net-tech/c_ios/tacacs.html
и клоны от них: en.wikipedia.org/wiki/TACACS
Total votes 6: ↑5 and ↓1+4
Comments2

Пишем Referrer tracker: мал да удал, с хранимыми процедурами MySQL

Reading time4 min
Views3.5K
Часто возникает желание посмотреть отуда приходят люди на ваш сайт, дабы пойти туда почитать что про нас любимых пишут, и рьяно вступить в полемику не отходя от кассы. Казалось бы, такая популярная штука как Google Analitycs должна делать это, но есть одна проблема — в отчете отрезаются GET-параметры, и если вы видите что ссылка с огромного форума, то вам еще предстоит найти нужную тему, что отнимает время (стоит упомянуть, что Google Analitycs требует дополнительного JS кода на страницах, что также отнимает время и трафик).
Дальше кратко про альтернативы и вперед изобретать велосипед
Total votes 46: ↑40 and ↓6+34
Comments52

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

Reading time5 min
Views12K

Вступление


Просто красивый rrdtool =)
Забавно, но когда программист разрабатывает какой-либо продукт, он редко задумывается над вопросом могут ли на одну кнопку в один момент времени нажать одновременно 2000 человек. А зря. Оказывается могут. Как ни странно но большинство движков, написанных такими программистами, очень плохо ведут себя под большими нагрузками. Кто бы подумал, а всего один лишний INSERT, не проставленный index, или кривая рекурсивная функция могут поднять load averages чуть ли не на порядок.

В этой статье я опишу как мы, разработчики проекта, сумели выжать из одного сервера с Pentium 4 HT / 512Mb RAM, максимум, держа одновременно 700+ пользователей на форуме и 120,000 на трекере. Да, проект этот — торрент трекер. Предлагаю сразу оставить в стороне разговоры о копирайтах и правах, мне это не интересно, что действительно интересно — это HighLoad.
читать дальше
Total votes 318: ↑314 and ↓4+310
Comments184

Организация видеотрансляции на сайте

Reading time4 min
Views20K
Всем привет.

Боремся с пробками вместе


В рамках этого проекта в г. Красногорск, мы решили установить пару сетевых камер и сделать удобным просмотр потокового видео. Забегая вперед, результат можно посмотреть на нашем сайте или с мобильного телефона по wap www.ventumnet.ru/camera


Читать далее
Total votes 67: ↑66 and ↓1+65
Comments73

VPN, полное покрытие

Reading time5 min
Views31K
Представьте, ваша компания набирает обороты, растут продажи, происходит открытие множества филиалов, и эти филиалы активно работают друг с другом. А это значит что вам нужно все их друг с другом связать! В качестве оборудования у нас маршрутизаторы Cisco, что впрочем отменяет только конечные примеры настроек, если у вас Cisco нет, я находил в сети проект OpenNHRP.

Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.

Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments43

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity