Все делаем штатными средствами OS, нам только потребуется архиватор 7z.
Поддержка OMNINET постоянно просит от клиентов лог файлы, со всех серверов. В момент сбоя времени собирать всю информацию может не хватать, поэтому быстрее всего это сделать автоматически. В помощь системным администраторам я написал небольшой Bat файл, который позволяет собрать все необходимые лог файлы.
Принцип работы скрипта, подключаемся к удаленному серверу, ищем в нужной директории искомые файлы, скажем за последний день. Копируем файлы к себе на локальный диск, архивируем по кускам, вес 5 мегабайт один архив.
Поехали:
Код
REM Подключаемся к локальному компьютеру NET USE \\localhost\IPC$ REM Подключаемся к первому серверу приложения компьютеру NET USE \\Server-1\IPC$ REM - запускаем механизм копирования robocopy \\Server-1\C$\APPDATA\Logs\ \\localhost\c$\Temp\In\all_log ot-*.log /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-1\C$\LocalDumps\log\ \\localhost\c$\Temp\In\all_log Ot*.dmp /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-1\C$\PerfLogs\Admin\APP3\ \\localhost\c$\Temp\In\all_log *.blg /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-1\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log Application.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-1\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log System.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log REM Изменяем имена файлов For %%i In ("c:\Temp\In\all_log\ot*") Do rename "%%i" "Server-1-%%~nxi" For %%i In ("c:\Temp\In\all_log\Application*") Do rename "%%i" "Server-1-%%~nxi" For %%i In ("c:\Temp\In\all_log\System*") Do rename "%%i" "Server-1-%%~nxi" NET USE \\Server-1\IPC$ /DEL REM Отключаемся от сервера приложения NET USE \\Server-2\IPC$ REM Подключаемся к первому серверу приложения компьютеру robocopy \\Server-2\C$\APPDATA\Logs\ \\localhost\c$\Temp\In\all_log ot-*.log /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-2\C$\LocalDumps\log\ \\localhost\c$\Temp\In\all_log Ot*.dmp /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-2\C$\PerfLogs\Admin\Server-2\ \\localhost\c$\Temp\In\all_log *.blg /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-2\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log Application.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-2\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log System.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log REM Изменяем имена файлов For %%i In ("c:\Temp\In\all_log\ot*") Do rename "%%i" "Server-2-%%~nxi" For %%i In ("c:\Temp\In\all_log\Application*") Do rename "%%i" "Server-2-%%~nxi" For %%i In ("c:\Temp\In\all_log\System*") Do rename "%%i" "Server-2-%%~nxi" For %%i In ("c:\Temp\In\all_log\_*") Do rename "%%i" "Server-2-%%~nxi" NET USE \\Server-2\IPC$ /DEL REM Отключаемся от сервера приложения NET USE \\Server-3\IPC$ robocopy \\Server-3\C$\APPDATA\Logs\ \\localhost\c$\Temp\In\all_log ot-*.log /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-3\C$\LocalDumps\log\ \\localhost\c$\Temp\In\all_log Ot*.dmp /maxlad:1 /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-3\C$\PerfLogs\Admin\APP5\ \\localhost\c$\Temp\In\all_log *.blg /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-3\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log Application.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log robocopy \\Server-3\C$\Windows\System32\Winevt\Logs \\localhost\c$\Temp\In\all_log System.evtx /LEV:1 /TIMFIX /NP /LOG+:C:\Temp\log_job\backup_work.log REM Изменяем имена файлов For %%i In ("c:\Temp\In\all_log\ot*") Do rename "%%i" "Server-3-%%~nxi" For %%i In ("c:\Temp\In\all_log\Application*") Do rename "%%i" "Server-3-%%~nxi" For %%i In ("c:\Temp\In\all_log\System*") Do rename "%%i" "Server-3-%%~nxi" NET USE \\Server-3\IPC$ /DEL REM Отключаемся от сервера приложения NET USE \\localhost\IPC$ /DEL REM Отключаемся локального компьютера REM Пакуем все в архивы @echo on set LOG_FILE=C:\Temp\log_job\7zip_backup.log set now=%TIME:~0,-3% set now=%now::=.% set now=%now: =0% set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now% set _in=C:\Temp\in\all_log set _out=C:\Temp\in set _arcpath=C:\Program Files\7-zip "%_arcpath%\7z" a -mx9 -v5m "%_out%\all-app-log-%now%.7z" "%_in%\*.*" |
Бонус:
Отправляем все лог файлы в техническую поддержку, в один клик.
Для этого используем следующий код в приложение Microsoft Outlook:
Добавляем раздел "Разработчика"
Открываем конструктор
Код
Sub exec() Dim strDirPath, strMaskSearch, strFileName As String strDirPath = "C:/Temp/In/" 'Папка поиска strMaskSearch = "*7z.*" 'Маска поиска 'Получаем первый файл соответствующий шаблону strFileName = Dir(strDirPath & strMaskSearch) Do While strFileName <> "" 'До тех пор пока файлы "не закончатся" 'MsgBox strDirPath & strFileName If strFileName = "" Then Exit Sub End If Set objMail = Outlook.Application.CreateItem(olMailItem) objMail.Attachments.Add strDirPath & strFileName, olByValue, 1 ' Вложение With objMail '.SentOnBehalfOfName = "it-adm@Domain.ru" 'Откого .BodyFormat = olFormatHTML .HTMLBody = str_body ' Тело письма .Subject = strFileName ' Тема письма .To = "mail@domen.ru" .CC = "" 'mail_copy .Send '.Display End With strFileName = Dir 'Следующий файл Loop End Sub |
Сохраняем
Теперь выводим данный скрипт на форму:
Теперь на верхней части у нас появилась кнопка, при нажатии на которую сформируется и отправятся все лог файлы в техническую поддержку.
По аналогии можно собирать и лог файлы с IIS серверов, тут уж зависит от того, как настроена ваша архитектура.