Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Event Log - сбор логов на центральный сервер

Автор: leputain
Дата сообщения: 17.03.2005 13:52
посоветовали продолжать здесь:
+ добавлен лог для ошибок
? как бы покрасивее дату/время получать ?
? как бы пинговать компы перед коннектом ?
[more=листинг]var fs, a, ForAppending;
ForAppending = 8;
fs = new ActiveXObject("Scripting.FileSystemObject");
a = fs.OpenTextFile(".\\evtcollect.log", ForAppending, true);

var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var arrComputers = new Array("HOME","ADMIN1","JUSEPPE");
var strBackup = "c:\\"

for (i = 0; i < arrComputers.length; i++)
{
var objWMIService = GetObject("winmgmts:{(Backup,Security)}\\\\" + arrComputers[i] + "\\root\\CIMV2");

var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTEventlogFile", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);

var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext())
{
var objItem = enumItems.item();

var strBackupFile = strBackup + arrComputers[i] + "_" + TimeNow() + "_" + objItem.LogfileName + ".evt";

try { objItem.BackupEventLog(strBackupFile) }
catch(e) { a.WriteLine(TimeNowLog() + arrComputers[i] + ": " + objItem.LogfileName + " couldn't be saved"); }

try { objItem.ClearEventLog() }
catch(e) { a.WriteLine(TimeNowLog() + arrComputers[i] + ": " + objItem.LogfileName + " couldn't be cleared"); }
}

var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.MoveFile("\\\\" + arrComputers[i] + "\\c$\\*.evt", "\\\\HOME\\eventlog\\");

}

a.Close();

function TimeNow()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear()) + "_";
strNow += LeadingZero((d.getMonth()) + 1) + "_";
strNow += LeadingZero(d.getDate()) + "_";
strNow += LeadingZero(d.getHours()) + "_";
strNow += LeadingZero(d.getMinutes()) + "_";
strNow += LeadingZero(d.getSeconds());
return(strNow);
}

function TimeNowLog()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear()) + "/";
strNow += LeadingZero((d.getMonth()) + 1) + "/";
strNow += LeadingZero(d.getDate()) + " ";
strNow += LeadingZero(d.getHours()) + ":";
strNow += LeadingZero(d.getMinutes()) + ":";
strNow += LeadingZero(d.getSeconds()) + " ";
return(strNow);
}

function LeadingZero(intNum)
{
if (10 > intNum)
{ intNum = "0" + intNum;}
return(intNum);
}[/more]
Автор: AlexSSS
Дата сообщения: 17.03.2005 18:15
leputain
> ? как бы пинговать компы перед коннектом ?
ответ взят из TechNet Script Center

machine = "compname"
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("machine " & machine & " is not reachable")
End If
Next
Автор: leputain
Дата сообщения: 18.03.2005 05:07
- убрал лог и оповещения об ошибках, пока не придумаю более лицеприятный
+ получаем покрасивее (imho) дату/время
+ пингуем комп, и только потом собираем с него дамп логов
+ собираем именно дамп (полное имя файла), а не по маске (*.evt или *.bak), чтобы не cобрать лишнего
[more=листинг]var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var arrComputers = new Array("FUCK","ADMIN1","JUSEPPE","HOME");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var strShare = "\\\\HOME\\eventlog\\";

for (i = 0; i < arrComputers.length; i++) {
var colPing = GetObject("winmgmts:\\\\.\\root\\CIMV2").ExecQuery("SELECT * FROM Win32_PingStatus WHERE StatusCode <> null AND Address = '" + arrComputers[i] + "'", // StatusCode <> null to collect from reacheable comp
"WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
var enumPing = new Enumerator(colPing);
for (; !enumPing.atEnd(); enumPing.moveNext()) {
var objPing = enumPing.item();

var colLogs = GetObject("winmgmts:{(Security,Backup)}\\\\" + objPing.Address + "\\root\\CIMV2").ExecQuery("SELECT * FROM Win32_NTEventlogFile WHERE NumberOfRecords > 0", // NumberOfRecords > 0 to dump non-empty logs
"WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
var enumLogs = new Enumerator(colLogs);
for (; !enumLogs.atEnd(); enumLogs.moveNext()) {
var objLog = enumLogs.item();
var strBackup = objLog.Drive + objLog.Path + objPing.Address + "_" + TimeStamp() + "_" + objLog.FileName + ".bak";
objLog.BackupEventLog(strBackup);
objLog.ClearEventLog();
strBackup = strBackup.replace(":", "$");
fso.MoveFile("\\\\" + objPing.Address + "\\" + strBackup, strShare);
}
}
}

function TimeStamp()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear());
strNow += LeadingZero((d.getMonth()) + 1);
strNow += LeadingZero(d.getDate());
strNow += LeadingZero(d.getHours());
strNow += LeadingZero(d.getMinutes());
strNow += LeadingZero(d.getSeconds());
strNow += LeadingZero(d.getMilliseconds());
return(strNow);
}

function LeadingZero(intNum)
{
if (10 > intNum) { intNum = "0" + intNum;}
return(intNum);
}[/more]

Добавлено:
требования. запускать из-под админа, на машине с шарой для дампов.
если собираем с xp sp2, то там надо в групповой политике->адм. шаблонах->сеть(или система)->сетевые соединения->брандмауэр->доменный профиль(или локальный) разрешить исключение для удаленного управления.

Добавлено:
вторую часть - logparser с шаблонами и запросами - чуть позже.

Добавлено:
пока делал пинг - пришла идея, по пути - сделать скрипт, который будет пинговать компы регулярно и обновлять .csv файл. а потом красивую табличку в xml можно сделать с помощью logparser'а и выкладывать её на шару.
в .csv вести - с какого момента пингуется/не пингуется... ну и цветом показывать - онлайн или оффлайн.


Добавлено:
только что проверил на предприятии.
всё работает.
только, с контроллера домена из-под админа не могу подсоединиться к административным шарам на рабочих станциях - 2000. а с серверов - 2003 - тягает дампы только так! а по поводу 2000 уже ищу, мне кажется дело в политиках.

+ заметил ошибку - достаточно заменить strNow += LeadingZero((d.getMonth()) + 1); на strNow += LeadingZero((d.getMonth() + 1));
Автор: Jovanotti
Дата сообщения: 18.03.2005 10:06
leputain
Думал над развиваемой тобой темой раньше
ты прямо опережаешь мои мысли
Отличная работа, думаю мне пригодится тоже ....

Советую обратить внимание на
Windows Admin Scripting Little Black Book, Second Edition из шапки
Автоматизация администрирования


Цитата:
только, с контроллера домена из-под админа не могу подсоединиться к административным шарам на рабочих станциях - 2000

Проверь наличие на 2000 аккаунта домен-админа в группе Локальных админов
В ХР в случае присоединения к домену так по умолчанию и делается
думаю в 2000 тоже.

Автор: leputain
Дата сообщения: 18.03.2005 10:24
разобрался в чем дело. на контроллере домена для клиентов требуется политикой цифровая подпись (when possible) и (always). а на воркстейшне 2000 в обоих случаях для сервера стоит disabled.
таким образом включаем на воркстейшене политикой цифровую подпись со стороны сервера when possible в enabled и всё собирается.

--

кстати, где-то эта проблема обсуждалась? что с контроллера домена нет доступа к шарам на рабочих станциях и пишет this account is not authorized to log in from this station. вот и решение нашлось.

--

теперь проверяю на нескольких серверах и рабочих станциях на предприятии через task scheduler. завтра лог сделаю. а потом и логпарсером буду парсить

Добавлено:

Цитата:
Windows Admin Scripting Little Black Book, Second Edition

уже ищу.

я вот что подумал. а может стоит дампы раскладывать в шаре по названиям, ну там sec, sys, app, frs, dns, ads, а там внутри по годам, а там по месяцам, а там уже сами дампы с именем машины в имени файла.

тогда встает вопрос, сможет ли это дело нормально (с поддиректориями) обрабатывать логпарсер? да хотя и не надо сильно..

Jovanotti
а ты вообще знаком с функциональностью logparser?

http://logparser.com/ -unofficial
http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx - official?

примеры
http://www.microsoft.com/technet/scriptcenter/tools/logparser/lpexamples.mspx
скачать
http://www.microsoft.com/downloads/details.aspx?FamilyID=890CD06B-ABF8-4C25-91B2-F8D975CF8C07&displaylang=en


чтобы понять, достаточно почитать идущий с ним *.chm
я когда скачал-прочел, поигрался немного с наспех сохраненными *.evt и прибалдел!

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

Добавлено:
[more=листинг]var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var ForAppending = 8;
var arrComputers = new Array("FUCK","ADMIN1","JUSEPPE","HOME");
var fsoDump = new ActiveXObject("Scripting.FileSystemObject");
var strShare = "\\\\HOME\\eventlog\\";
var fsoLog, textLog;
fsoLog = new ActiveXObject("Scripting.FileSystemObject");
textLog = fsoLog.OpenTextFile(".\\evtcollect.txt", ForAppending, true);
textLog.WriteLine(TimeStamp() + " EVTCOLLECT started");
for (i = 0; i < arrComputers.length; i++) {
var colPing = GetObject("winmgmts:\\\\.\\root\\CIMV2").ExecQuery("SELECT * FROM Win32_PingStatus WHERE StatusCode <> null AND Address = '" + arrComputers[i] + "'", // StatusCode <> null to collect from reacheable comp
"WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
var enumPing = new Enumerator(colPing);
for (; !enumPing.atEnd(); enumPing.moveNext()) {
var objPing = enumPing.item();
textLog.WriteLine(TimeStamp() + " " + objPing.Address + " reached");
var colLogs = GetObject("winmgmts:{(Security,Backup)}\\\\" + objPing.Address + "\\root\\CIMV2").ExecQuery("SELECT * FROM Win32_NTEventlogFile WHERE NumberOfRecords > 0", // NumberOfRecords > 0 to dump non-empty logs
"WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
var enumLogs = new Enumerator(colLogs);
for (; !enumLogs.atEnd(); enumLogs.moveNext()) {
var objLog = enumLogs.item();
var strBackup = objLog.Drive + objLog.Path + objPing.Address + "_" + TimeStamp() + "_" + objLog.FileName + ".evt";
objLog.BackupEventLog(strBackup);
objLog.ClearEventLog();
strBackup = "\\\\" + objPing.Address + "\\" + strBackup.replace(":", "$");
fsoDump.MoveFile(strBackup, strShare);
textLog.WriteLine(TimeStamp() + " " + objLog.FileName + " moved from " + strBackup + " to " + strShare);
}
}
}
textLog.WriteLine(TimeStamp() + " EVTCOLLECT finished");
textLog.Close();

function TimeStamp()
{
d = new Date();
var strNow = "";
strNow += LeadingZero(d.getFullYear()) + "_";
strNow += LeadingZero((d.getMonth() + 1)) + "_";
strNow += LeadingZero(d.getDate()) + "_";
strNow += LeadingZero(d.getHours()) + "_";
strNow += LeadingZero(d.getMinutes()) + "_";
strNow += LeadingZero(d.getSeconds());
return(strNow);
}

function LeadingZero(intNum)
{
if (10 > intNum) { intNum = "0" + intNum;}
return(intNum);
}[/more]

теперь ведет лог:
1 строчка - запуск
строчка про комп, что пингуется
строчка про каждый непустой журнал, что сброшен
строчка про другой комп, что пингуется
строчка про каждый непустой журнал, что сброшен
строчка - конец
Автор: leputain
Дата сообщения: 21.03.2005 13:21
хочу сказать, что я никуда не пропал, просто работаю.

сегодня посмотрел - за 3 дня с 3х компов с ПОЛНЫМ АУДИТОМ (pdc, termserv, desktop) набралось 110 мегов логов. сжались зипом в 9мегов.

буду их теперь парсить logparser'ом. мне же нужен материал на котором отрываться
Автор: Maksdd
Дата сообщения: 18.01.2006 21:48
Использую GFI LANguard Security Event Log Monitor 5. Очень хорошая программа. Понравилось, что есть возможность самоу создавать правила отбора событий, прога легко лечится ..... Но в неё меня не устраивает пара моментов. 1-й. Если настроить отсылку о каких-то событиях на эл. почту, то нельзя сделать так, чтобы события одного типа шли на одно мыло, события другого типа - на другое мыло. 2-й. Создавать отчеты(в том числе и свои собственные) можно только по Security Event Log. А мне часто необходимы отчеты по журналу System. Посоветуйте, другую программу с соответствующим функционало и удовлетворяющая названным моментам. Либо лечение GFI
Автор: SQL Navigator
Дата сообщения: 19.01.2006 10:09
[q][/q]

Что ж это за структура такая ? Вообще есть одна занимательная утилита - InTrust называется .
Автор: Jovanotti
Дата сообщения: 19.01.2006 11:13
Maksdd
Пользовал когда-то
EVENTMEISTER
EvenTrigger.Pro

Автор: Maksdd
Дата сообщения: 19.01.2006 18:21
Jovanotti
Спасибо. EvenTrigger.Pro попробовал - не совсем то, что надо. Нет возможности задавать свои отчеты. Нет возможности указать дефолтный имейл. Нет возможности собирать информацию с нескольких компов(?)

Буду пробовать EVENTMEISTER
Автор: sergiigray
Дата сообщения: 02.06.2006 15:56
где нибудь есть русскоязычное обсуждение LOgparser"а??
Автор: FreemanRU
Дата сообщения: 03.06.2006 15:50
sergiigray
Да....
Автор: sergiigray
Дата сообщения: 05.06.2006 13:41
ага. это я все почитал ужо. хотелось бы еще =)
Автор: slech
Дата сообщения: 01.02.2008 23:23
Event Log Monitoring
Автор: Nik2286
Дата сообщения: 02.03.2010 18:00
Добрый день! Мне как системному администратору поставили задачу бесплатно собирать логи со всех Windows XP машин (10 штук) и сервера Win2003SP1. Наладил такую вещь:

1) Microsoft Virtual Server 2005 R2 SP1, на нем крутится Cent OS 5.4 с демоном RSyslog, базой MySQL 5.x и системой phplogcon ver. 2.8.0, которая из базы печатает в веб-интерфейс.
2) На клиентах ставится бесплатная утилита Snare, которая через 514 порт связывается с линуксным демоном и передает ему логи.

Все нормально, но... невозможно читать русскоязычные логи. Причем в линуксе настроил и локаль на cp1251, и Апач на cp1251, и в базе кодировки настроил. Если дать запрос в базу из командной строки mysql-сервера, русские буквы нормальные. Если зайти тем же WebMin-веб-интерфейсом в базу MySQL на линуксной виртуалке, и там нормальные русские буквы. А когда читаешь то, что выводит phplogcon, там сплошные крякозебрики вместо русских букв.

Где можно подкрутить какие конфиги? Подскажите пожалуйста, уже неделю мучаюсь с этой кодировкой!
Автор: conrod78
Дата сообщения: 30.03.2010 10:05
А вот
Nagios +Windows EventLog agent кто-нибудь использовал?
Как стабильность?
Может есть лучше варианты?
Автор: forummember
Дата сообщения: 26.04.2010 14:42
Nik2286 попробуй как описано здесь
Автор: Road Runner J
Дата сообщения: 17.05.2010 23:02
Ещё так можно (бесплатно):

The syslog-ng Open Source Edition...
Сервак только под *nix, агент под win и *nix.
+
LogZilla...
Только под *nix, PHP фронтэнд. Геморрой с установкой.

Выглядит примерно так: Demo the latest version of PHP-Syslog-NG
(login/pass is demo/demo)
Автор: contrafack
Дата сообщения: 04.09.2011 16:28
Коллеги, посоветуйте софт, пожалуйста, который можно было с флешки запустить и собрать логи, ну скажем чтоб ручным не поковырять все логи, а просто отмечать какие разделы "интересуют" и он соберет или генерирует отчет.

Просто бывает ситуации, когда вызывают что то делать/чинить/включить - а хочется знать кто это делал (допустим какой то умный отключил терминальный сервер, но все говорят, что не приделах)
Автор: vlary
Дата сообщения: 04.09.2011 20:33
contrafack
Цитата:
Коллеги, посоветуйте софт
Так ведь весь софт собран в шапке, какие еще советы тебе нужны? Ставь, пробуй, и решай сам, подходит он тебе или нет.

Автор: zorven
Дата сообщения: 06.05.2016 10:48
Удобный софт для ускорения Event Log Manager - это Event Log Explorer работает как с локальными журналами событий, так и журналами других компьютеров сети, а также с файлами журналов в форматах EVT и EVTX, в том числе и напрямую. Event Log Explorer позволяет извлекать данные даже из поврежденных файлов.Доступ к журналам компьютеров сети и файлам осуществляется в один щелчок мыши с помощью дерева объектов Event Log Explorer.Более подробно можете ознакомиться http://***.com/rus/.

Страницы: 12

Предыдущая тема: Программирование мини-АТС


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.