Пользователь
Логин:
Пароль:
Забыли свой пароль?

Поиск по сайту
 

 Расширенный поиск
Реклама

Как собрать лог файлы со всех серверов в один клик

В данном топе, я расскажу, как можно легко собрать все лог файлы со всех серверов приложения в один клик.
Все делаем штатными средствами 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 серверов, тут уж зависит от того, как настроена ваша архитектура.