Пишем логи IIS в MSSQL

Цель: организовать хранилище логов IIS под управлением MSSQL.

Условия:

  • Для удобного поиска (SELECT’а) по времени значение date и time должны храниться в одном поле
  • Каждая запись должна иметь уникальный ключ
  • При переносе логов в MSSQL должен использоваться BULK insert.
  • Вставка логов производится за предыдущий день.

Сразу оговорюсь, что напрямую писать логи в MSSQL не используя сторонний софт не получится. Поэтому я написал небольшую консольную программу IIS2SQL, которая удаляет из файла лога закомментированные строки и форматирует поля date и time в одно поле для дальнейшей bulk-вставки. У Microsoft есть аналогичная программа preplog, но она только удаляет закомментированные строки.

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

Теперь необходимо создать необходимую базу и таблицу. Если вы уже гуглили данный вопрос, то обратили внимание, что в сети есть куча руководств и структура таблиц в них может отличаться. Поэтому мы будем делать свою таблицу на основании логов которые нам отдает IIS. Открываем любым текстовым редактором (лучше блокнот не использовать,т.к. велика вероятность что он зависнет) файл логов и смотрим на 3 строку. В ней мы и найдем заголовки полей, которые нам необходимо будет создать.

В моем случае это #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken. Не забывайте, что одно из условий было объединение полей date и time, поэтому создадим соотвествующую табличку. Обратите внимание на то, что я в таблицу добавил автоинкрементное поле Id.

Проблема в том, что если формат лога не соответствует вашей таблице, то BULK-insert из файла не получится. Поэтому вставку в таблицу мы будем делать во View. Создадим новый View для этой БД, исключив поле Id.

Теперь вернемся к программе, которую я написал. Скачайте IIS2SQL и распакуйте в любой удобный каталог на сервере MSSQL. Если один сервер для MSSQL и IIS, то можно сразу запустить программу и поместить в планировщик заданий. А если нет, то вам надо будет каким то образом логи передать на сервер MSSQL. Напрямую с сервера IIS BULK сделать не получится. На сервере IIS создайте пользователя и расшарьте каталог с логами. А на сервере MSSQL напишем скрипт и поместим его выполнение в планировщик. Чтобы сервер сильно не нагружать, лучше настроить выполнение ночью.

Параметры для запуска IIS2SQL:

Вот сам скрипт:

Вот в принципе и все! Удачи!

Внедряем email-аутентификацию DKIM в Postfix за 5 минут

Работал у нас почтовый сервер для рассылки корреспонденции клиентам. И все бы ничего, но стал люд жаловаться, что не доходят письма или  в спам попадают. И хотя spf был настроен, все говорило о том, что пора нам к нашему Postfix прикрутить DKIM. Как гласит цитата откуда-то с хабра:

Для начала установим необходимый софт командой

После установки необходимо отредактировать файл /etc/opendkim.conf, добавив в него строки

Теперь создадим рабочий каталог,а в нем новый приватный и открытый ключ. Открытый ключ мы потом пропишем на нашем DNS-сервере.

В каталоге /etc/opendkim у вас должно появиться 2 новых файла. mail.private — это наш приватный ключ, которым мы будем подписывать письма. А mail.txt содержит публичный ключ. Список имеющихся ключей укажем в файле /etc/opendkim/keytable в формате «название домен:селектор:/путь/до/ключа». В нашем случае содержимое файла будет таким:

Теперь объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/opendkim/signingtable в формате «домен название-ключа».

В файле /etc/opendkim/trusted необходимо прописать ваши доверенные узлы:

Зададим необходимые права, добавим пользователя postfix в группу opendkim. Это нужно чтобы postfix смог отправлять письма на подпись через сокет OpenDKIM. После чего перезапустим службу. Я рекомендую заглянуть в системный лог и убедиться, что нет ошибок при запуске службы.

Вторым этапом настроим postfix, чтобы он мог подписывать нашу почту. В main.cf необходимо добавить:

Ну и опять рестарт/релоад

Третьим и последним этапом мы настроим наш DNS сервер добавив в него TXT запись. Выведите содержимое файла mail.txt и используйте следующую пару ключ-значение для добавления новой записи в DNS.

Для применения изменений в DNS может пройти несколько часов. Проверить DKIM-подпись вы можете отправив пиьсмо через свой сервер на ящик check-auth2@verifier.port25.com. Ответное письмо вы получите в виде отчета. Например:

Полезные ссылки: