Показать полную графическую версию : Get-WinEvent
rough-84
07-08-2015, 17:44
Добрго времени суток.
Я новичек, в скиптах.
Стоит задача, построить график и отслеживать колличество определенных ошибок в windows application log, за исключением известных на данный момент.
Собсвенно строить график я буду в zabbix, но чтобы дать ему нужные данные я выбрал способ через скрипт powershell.
После небольшого изучения я немного разобрался и сделал что то типа этого:
$events1 = Get-WinEvent -LogName Application —FilterXPath "* [ System [Provider[@Name='Website'] and TimeCreated[timediff(@SystemTime) <=180000 ] ] ] [EventData[Data= 'text']] "
$events = Get-WinEvent -LogName Application —FilterXPath "* [ System [Provider[@Name='Website'] and TimeCreated[timediff(@SystemTime) <= 180000 ] ] ]"
$events.count - $events1.count
Повторюсь, так как я новичек в скриптах, это максимум что я смог придумать.
В теории, я должен был бы получить число, типа все события за последние 5 минут удовлетворяющие условию - события в которых так же есть фильтр на Data.
И вроде даже работает, но радость моя была недолгой, я не знаю как сделать фильтр EventData[Data= 'text'] если в сообщение много строк в Data, поидее можно прировнять к 1 из них, но что делать если это одна громадная строка и она не всегда одна и та же. Я хотел было поскать информацию, может можно применить что то типа Like, но не нашел ничего.
Может кто подскажет чего ?
1) http://habrahabr.ru/post/215509/ - Zabbix может работать с EventLog и поддерживает regex в Template.
2) Xpath поддерживает только 3 функции: position, Band, timediff. Ограничения - Consuming Events (https://msdn.microsoft.com/library/windows/desktop/dd996910(v=vs.85).aspx)
Поэтому использовать фильтр,который получает все сообщения , а фильтровать по Message можно уже с помощью стандартных средств.
Get-WinEvent ...... | Where {$_.Message -match "Шаблон"}
rough-84
10-08-2015, 10:24
Спасибо, похоже то, что надо, буду тестировать.
А что касается zabbix, то да он то умеет работать с логами, но он не пишет в базу поля из "Data", либо я не знаю как это сделать. В моём случае известные ошибки это не - коды, а некоторые строчки из "Data".
rough-84
10-08-2015, 11:53
Сдается мне дело было не в бабине... :) Скрипт хорошо работает на тестовом ПК и выполняет поставленную задачу. К сожалению когда дело дошло до боевого теста, ничего не вышло. Покопавшись, я понял что фильтр Where {$_.Message -match "Шаблон"} не работает. Начал разбираться почему и понял что у меня запрос:
Get-WinEvent -LogName Application —FilterXPath "* [System [Provider[@Name='Website'] and (Level=2) and TimeCreated[timediff(@SystemTime) <= 1800000 ]]] " | fl
не забирает полное сообщение
TimeCreated : 8/10/2015 11:22:29 AM
ProviderName : Website
Id : 0
Message :
TimeCreated : 8/10/2015 11:15:22 AM
ProviderName : Website
Id : 0
Message :
Есть подозрение это из за того что собщение слишком велико, т.к меняя в запросе [Provider[@Name='Website'] на другие ошибки, они отображаются корректно и филтр так же работает.
http://blogs.msdn.com/b/monad/archive/2005/11/30/498432.aspx
Вывод функции из ссылки выше:
using-culture en-us {Get-WinEvent -LogName Application —FilterXPath "* [System [Provider[@Name='Website'] and (Level=2) and TimeCreated[timediff(@SystemTime) <= 1800000 ]]] " | fl}
rough-84
13-08-2015, 15:00
У меня кончился энтузиазм, пробавал и по примеру сделать и через другие языки програмирования, в результате везде поде Message оказывается пустым.
по примеру сделал:
Function Using-Culture (
[System.Globalization.CultureInfo]$culture = (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}"),
[ScriptBlock]$script= (throw "USAGE: Using-Culture -Culture culture -Script {scriptblock}")
) {
$OldCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
trap
{
[System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
}
[System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
Invoke-expression "$script"
[System.Threading.Thread]::CurrentThread.CurrentCulture = $OldCulture
}
Using-Culture -Culture 'en-US' -Script {
Get-WinEvent -LogName Application —FilterXPath "* [ System [Provider[@Name='Website'] and TimeCreated[timediff(@SystemTime) <= 1800000 ] ] ]" | fl}
Выводит:
TimeCreated : 8/13/2015 2:15:35 PM
ProviderName : Website
Id : 0
Message :
TimeCreated : 8/13/2015 2:09:41 PM
ProviderName : Website
Id : 0
Message :
TimeCreated : 8/13/2015 2:07:30 PM
ProviderName : Website
Id : 0
Message :
Приведите скриншот XML вида из EventLog. Попробовать выставить в Региональных настройках на сервер Английский язык, вместо Русского.
rough-84
13-08-2015, 18:08
До тестов на сервере, русского языка не использовал в принципе. Да и странно это как то, в Data нет русских символов. К тому же если делать фильтр на другие ошибки, например "SchedulerService", выводит нормально полное собщение, правда оно раза в 3 меньше по объему.
Ошибки все примерно одного содержания, а значит и размера строк
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Website" />
<EventID Qualifiers="0">0</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2015-08-09T20:19:23.000000000Z" />
<EventRecordID>32734394</EventRecordID>
<Channel>Application</Channel>
<Computer>BZVR012</Computer>
<Security />
</System>
- <EventData>
<Data>Exception Information: Fy.Common.RethrowException: FY_COMMON_EXCEPTION_EXTENSIONS_RETHROW_EXCEPTION_MESSAGE ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it ***:7400 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at System.Net.Sockets.TcpClient.Connect(IPEndPoint remoteEP) at System.Net.Sockets.TcpClient.Connect(IPAddress address, Int32 port) at Fy.Common.Communications.SerialExchangeClient.ProviderConversation(SerialExchangeRequest request) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Fy.Common\Communications\SerialExchangeClient.c s:line 70 --- End of inner exception stack trace --- at Fy.Google.Translate.Proxy.TranslateProxyClient.Translate(String[] text, String source, String target, Boolean cacheOnly) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Fy.Google.Translate\Proxy\TranslateProxyClient. cs:line 71 at Fy.Ion.IonRecord.Translate(TranslateProxyClient client, ICollection`1 result, Boolean cacheOnly) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Fy.Ion\IonRecord.cs:line 192 at Fy.Ion.IonRecord.Translate(TranslateProxyClient translator, Boolean cacheOnly) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Fy.Ion\IonRecord.cs:line 229 at ChowX.Models.Product2DetailsViewModel.LoadAssortment(ContainerContext dbContext, TranslateProxyClient translator) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Www\Models\Product2DetailsViewModel.cs:line 505 at ChowX.Models.Product2DetailsViewModel.<>c__DisplayClass38.<.ctor>b__3() in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Www\Models\Product2DetailsViewModel.cs:line 64 at Fy.Web.Utilites.Perfmon.Measure[T](String header, Func`1 func) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Fy.Web\Utilites\Perfmon.cs:line 18 at ChowX.Models.Product2DetailsViewModel..ctor(ContainerContext dbContext, InterimRecordInt64 instance, DataRow source, Guid userId, FyHttpRequestContext requestContext, TranslateProxyClient translator, String[] urlReferrerSegments) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Www\Models\Product2DetailsViewModel.cs:line 63 at ChowWww.Controllers.ProductController.Product(Nullable`1 id) in c:\TeamCity\buildAgent\workNew\f174505babd3d462\Dist\Www\Controllers\ProductController.cs:line 96 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) Request information: AbsolutePath: /product/444403916 AbsoluteUri: http://.com/product/444403916 LocalPath: /product/444403916 Authority: .com HostNameType: Dns IsDefaultPort: True IsFile: False IsLoopback: False PathAndQuery: /product/444403916 Segments: System.String[] IsUnc: False Host: .com Port: 80 Query: Fragment: Scheme: http OriginalString: http://.com:80/product/444403916 DnsSafeHost: .com IsAbsoluteUri: True UserEscaped: False UserInfo: User IP address: IP URL Referrer: AbsolutePath: /catalog/sp AbsoluteUri: http://.com/catalog/sp LocalPath: /catalog/sp Authority: .com HostNameType: Dns IsDefaultPort: True IsFile: False IsLoopback: False PathAndQuery: /catalog/sp Segments: System.String[] IsUnc: False Host: .com Port: 80 Query: Fragment: Scheme: http OriginalString: http://.com/catalog/sp DnsSafeHost: .com IsAbsoluteUri: True UserEscaped: False UserInfo: Cookies: Name: Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 2 HasKeys: False Values: 2 Name: ab_test_i_name Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: add_color_size HasKeys: False Values: add_color_size Name: ab_test__variant Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1 HasKeys: False Values: 1 Name: PageSize Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 20 HasKeys: False Values: 20 Name: OpenProductsInNewWindow Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: True HasKeys: False Values: True Name: GuestGUID Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 120ca978-7d12-47a9-ac80-f9ff626de1b4 HasKeys: False Values: 120ca978-7d12-47a9-ac80-f9ff626de1b4 Name: viewcurrency Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: RUB HasKeys: False Values: RUB Name: user_screen_resolution Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1366 HasKeys: False Values: 1366 Name: __utma Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 171566968.1168299203.1428427342.1439147293.1439149843.30 HasKeys: False Values: 171566968.1168299203.1428427342.1439147293.1439149843.30 Name: __utmz Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 171566968.1439147293.29.27.utmcsr=yandex|utmccn=12800657_rsya__obshee|utmcmd=cpc|utmctr=купить %20куртку%20женскую%20недорого|utmcct=904546848_3483162262_купить%20РєСѓС ЂС‚РєСѓ%20женскую%20недорого HasKeys: True Values: 171566968.1439147293.29.27.utmcsr=yandex%7cutmccn%3d12800657_rsya__obshee%7cutmcmd%3dcpc%7cutmctr%3d купить%2520куртку%2520женскую%2520недорого%7cutmcct%3d904546848_348316226 2_купить%2520куртку%2520женскую%2520недорого Name: cross-test Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 2 HasKeys: False Values: 2 Name: ab-test-size-tables Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1 HasKeys: False Values: 1 Name: aprt_last_partner Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: yandex HasKeys: False Values: yandex Name: __utmv Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 171566968.|3=Affilated=Actionpay=1^4=my=51446912=1^5=userID=1168299203=1 HasKeys: True Values: 171566968.%7c3=Affilated%3dActionpay%3d1%5e4%3dmy%3d51446912%3d1%5e5%3duserID%3d1168299203%3d1 Name: _EmailSubscription Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: HasKeys: False Values: Name: crossss Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: DDE43B7229E04054B7DC9555C47B6438 HasKeys: False Values: DDE43B7229E04054B7DC9555C47B6438 Name: ab_test_group_id_informers Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1 HasKeys: False Values: 1 Name: crossss_basket Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 055e6646-2bc0-468a-8184-a5990f3aa8a9 HasKeys: False Values: 055e6646-2bc0-468a-8184-a5990f3aa8a9 Name: _Utm Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: utm_source|yandex||utm_medium|cpc||utm_campaign|12800657_rsya__obshee||utm_content|904546848_3483162 262_купить куртку женскую недорого||utm_term|купить куртку женскую недорого HasKeys: False Values: utm_source%7cyandex%7c%7cutm_medium%7ccpc%7c%7cutm_campaign%7c12800657_rsya__obshee%7c%7cutm_content %7c904546848_3483162262_купить+куртку+женскую+недорого%7c%7cutm_term%7cРє упить+куртку+женскую+недорого Name: Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: http://.com/product/437227288?source=actionpay&apclick=80efc8cd-b7f3-7ccf-f048-014d04e1c8c9&apsource=51251&utm_medium=pp&utm_source=actionpay&utm_campaign=start_12_14 HasKeys: True Values: http%3a%2f%.com%2fproduct%2f437227288%3fsource=actionpay&apclick=80efc8cd-b7f3-7ccf-f048-014d04e1c8c9&apsource=51251&utm_medium=pp&utm_source=actionpay&utm_campaign=start_12_14 Name: location Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: RU HasKeys: False Values: RU Name: %24%24test_cookie_enabled%24%24 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: true HasKeys: False Values: true Name: __utmc Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 171566968 HasKeys: False Values: 171566968 Name: Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 2 HasKeys: False Values: 2 Name: Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: step_3_text_1 HasKeys: False Values: step_3_text_1 Name: Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1 HasKeys: False Values: 1 Name: kameleoonPersonalizations Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: true/1439147294107 HasKeys: False Values: true%2f1439147294107 Name: kameleoonVisit Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: ggsoo4sxz6mmfllg/0/1439151583254/20150708/0/true HasKeys: False Values: ggsoo4sxz6mmfllg%2f0%2f1439151583254%2f20150708%2f0%2ftrue Name: kameleoonPersonalizationInactive-14225 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: true HasKeys: False Values: true Name: __utmb Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 171566968.11.9.1439151228799 HasKeys: False Values: 171566968.11.9.1439151228799 Name: kameleoonPersonalizationInactive-14260 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: true HasKeys: False Values: true Name: _ym_visorc_18296986 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: w HasKeys: False Values: w Name: Basket Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 0|0 HasKeys: False Values: 0%7c0 Name: DreamBoxQuantity Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 0| HasKeys: False Values: 0%7c Name: __utmt Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: 1 HasKeys: False Values: 1 Name: kameleoonExperiment-14260 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: undefined/undefined/true HasKeys: False Values: undefined%2fundefined%2ftrue Name: kameleoonExperiment-14225 Path: / Secure: False Shareable: False HttpOnly: False Domain: Expires: 01.01.0001 0:00:00 Value: undefined/undefined/true HasKeys: False Values: undefined%2fundefined%2ftrue</Data>
</EventData>
</Event>
В PowerShell ISE,какие результаты?
$orgCulture = Get-Culture
[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"
Get-WinEvent -LogName Application —FilterXPath "* [System [Provider[@Name='Website'] and (Level=2) and TimeCreated[timediff(@SystemTime) <= 1800000 ]]] "
[System.Threading.Thread]::CurrentThread.CurrentCulture = $orgCulture
и
[System.Threading.Thread]::CurrentThread.CurrentCulture = New-Object "System.Globalization.CultureInfo" "en-US"
Get-WinEvent -LogName Application —FilterXPath "*[System [Provider[@Name='Website'] and (Level=2) and TimeCreated[timediff(@SystemTime) <= 1800000 ]]] " -MaxEvent 1 | Select -Exp Properties
[System.Threading.Thread]::CurrentThread.CurrentCulture = $orgCulture
rough-84
13-08-2015, 18:46
http://i11.pixs.ru/storage/6/5/9/1jpg_5483005_18398659.jpg
http://i11.pixs.ru/storage/6/6/5/2jpg_8201226_18398665.jpg
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.