Показаны сообщения с ярлыком Config. Показать все сообщения
Показаны сообщения с ярлыком Config. Показать все сообщения

понедельник, 21 марта 2011 г.

Несколько полезных ссылок про Network Monitor

Прежде всего хочу напомнить всем моим читателям про Netmon – сниффер от Microsoft. Давным давно, еще на заре моей работы в IT, он мне очень не понравился своим странным интерфейсом. И тогда я стал использовать сначала Ethereal, потом Wireshark. Однако время идет, все меняется. И вот, сравнительно недавно появилась вот эта версия Netmon. Она сразу привлекла мое внимание своим полезным функционалом. Как минимум в этом сниффере сразу видно какой процесс генерирует траффик. При этом, он сразу раскладывается по парам источник/приемник. Кроме того, есть API, позволяющее разрабатывать для него различные расширения, как например TCP Analyzer. И, самое вкусное. Формат, в который захватывается трафик, позволяет добавлять комментарии. В результате на этом сайте, представлены примеры различных “захватов” с пояснениями, что происходит на данном конкретном этапе, с пояснениями и ссылками на официальные спецификации протоколов, которые, к слову, тоже есть в открытом доступе.

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

 

PS. Да, чуть не забыл – блог команды разработки

среда, 26 января 2011 г.

SQL Server 2005, AWE и странности с памятью.

Не далее чем вчера один мой коллега попросил помочь с включением режима AWE в MS SQL 2005. Этот режим позволяет SQL Server использовать память выше 4ГБ на 32х разрядных системах. Процедура конфигурации очень проста. Нужно включить привилегию Lock pages in memory для учетной записи пользователя, под которым стартует MS SQL Server. Затем включить режим AWE у сервера и задать параметры потребления памяти. Кроме того система должна быть загружена в PAE режиме. И вот тут возникли вопросы.

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

Прежде всего про PAE. Это специальный режим, в котором механизм трансляции виртуальных адресов в реальные изменяется таким образом, что позволяет 32х разрядной системе использовать больше 4ГБ памяти. Однако, для того, чтобы приложения могли его использовать, они должны использовать специальный API. Те программы, которые не умеют этого – не получат ничего от этого механизма. SQL Server – умеет.

Теперь, собственно, сам вопрос. После применения всех настроек в task manager видно что сервер стал использовать совсем мало памяти. Как проверить, работает ли все это?

Прежде всего нам нужно проверить, включилась ли привилегия. Для этого вы можете использовать утилиту whoami /priv. Запустить ее нужно как раз от имени того пользователя, под которым стартует служба сервера. В ее выводе должна быть перечислена нужная нам привилегия. Если ее там нет- значит она не включена. Не пугайтесь, если ее состояние  - disabled. Приложение, которое умеет и будет использовать AWE, в нашем случае SQL Server – сам активирует эту привилегию, если она ему доступна. Для проверки вы можете воспользоваться Process Explorer. Для этого нужно выбрать в дереве процессов нужный вам процесс и на вкладке Security в нижнем списке вы увидите список доступных привилегий для процесса. SQL Server самостоятельно включает (enable) привилегию, если она disabled. Если ее нет – значит вы не включили ее. А что с памятью? Тут все просто. Память, выделяемая при помощи AWE не входит в рабочий набор (working set), не может быть сброшена на диск и разделена между несколькими процессами. Поэтому в колонках task manager вы не увидите ничего. Для того чтобы проверить этот момент можно воспользоваться счетчиком SQLServer:Memory Manager: Total Server Memory (KB). Он покажет вам сколько реально памяти употребил сервер.

Вот собственно и все. Но все же, советую, при больших объемах памяти используйте 64х разрядные версии ПО.

среда, 5 января 2011 г.

Небольшие изменения в скрипте установки UVNC.

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

Get-QADcomputer -Name "*" | Select-Object name

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

Пожалуйста, оставляйте ваши комментарии Улыбка

четверг, 12 августа 2010 г.

Базовый мониторинг производительности Windows

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

\Processor\% Processor Time
Основной показатель активности. Однако если наблюдать за ним, то делать это надо часто, допустим раз в секунду. Сам по себе ничего не показывает, однако если параллельно изменяются % Privileged Time или Processor Queue Length, есть смысл задуматься и понаблюдать более пристально при помощи специальных утилит.

\Processor\% Privileged Time
Показывает процентное время работы процессора в режиме ядра. В нормальном режиме это значение не должно быть высоким.
Постоянное значение более 75% говорит о проблеме

\Processor(_Total)\% User Time
Показывает процентное время работы процессора в пользовательском режиме. Это основной режим работы.

\Processor\% DPC Time
Показывает процентное время, затраченное процессором на обработку отложенных вызовов. Большие значения указывают на аппаратные проблемы, или проблемы с драйверами. Обычно этот показатель не превышает 5%. Если это значение, или выше, сохраняется длительное время - это индикатор проблемы.

\Processor(*)\% Interrupt Time
    Этот счетчик показывает процентное время, которое процессор затрачивает на обработку аппаратных прерываний. Большие значения счетчика говорят о проблеме в драйвере или аппаратных проблемах. Обычно не превышает нескольких процентов в очень короткое время.



\System\System Up Time 
Тут все ясно. Время с последней перезагрузки. Короткое время может показывать на частые перезагрузки.


\System\Processor Queue Length
Основным объектом исполнения кода являются потоки. Они же являются основным потребителем ресурсов процессора. Очередь процессора это потоки, ожидающие, пока процессор освободится. После выполнения очередного потока система передает процессор следующему из очереди. Таким образом очередь постоянной длиной в два и более потоков сигнализирует о повышеной нагрузке на процессор. Однако при анализе нужно учитывать и счетчик Processor\% Processor Time. Если его значения не высоки при наличии очередей, то это означает проблему в логике самих потоков. Это справедливо так же и для многопроцессорных систем.


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


\Memory\Pages/sec
Достаточно хитрый счетчик. Он показывает, сколько страниц в сек было прочитано или записано в рамках обработки страничного прерывания. Это прерывание возникает тогда, когда искомая страница памяти оказывается выгруженой на диск в данный момент. Однако в этот счетчик попадают так же и рабочие ситуации связанные с кэшем и memory-mapped файлами. По этому по нему нельзя однозначно сказать о недостатке памяти.


\Memory\Page Reads /sec
Счетчик, который можно использовать в дополнение к предыдущему. Он показывает сколько операций чтения в единицу времени, безотносительно к страницам, было сделано при обработке страничных прерываний.


Memory\Pages Input/sec
Количество страниц, прочитанных с диска, в рамках обработки страничных прерываний.


Memory\Page Reads/sec
Количество страниц, записанных на диск, в рамках обработки страничных прерываний.


\Memory\ Cache Faults
Счетчик учитывает промахи системного кэша.
Таким образом, если \Memory\Pages/sec, \Memory\Page Reads /sec,  Memory\Pages Input/sec, Memory\Page Reads/sec постоянно находятся на высоком уровне, а \Memory\Cache Faults на низком, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, сигнализирует о недостатке памяти. Однако, если \Memory\Cache Faults тоже высок, то скорее всего ситуация вызвана активной работой с большими файлами, отображаемыми в память. Такое поведение не должно длиться долго.


\Memory\Available MBytes
Количество доступной процессам физической памяти. Уменьшение счетчика, сопровождаемое ростом \Memory\Pages/sec и \Memory\Page Reads /sec может сигнализировать о недостатке памяти. Постоянное и равномерное уменьшение счетчика указывает на утечку памяти в одном из приложений.


Memory\Transition Faults/sec
Значение это счетчика показывает скорость, с которой обрабатываются так называемые soft faults - ошибки страниц, для разрешения которых не нужны обращения к диску. Количество Transition Faults равно количеству таких страниц.


\LogicalDisk(*)\% Free Space
Счетчик, показывающий процент свободного места на логических дисках.


LogicalDisk|PhysicalDisk\Avg. Disk Queue Length
Счетчик следит за количеством запросов, стоящих в очереди к диску. Считается, что, если очередь к диску длительное время более двух - это может быть индикатором проблемы.

четверг, 8 июля 2010 г.

Windows 2003, PPTP, VPN, RRAS и domain controller

Сегодня мы поговорим с вами о site-to-site vpn. Причем построенных на Windows 2003 RRAS с использованием PPTP. А именно, мне хочется поделиться с вами своей историей, которая едва не взорвала мой мозг.

Начнем с того, что вышло из строя оборудование. Проще говоря, маршрутизатор сгорел. В результате этого пропала связь с одним из подразделений, и после недолгих размышлений было решено поднять VPN соединение. Следующим этапом было короткое обсуждение способов и применяемых технологий. В общем, после недолгого общения было решено пропустить через NAT соответствующие порты с обеих сторон и использовать RRAS+PPTP. Простенько и со вкусом. Сказано – сделано. В первую очередь был по диагонали просмотрен этот документ.  В соответствии с ним, на отвечающей стороне был поднят и настроен RRAS в режиме VPN сервера. Кроме того, как требовалось в руководстве я настроил demand-dial интерфейс. При этом меня начал мучить вопрос, зачем нужен этот интерфейс на отвечающем роутере. Однако сходу на этот вопрос ответа не было. Кроме того я обратил внимание, что в инструкции требуется поставить галочку, которая создаст локального пользователя. Этот эпизод я благополучно пропустил мимо ушей, поскольку настройка отвечающего RRAS происходила на контроллере домена. Затем аналогичный сервер был настроен и на вызывающей стороне, вместе со всеми необходимыми demand-dial интерфейсами. Подключающейся стороне, само собой,  должен был выдаваться адрес, отличный от обеих наружных подсетей. Кроме того, внутри существующей сетевой инфраструктуры применяется RIP2. Поэтому его я так же настроил на обоих RRAS.

Итак – файерволлы настроены, роутеры тоже. Устанавливаем подключение и … Вот тут началось страшное.

среда, 30 июня 2010 г.

Удаленная установка UltraVNC с драйвером

Не стану говорить о том, почему мне понадобилось это сделать. Факт в том, что понадобилось. Попросту говоря, понадобилось ПО с этим функционалом, но бесплатное. После длительных размышлений выбор пал именно на UltraVNC. Попробую пояснить почему. Хотелось решение, в котором есть возможность использовать видеодрайвер, так называемый mirror driver, благодаря которому работа с решением с точки зрения клиентской машины значительно ускоряется. Проще говоря производительность сервера с драйвером раз в 5-7 выше, нежели без драйвера. А учитывая порой плачевное состояние парка машин, это условие было, пожалуй, очень важным. Драйвер такой есть у нескольких производителей. Однако RealVNC не дает его с бесплатной версией а TightVNC находится в какой-то странной бете, а я бетам не доверяю. Может быть незаслуженно, но это все таки бета.

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

четверг, 24 июня 2010 г.

Несколько подключений с службам терминалов и DNS

    День добрый, дорогой читатель. Сегодня мне захотелось странного,настроить отдельное подключение к одному из моих терминальных серверов. Хотя, обо всем по порядку. В моем хозяйстве есть терминальный сервер, на котором работает некоторое количество пользователей с неким важным приложением. Назовем его server1. Терминальное подключение к нему настроено таким образом, чтобы пользователям ничего не нужно было бы вводить при входе на него, чтобы это приложение автоматически стартовало при входе и в сессию монтировались локальные принтеры. В общем все красиво и без лишнего напряжения пользователей. Однако сегодня появилась необходимость пустить на сервер не только этот набор пользователей, но и еще одну, другую группу. Этой группе не нужны ни принтеры, ни это приложение. В их задачу входит конфигурирование другого приложения, расположенного на этом сервере. Соответственно, для этих пользователей нужны были совсем другие настройки. Как тут быть?

    На сервере обнаружилась вторая сетевая карта. И было решено настроить второе подключение к терминальному серверу. Для этого, используя TS Configuration manager создаем еще одно подключение к терминальному серверу и настраиваем его соответствующим образом, как нам надо. Единственный момент. Для этого нужно, чтобы эти подключения различались либо протоколом либо сетевым интерфейсом. Однако выбор протоколов небольшой – целых один. По этому и два сетевых интерфейса.

repl1

Однако спустя несколько минут мне позвонили. Пользователь первого терминального приложения сообщил, что у него ничего не получается. “Все пропало!” (с). После недолгого разговора я понял, что в терминальную сессию он таки попадает, однако не в свою, а во вновь созданную. Ситуация сложилась предельно простая. Два указанных сетевых интерфейса смотрели в одну и ту же сеть. Результатом этого явилось то, что при поднятии второго интерфейса он зарегистрировал запись о себе в DNS. А DNS в свою очередь стал отдавать обе записи об этом сервере по очереди. В итоге пользователи могли попасть “не туда”. Что оставалось делать? Люди, конфигурирующие второе приложение – специалисты. И я решил просто сообщить им IP второго интерфейса и отключить на нем соответствующую опцию, касающуюся автоматической регистрации в DNS.

repl3

ipconfig /registerdns, ipconfig/flushdns – и все в норме.

понедельник, 21 июня 2010 г.

Установка софта через глобальные политики

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

installError1

Все выглядело так, как будто не хватает прав на доступ. Первым делом были проверены права на ресурсах. Они оказались в норме. Для authenticated users доступ на чтение. Но не работало, хоть тресни. Что же делать, как же быть? Ну что ж, раз при инсталляции система идет на шары под учетной записью компьютера, имело смысл попробовать сходить таки под учетной записью компьютера и посмотреть, что же за ошибка выдается при доступе к общему ресурсу. Как это сделать? Помогает все тот же psexec.

installError2

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

воскресенье, 6 июня 2010 г.

Проблема с DNS зоной Active Directory

Давеча меня попросили разобраться с проблемой. При попытке добраться из одного домена в другой, через доверительные отношения, выдавалось сообщение: “Отсутствуют серверы, которые могли бы обработать запрос на вход в сеть”. Я зашел через RDP на проблемный контроллер домена и попробовал. Сообщение действительно выдавалось :). Занятно, но при попытке зайти на общедоступные ресурсы с другой стороны успешно удавалось. Мало того, ситуация складывалась так, что домен, в ресурсы которого не удавалось зайти был совсем недавно создан и в него был мигрирован другой домен, NT4. Так вот в ресурсы этого NT4 заходило без вопросов и проблем. Собственно говоря вот так примерно это выглядело. Зеленые стрелки это удачные заходы на общие ресурсы, а красные – соответственно, неудачные. Внешние эллипсы это два физически удаленных географических места, соединенных wan соединением.

domains

Что ж, подумал я, вероятно где-то есть проблема с разрешением имен. И тут я сделал первую ошибку. Я просто бросил пинг из одного и из другого домена. Имена исправно разрешались и пинги исправно шли. Странно, подумалось мне, очень странно. Недолго думая я поставил снифферы на трех машинах. На контроллерах в обоих w2k3 доменах и на файловом сервере, доступиться к которому не удавалось. Хотел посмотреть, где и почему все застряет. И тут меня ждал обескураживающий результат. Все выглядело нормально на первый взгляд. То есть файловый сервер корректно шел на свой контроллер домена за разъяснениями, по поводу имени пользователя из другого домена. Тот, в свою очередь ходил в удаленный домен однако конечный контроллер почему-то упорно возвращал ошибку. И только в этот момент мне пришло в голову внимательно посмотреть в зону DNS домена-источника. Сделай я это раньше – сэкономил бы кучу времени. Оказалось,что его зона не содержит ни одной srv записи. То есть не было ни одной “подпапки” в оснастке DNS. Кроме того, были отключены автоматичесие обновления. Вот это да, подумалось мне. Положение спас файлик
%SystemRoot %\System32\Config\Netlogon.dns. В нем, как водится, находилась корректная структура зоны, нужные srv записи. Я просто скопировал нужные записи в текущий файл зоны и перезапустил DNS. Затем сбросил кеш всех серверов в обоих доменах и все. Проблема пропала. По сути дела можно было просто включить автоматические обновления и перегрузиться или перезапустить netlogon, который, если верить документации, должен был перерегистрировать записи из этого файла. Но, об этом я подумал только после того как скопировал записи и перезапустил DNS.

В последствии, копаясь в гугле, нашел вот эту тему, и скрипт из нее. Думаю, он делает тоже самое:

rem Экспорт зоны в файл.
rem ---------------------
dnscmd localhost /ZoneExport domain.lan exported.domain.lan.dns

rem Импорт зоны из файла.
rem ---------------------
dnscmd.exe localhost /ZoneDelete domain.lan
dnscmd.exe localhost /ZoneAdd domain.lan /Primary /file exported.domain.lan.dns /load dnscmd.exe localhost /ZoneResetType domain.lan /DsPrimary /OverWrite_Ds

Проблема с Outlook 2003 и загрузкой диска.

И снова здравствуйте. Уже очень давно ничего не писал. То не находил времени, то желания. К сожалению порой лень сильнее меня. Как жаль, что никто еще не придумал никакой “золотой таблетки” от лени. Вот, чтобы выпил, и все. Никакой лени или плохого настроения.

В общем, в этой заметке хочу вкратце рассказать об одной интересной ситуации, случившейся на днях. Один из компьютеров моей организации вдруг ни с того ни с сего начал жутко тормозить. Причем пользователь жаловался, что не может работать с почтой. Клиентом, в нашем случае, является outlook 2003. Придя к пользователю я сразу обратил внимание на то, что лампочка активности жесткого диска постоянно горит. Трещащие звуки самого диска были слышны постоянно. При этом, как и следовало ожидать, скорость отклика системы была очень медленной. Я задумался: как можно узнать какой процесс в этом виноват? Меня сразу посетила мысль о process explorer. С его помощью это можно сделать довольно легко. Для этого нужно добавить дополнительные колонки.


IO

К сожалению на рассматриваемой машине мне не удалось сделать нужных скриншотов. По этому я публикую только те, что сделал на своей. Итак, на рисунке видно, какие колонки стоит добавить для того, чтобы обнаружить, какой процесс генерирует большое количество IO операций. Отсортируем отображение по этим колонкам и, вот оно, outlook в верху списка. Мало того, при попытке закрыть приложение его окно пропало, а процесс остался, генерируя дикий IO. Вот и причина тормозов. Мало того, пользователь ведь думает, что раз окно пропало – приложение закрыто. Я подождал еще с пару минут в надежде что outlook закроется. Но нет, не закрылся. Пришлось убить вручную. Долго думать о причинах такого поведения не пришлось. При старте он выдавал сообщение о неправильном закрытии файла личных папок и я решил что вся проблема в нем. Я просто создал еще один файл личных папок, перезапустил outlook и перенес все содержимое старого файла в новый. Процесс длился около получаса, в результате чего новый файл стал размером в 3ГБ хотя старый был всего 1,6ГБ. После окончания переноса я отключил старый файл, оставив только новый. Еще пара проверок и, ура, проблема исчезла.

четверг, 15 апреля 2010 г.

Как звать компьютер пользователя

К огромному сожалению мне приходится заниматься поддержкой пользователей. Ох, как меня утомляют эти однотипные вопросы о том, как отправить почту или почему она мне не приходит. Или как удалить/добавить строчки в ячейках и почему у меня спрашивает пароль, если у меня его никогда не было. Мало того, люди не понимают, что в моей голове не удерживается эта куча ассоциаций “человек-компьютер”, и я не могу знать кто за каким компьютером работает и какой у него адрес. А ведь эта информация нужна мне, для подключения по vnc к их машинам. И как объяснить им, где посмотреть имя их машины, не говоря уже об адресе, если они не делают различий между именем машины и именем пользователя. В общем, после долгих раздумий и мытарств пришел к простому решению – bginfo. Программа позволяет отобразить прямо на рабочем столе, точней на его обоях нужные данные. Достаточно только раздать ее пользователям, и прописать в автозапуск.

среда, 10 марта 2010 г.

Windows и логи squid 2: Анализ логов squid

Следующим шагом будет небольшая модернизация нашей таблицы в sql server и самого скрипта, а так же простое и быстрое получение отчета. Наша задача быстро и просто, без лишней головной боли получить отчет по использованию трафика пользователями. Для этого мы воспользуемся таким супернавернутым средством как microsoft excel. Как оказалось, круче него только горы.

Однако, для начала нам стоит изменить таблицу sql server, в которой хранятся наши логи. Мы добавим вычисляемое поле, которое будет преобразовывать данные объемов трафика из байтов в мегабайты. Для этого можно сделать примерно следующее:

alter table accesslog add mb as ((cast ([size] as decimal (20,3))/1024)/1024)

Проблема в том, что поле size у нас типа bigint, что обусловлено типом в файле лога. Верней особенностями logparser при работе с типами. При создании вычисляемого поля, сервер использует тип данных для поля, основываясь на исходных полях. В итоге, если не использовать преобразование cast ([size] as decimal (20,3) тип данных нового поля будет целым, что приведет к потере дробной части.

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

LogParser.exe" -o:sql -server:SQLSERVER -database:weblog -ignoreIdCols:on -createTable:on -i:TSV -iSeparator:space -nSep:1 -headerRow:off "select TO_TIMESTAMP( ADD( TO_INT(field1), TO_INT(TIMESTAMP('1970','yyyy')) ) ) AS field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, 0.0 into accesslog from \\gateway\squid\access.log.2"

Нужно добавить в конце инструкции select еще одно поле подходящего типа. Это, опять же, требования самого logparser.

Итак, предварительные приготовления сделаны. Займемся отчетом. Займет эта процедура очень немного времени. На самом деле значительно меньше, чем у меня ушло на написание этой заметки.

Прежде всего создаем источник данных, путем создания запроса к внешним данным:

olap1

 olap2

Указываем параметры нового запроса. А именно, откуда берем данные: сервер, таблица, язык. Язык влияет на формат дат. Кроме того выбираем тип аутентификации на сервере. В моем случае это доменная аутентификация. Однако можно использовать и аутентификацию sql server.

olap3

olap4

olap6

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

olap5

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

olap7

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

oplap8

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

olap9

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

olap12

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

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

понедельник, 8 марта 2010 г.

Windows и логи squid

  Некоторое время назад потребовалось предоставлять информацию, на предмет использования интернет на рабочем месте. Вообще, я считаю, что это лишнее. Если люди делают свою работу хорошо, зачем ограничивать им интернет. Тем более что в наше время он совсем не дорог. Однако руководство имеет совсем другое мнение. Заковыка состояла в том, что вся инфраструктура построена на windows, а прокси, соответственно, на linux. Файлы логов опубликованы на этом linux при помощи общей папки. Однако, имеющиеся под linux средства анализа и генерации отчетов никого не устроили по непонятным мне причинам. Вероятно потому, что внешний вид отчетов оставляет желать лучшего. Да и работать c html отчетами не удобно. Другое средство - internet access monitor for squid почему-то вело себя совсем неадекватно. Что, учитывая его стоимость и ограничения, совсем не хорошо. Например, поставить его можно только на одно рабочее место. То есть, если несколько человек хотят посмотреть отчеты и при этом, при необходимости, детализировать их там где надо, возникает проблема. Отчеты можно генерировать по расписанию, и рассылать почтой, но вот нужного функционала нет. Мало того, при быстром разрастании базы отчеты строятся “тыщщу лет”. В общем – никакой стабильности.

    Поколебамшись, я решил накрутить что-нибудь сам. Идея была в том, чтобы втянуть логи, как есть, в MS SQL Server, и потом обрабатывать их. И вот тут то и появилась первая проблема. Логи формата по-умолчанию, никак не хотели втягиваться стандартным визардом импорта. Верней, втягиваться то они втягивались. Но визард, разбирал их не совсем корректно. А все потому, что отформатированы они, мягко говоря, через одно место. То есть, человеку их, конечно, удобно читать. А вот разобрать их на столбцы простыми кликами мышки оказалось сложнее. В итоге, я решил использовать для этой цели powershell. Дай, думаю, я удалю лишние пробелы, авось втянется. Однако и тут, облом подкрался незаметно… Время обработки одного 300мб файла переваливало за 11 мин. Меня такая ситуация не устраивала в корне.

    В общем, поборовшись, какое-то время за скорость я решил вернуться к более традиционным средствам LogParser. Оказалось, что эта утилита умеет не только исполнять простые запросы на sql подобном языке к файлам различных форматов. Она умеет еще кучу всего всякого разного, включая преобразование форматов и запись в таблицы SQL Server. Последнее его свойство я и решил попробовать использовать. Оставалась только одна задача. Поле даты в этих журналах хранится в формате unix timestamp. Соответственно его нужно преобразовать к подходящему формату. И тут на помощь снова приходит logparser. Он подерживает некий набор функций, по работе с данными входных файлов. В общем и целом, без долгих разговоров – вот такой вот простой скрипт:

LogParser.exe" -o:sql -server:SQLSERVER -database:weblog -ignoreIdCols:on -createTable:on -i:TSV -iSeparator:space -nSep:1 -headerRow:off "select TO_TIMESTAMP( ADD( TO_INT(field1), TO_INT(TIMESTAMP('1970','yyyy')) ) ) AS field1, field2, field3, field4, field5, field6, field7, field8, field9, field10 into accesslog from \\gateway\squid\access.log.2"

Этот запрос выбирает данные прямо из логов squid и пишет их в базу ms sql. При этом, в случае отсутствия нужной таблицы первый раз, она создается. Единственный эпизод, после создания имеет смысл изменить имена полей таблицы, а так же типы данных полей, хранящих количество переданых байт и затраченое время на bigint. Это стоит сделать для того, чтобы в дальнейшем упростить запросы к базе, поскольку при агрегировании этих данных может случиться переполнение. Этот скрипт можно запускать по расписанию, допустим, каждый день. Запрос на моих объемах и условиях выполняется 5-6 минут. Думаю, процесс можно значительно ускорить, если разбить процедуру на два этапа. Сначала преобразовывать файл лога в более привычный формат, например csv, а затем втягивать его в базу при помощи bcp. Скорее всего можно достичь скорости, где-то в районе от 30 сек до минуты-двух.

суббота, 16 января 2010 г.

пятница, 15 января 2010 г.

Спецэффект с мелкими файлами

Собственно говоря даже не спецэффект, а просто картинка:

smallFIles

Обратите внимание на size и size on disk. Цифры говорят лучше всяких слов :)

четверг, 14 января 2010 г.

Казус с Scheduled Tasks, или вред не спланированных решений

Не создаются задания! Ужас, причем поведение дико странное. При попытке создать задание ntbackup просто сваливается в … dr. Watson. Примерно вот так

ntackupError1

ntackupError2

Это же потеря потерь!  И тут я вспомнил, что некоторое время назад для борьбы с kido, который среди прочего создавал задания удаленно, чем и распространялся, было принято решение изменить права на папку %systemroot%\tasks. Это решение, как водится, не было должным образом протестировано. Что несомненно послужит наукой. Изменение прав доступа было осуществлено, как водится, глобальной политикой. Вот это обстоятельство и сбило меня с сначала толку. На OU с сервером, на котором я пытался создать задачу эта политика не применялась! Однако еще при инсталляции и вводе в домен сервер бывал в тех OU, на которые она таки применялась. И действительно, применилась. Через стандартный explorer нельзя увидеть настройки этого каталога. Однако есть сacls и icacls. Пришлось изменять права вручную. Вот такой вот SDDL строкой:
D:P(A;OICIIO;FA;;;CO)(A;;0x1200ab;;;BO)(A;;0x1200ab;;;SO)(A;OICI;FA;;;BA)(A;OICI;FA;;;SY).

Вывод: всегда проверяйте, если не уверены, что побочных эффектов не будет.

среда, 13 января 2010 г.

Не запускается сервис WIN-RM

Вроде бы все хорошо. Вновь установленный сервер. Введен в домен. Ничего на него не ставилось, чист, как юная девственница. Устанавливаем ws-management core framework. Все, вроде бы чудесно. Выполняем enable-psremoting. И тут странный облом. Ошибка. В логах вот такое сообщение:

winrm_error

О ужас. Что же делать? Недолгое гугление приводит вот к таким результатам. А именно, сервис WIN-RM стартует под аккаунтом network service. Одна из доменных политик изменила политику Log on as a service (SeInteractiveLogonRight) так, что этот аккаунт потерял эту привилегию. Соответствующая корректировка сразу решила все проблемы.

Вот правильные настройки для network service account.

Privilege Source

Replace a process-level token (SeAssignPrimaryTokenPrivilege)

Explicit assignment

Adjust memory quotas for a process (SeIncreaseQuotaPrivilege)

Explicit assignment

Generate security audits (SeAuditPrivilege)

Explicit assignment

Bypass traverse checking (SeChangeNotifyPrivilege)

Through membership in the Everyone group

- Access this computer from the network (SeNetworkLogonRight)

Through membership in the Everyone group

- Log on as a batch job (SeBatchLogonRight)

Through membership in the Everyone group

- Log on as a service (SeInteractiveLogonRight)

Explicit assignment

- Impersonate a client after authentication

Through membership in the Everyone group

среда, 23 сентября 2009 г.

О вреде доменного админа.

    Наша песня хороша – начинай с начала. Очередной раз убеждаюсь в том, что даже производить какие либо действия на рабочих станциях пользователей с админскими привилегиями небезопасно. Особенно, если иметь дело с таким вирусом как kido.
    Самый простой пример. Сегодня нужно было сделать некоторые действия на рабочей станции пользователя. Я без зазрения совести залогонился под доменным админом. Как водится, все сделал и оставил машину включенной. Не прошло и нескольких минут, как мне позвонили :). Файерволл засек активность с этой машины. Kido получил админские привилегии и побежал по сети.
    Вот такая вот загогулина :)

пятница, 19 октября 2007 г.

NTP - Cisco+W2k3 Server

Борьба с циской закончилась. NTP таки поднялся.

Буквально пару дней назад возникло женание настроить синхронизацию цисок по NTP с серверами-контроллерами домена. В этой роли используются Windows 2000 Server. Сходу решить задачку не удалось - не заработало. Пришлось мучать гугл. После недолгого допроса гугл рассказал мне, что в качестве протокола сенхронизации времени в Windows 2000 используется SNTP, который не понимает моя циска. Но зато в Windows 2003/XP используется как раз NTP. Ура! Попытка настроить синхронизацию с рабочей станцией под управлением XP увенчалась успехом. Но ведь рабочая станция - это не есть хорошо, подумал я. Надо переделать. И тут начались проблемы. Синхронизация с одним из серверов на Windows 2003 не шла ни в какую. Гугл снова был допрошен на предмет настроек NTP Wn2k3 сервера. Оказалось, что режим NTP-сервера включен по молчанию только на контроллерах домена. Именно они могут служить источником времени. Перенастройка моего сервера помогла, циска увидела пакеты и поняла их. Однако синхронизироваться упорно не хотела. Первый день закончился неудачей. Кроме всего мной был удален один параметр, автоматически создаваймый циской, по совету одного буржуя. Как оказалось потом - зря.
День второй начался с допроса гугла на предмет ковыряния во внутренностях NTP, с целью понять диагностику, выдаваемую циской. Цифры стали понятны. Разница во времени между циской и сервером была большой - несколько десятков секунд. А в моей памяти четко отложилось магическое число, сказанное гуглом - 11 секунд. После этого, якобы, циска обзывает сервер инвалидом :). Голова шла кругом, и я решил вернуть удаленный параметр и уменьшить время расхождения, задав его вручную. И, о чудо! Оно заработало :)
По ходу допросов многие товарищи говорили что циска не понимает Windows, и что якобы это "всем понятно", и что не стоит пользоваться Windows в качестве сервера времени по этой причине. Вот и наш ответ Членберлену - все работает!