Заметки практикующего сисадмина

Дядя Саша Кузьмич пишет о работе

  • Бесплатные системы внешнего мониторинга

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

    UpPanel Опрос каждые 30 минут HTTP, HTTPS, FTP, SSH, POP3, SMTP, MySQL, Ping, Custom TCP Ports, Page content check. Базовая отчетность, предупреждения высылаются на Email, Telephone, SMS, AIM, MSN, YIM. В данный момент система работает, но на главноей странице выдается ошибка.
    Update: В данный момент система функционирует нормально.

    mon.itor.us Web 2.0 в действии. Куча возможностей по опросу (HTTP, HTTPS, FTP, SIP, IMAP, SMTP, POP3 на любом порту, любой TCP или UDP порт, DNS, Ping) и отчетности, мониторинг из 3х точек, опрос каждые 30-45 минут, предупрежедния высылаются на e-mail, ICQ, YIM, MSN, GTalk, телефон. Можно скачать и установить агента (пока только под Windows), который помимо мониторига процессов, памяти и жестких дисков самой машины может выступать в роли еще одной точки опроса (пока опрашиваются только HTTP и Ping).

    Оптимально использовать обе, т.к. в результате проверки будут каждые 15 минут 🙂

  • Выдача Last-Modified, а также работа с If-Modified-Since в PHP-скриптах

    <?php
    // Определяем дату модификации скрипта и выдаем Last-Modified
    $last_modified = filemtime($SCRIPT_FILENAME);
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $last_modified) . ' GMT');
    // Пытаемся получить содержимое If-Modified-Since
    foreach($_SERVER as $name => $value) {
    if($name == 'HTTP_IF_MODIFIED_SINCE')
    $modified_since = $value; }
    // Пытаемся преобразовать значение в Unix time
    if (isset($modified_since)) {
    $modified_since = strtotime(preg_replace('/;.*$/', '', $modified_since));
    } else {
    $modified_since = 0; }
    // Сравниваем даты и выдаем заголовок, если требуется
    if ($last_modified <= $modified_since) {
    header('HTTP/1.1 304 Not Modified');
    exit(); }
    ?>

    В PHP не понимаю вообще ничего, поэтому комменты по оптимизации и исправлению багов крайне приветствуются.

  • Еще одни знакомства — Маска

    Замечена на доменах smski.ru и chellove.ru

    acl maska dst 212.176.118.149/32
    http_access deny maska
    deny_info http://***.accessdenied.html maska

  • Вышел Windows Server 2003 SP2

    Вот. Тем, кто работает с Windows настоятельно рекомендую почитать Windows Server 2003 & Windows XP x64 Service Pack 2 Technical Overview (да, для x64 он совмещен с XP).

  • Как закрыть доступ к популярным сайтам знакомств

    Окончательно обнаглевший народ просиживает все рабочее время на сайтах знакомств. Двумя основным источниками этой радости являются Mamba и LovePlanet Закрыть доступ к ним по DNS практически невозможно в виду чрезвычайной многоликости. Поэтому мы пойдем обратным путем и закроем доступ по IP адресам.

    IP адреса Mamba:
    194.67.27.125
    194.67.27.126
    194.67.52.19
    194.67.52.20
    194.67.52.21
    194.67.52.22

    IP адреса LovePlanet:
    195.68.160.36
    195.68.160.37
    195.68.160.50
    195.68.160.52
    195.68.160.55

    Настраиваем Squid:
    acl mamba dst 194.67.27.125/32 194.67.27.126/32 194.67.52.19/32 194.67.52.20/32 194.67.52.21/32 194.67.52.22/32
    acl loveplanet dst 195.68.160.36/32 195.68.160.37/32 195.68.160.50/32 195.68.160.52/32 195.68.160.55/32
    http_access deny mamba
    http_access deny loveplanet
    deny_info http://страшноеругательствопронецелевоеиспользованиеинета mamba
    deny_info http://страшноеругательствопронецелевоеиспользованиеинета loveplanet

    Комменты приветствуются.

  • Инициативный дурак хуже вредителя

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

    via bash.org.ru

    Попросил меня старый знакомый настроить ему сервер, железо купил сам, не советуясь. Ну что же, сам так сам. Машинка, естественно, оказалась самой обычной рабочей станцией с 4 SATA винтами. Загнал 3 диска в RAID 5 уровня, четвертый предусмотрительно оставил под бэкапы. Все настроили, заработало, люди радуются, копии делаются. Однажды посреди рабочего дня вырубают свет. Конечно UPS, ввиду отсутствия денег, не купили. База 1С, естественно, в DBF. Разумеется, побилась. Восстановили из копии, радуются, работают. Не долго радовались… На другой день к вечеру RAID начал вопить, что один диск у него отвалился. Комп гарантийный, решили везти к продавцу. Доработали на двух дисках до конца дня, все было нормально, но завершили работу по какой-то причине аварийно. Ребятки в сервисе быстро нашли и устранили причину — херовые шлейфы. Поставили дорогие, с защелками, да еще и полиэтиленом для надежности залили. Врубили машинку, RAID перестроился, отдали клиенту. Дальше продолжать или сами догадаетесь?

    Эти кретины ПЕРЕПУТАЛИ ДИСКИ. В результате в массив попал тот диск, на котором были бэкапы! Т.е. бэкапов нет, база битая… Хотел бы я встретиться с тем замечательнейшим специалистом высшего класса, что менял шлейфы…

    Мораль: одной резервной копии мало!

  • Подключение к консольной сессии Windows Server 2003

    Конечно же, 2 варианта, как обычно.

    1. Ставим пакет средств администрирования Windows Server 2003 (adminpak.msi), используем оснастку Remote Desktops (Удаленные рабочие столы).
    2. Используем стандартный RDP клиент, для этого запускаем его с ключом /console: %SystemRoot%\system32\mstsc.exe /console

    Обратите внимание, что про второй вариант во встроенной справке не сказано ни слова. А на сайте все же есть.

    Update: в 6й версии клиента параметр в справке описан.

  • Описание настройки Squid delay pools

    В лучшем proxy-сервере Squid (также работающем под Windows) есть хороший механизм ограничения скорости загрузки. Единственная беда — про написано много, но по-английски, а об устройстве — вообще только 2 сообщения от разработчиков в списке рассылки. Поэтому постараюсь рассказать про него, что понял сам.

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

    1. Ограничена общая скорость загрузки.
    2. Ограничена общая скорость загрузки и скорость загрузки индивидуального хоста (биты 25 -32 IP-адреса).
    3. Ограничена общая скорость загрузки, скорость загузки подсети (биты 17-24 IP-адреса) и скорость загрузки индивидуального хоста (биты 25 -32 IP-адреса).

    Важно пояснить, что для пулов второго и третьего класса каждое соединение проходит через все ограничения: общее -> подсеть (только для третьего класса) -> хост. Для более наглядного представления IP-адресов в двоичной форме скачайте себе LanCalculator.

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

    • Если объем запрашиваемых данных меньше или равен размеру буфера, то клиент получает их с максимальной скоростью (максимальная скорость равна размеру буфера).
    • Если объем запрашиваемых данных больше размера буфера, то первую часть (размер буфера) клиент получит с максимальной скоростью, а остаток — с минимальной (скоростью заполнения буфера).

    Что мы имеем в результате.

    • Если размер буфера и его скорость заполнения равны, то клиент всегда качает с максимальной скоростью.
    • Если размер буфера больше скорости заполнения, то файлы объемом меньше размера буфера клиент получает на максимальной скорости, а больше — на минимальной.
    • Если скорость заполнения буфера больше размера буфера, то клиент всегда получает данные на максимальной скорости (объем буфера), но Squid не подкачивает данные, пока клиент полностью не опустошит буфер.

    Перейдем к конфигурированию. Поиск необходимого пула будет происходить только до первого совпадения, поэтому при объявлении пулов необходимо соблюдать нужный порядок.

    Сначала объявляем ACL (списки доступа), по которым мы будем определять принадлежность клиентов к определенному пулу.

    acl vasya src 192.168.1.10/32
    acl kolya src 192.168.1.11/32
    acl petya src 192.168.1.12/32
    acl masha src 192.168.1.13/32
    acl director src 192.168.1.14/32
    acl office1 src 192.168.2.0/24
    acl office2 src 192.168.3.0/24
    acl office3 src 192.168.4.0/24

    Объявляем сами пулы.

    delay_pools 3 # Всего будет 3 пула
    delay_class 1 1 # 1й пул первого класса
    delay_class 2 1 # 2й пул первого класса
    delay_class 3 3 # 3й пул третьего класса

    Определяем принадлежность юзеров к пулу. Принадлежность нужно определять по одному ACL на строку. Если написать в одну строку несколько ACL, то в пул попадет только первый, а остальные — нет. По крайней мере на Squid 2.5.STABLE10 работает именно так.

    delay_access 1 allow vasya
    delay_access 1 allow kolya
    delay_access 1 allow petya
    delay_access 1 allow masha
    delay_access 1 deny all
    delay_access 2 allow director
    delay_access 2 deny all
    delay_access 3 allow office1
    delay_access 3 allow office2
    delay_access 3 allow office3
    delay_access 3 deny all

    Задаем ограничения по скорости.

    delay_parameters 1 16000/16000 # 128K на всех
    delay_parameters 2 32000/32000 # 256K на всех
    delay_parameters 3 32000/32000 16000/16000 -1/-1 #256K на всех, каждой подсети 128K

    Вот вроде и все. Будут вопросы — задавайте.