必芁に応じおログを有効にしたす-Windowsシステムでのログ分析


特にWindowsにはこのための倚くの非自明なツヌルがあるため、ログを䜿甚した䟿利な䜜業に぀いお説明するずきが来たした。 たずえば、Log Parserは、単に眮き換えられないこずもありたす。


この蚘事では、 SplunkやELK Elasticsearch + Logstash + Kibanaなどの深刻な問題に぀いおは説明したせん。 私たちはシンプルで無料に焊点を圓おおいたす。


ログずコマンドラむン


PowerShellの前は、 findやfindstrなどのcmdナヌティリティを䜿甚できたした。 単玔な自動化に非垞に適しおいたす。 たずえば、1C 7.7亀換で゚ラヌをキャッチする必芁がある堎合、亀換スクリプトで単玔なコマンドを䜿甚したした。


findstr "Fail" *.log >> fail.txt 

fail.txtファむル内のすべおの亀換゚ラヌを受信できたした。 ただし、以前の゚ラヌに関する情報を取埗するなど、さらに䜕かが必芁な堎合は、forルヌプを䜿甚しお巚倧なスクリプトを䜜成するか、サヌドパヌティのナヌティリティを䜿甚する必芁がありたした。 幞い、PowerShellの登堎により、これらの問題は過去のものずなりたした。


テキストログを操䜜するための䞻芁なツヌルは、テキストファむルの内容を衚瀺するために䜿甚されるGet-Contentコマンドレットです。 たずえば、コン゜ヌルにWSUSサヌビスログを衚瀺するには、次のコマンドを䜿甚できたす。


 Get-Content -Path 'C:\Program Files\Update Services\LogFiles\SoftwareDistribution.log' | Out-Host -Paging 

ログの最埌の行を衚瀺するために、Tailパラメヌタヌがありたす。これは、Waitパラメヌタヌず共に、ログをオンラむンで芋るこずができたす。 コマンドを䜿甚しおシステムがどのように曎新されるかを芋おみたしょう。


 >Get-Content -Path "C:\Windows\WindowsUpdate.log" -Tail 5 -Wait 


Windowsアップデヌトの進行状況を監芖しおいたす。


ログで特定のむベントをキャッチする必芁がある堎合は、 Select-Stringコマンドレットが圹立ちたす。これにより、怜玢マスクに䞀臎する文字列のみを衚瀺できたす。 最新のWindowsファむアりォヌルロックをご芧ください。


 Select-String -Path "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" -Pattern 'Drop' | Select-Object -Last 20 | Format-Table Line 


私たちは誰が祖父にcraいかけようずしおいるのかを芋おいたす。


必芁に応じお、目的の前埌のログ行を調べお、Contextパラメヌタヌを䜿甚できたす。 たずえば、゚ラヌの3行埌ず3行前を衚瀺するには、次のコマンドを䜿甚できたす。


 Select-String 'C:\Windows\Cluster\Reports\Cluster.log' -Pattern ' err ' ‑Context 3 

䞡方の䟿利なコマンドレットを組み合わせるこずができたす。 たずえば、netlogon.logの45〜75行目を衚瀺するには、次のコマンドが圹立ちたす。


 Get-Content 'C:\Windows\debug\netlogon.log' | Select-Object -First 30 -Skip 45 

システムログは.evtx圢匏であり、それらを操䜜するための個別のコマンドレットがありたす。 クラシックマガゞン「アプリケヌション」、「システム」などを操䜜するには、 Get-Eventlogが䜿甚されたす。 このコマンドレットは䟿利ですが、他のアプリケヌションおよびサヌビスログを操䜜するこずはできたせん。 叀兞的な雑誌を含むあらゆる雑誌を扱うには、より汎甚的なオプションであるGet-WinEventがありたす。 さらに詳しく芋おいきたしょう。


䜿甚可胜なシステムログのリストを取埗するには、次のコマンドを実行できたす。


 Get-WinEvent -ListLog * 


利甚可胜な雑誌ずそれらに関する情報を衚瀺したす。


特定の雑誌を衚瀺するには、名前を远加するだけです。 たずえば、次のコマンドを䜿甚しお、システムログから最埌の20゚ントリを取埗したす。


 Get-WinEvent -LogName 'System' -MaxEvents 20 


システムログの最近の゚ントリ。


特定のむベントを取埗するには、ハッシュテヌブルを䜿甚するのが最も䟿利です。 PowerShellでのハッシュテヌブルの操䜜の詳现に぀いおは、Technet about_Hash_Tablesを参照しおください。


たずえば、むベントコヌド1および6013でシステムログからすべおのむベントを取埗したす。


 Get-WinEvent -FilterHashTable @{LogName='System';ID='1','6013'} 

特定のタむプのむベント譊告たたぱラヌを受信する必芁がある堎合、重芁床レベルによるフィルタヌを䜿甚する必芁がありたす。 次の倀が可胜です。



1぀のコマンドで耇数の重芁床の倀を持぀ハッシュテヌブルを収集するのはそれほど簡単ではありたせん。 システムログから゚ラヌず譊告を取埗する堎合は、 Where-Objectを䜿甚しお远加のフィルタヌ凊理を䜿甚できたす。


 Get-WinEvent -FilterHashtable @{LogName='system'} | Where-Object -FilterScript {($_.Level -eq 2) -or ($_.Level -eq 3)} 


システムログの゚ラヌず譊告。


同様に、むベントテキストおよび時間で盎接フィルタリングするこずにより、テヌブルを組み立おるこずができたす。


PowerShellのドキュメントで、syslogを操䜜するための䞡方のコマンドレットの動䜜の詳现をご芧ください。



PowerShellは䟿利で柔軟なメカニズムですが、構文の知識が必芁であり、耇雑な条件や倧量のファむルを凊理するには完党なスクリプトを曞く必芁がありたす。 しかし、玠晎らしいLog Parserを䜿甚しお、SQLク゚リだけで察凊するオプションがありたす。


SQLク゚リを介したログの操䜜


Utility Log Parserは、「れロ」の初めに生たれ、それ以来、公匏のグラフィカルシェルを取埗するこずに成功したした。 それにもかかわらず、その関連性は倱われず、ログを分析するための最もお気に入りのツヌルの1぀であるこずに倉わりはありたせん。 このナヌティリティは、Microsoftダりンロヌドセンタヌからダりンロヌドできたす。このナヌティリティのグラフィカルむンタヌフェむスは Technet ギャラリヌにありたす。 グラフィカルむンタヌフェむスに぀いおは、埌ほど、ナヌティリティ自䜓から始めたしょう。


Log Parserの可胜性に぀いおは、「 LogParser-珍しいこずをよく知っおいる」ずいう資料で既に説明しおいるので、具䜓的な䟋から始めたす。


たず、テキストファむルを扱いたす。たずえば、ファむアりォヌルでブロックされたRDP接続のリストを取埗したす。 この情報を取埗するには、次のSQLク゚リで問題ありたせん。


 SELECT extract_token(text, 0, ' ') as date, extract_token(text, 1, ' ') as time, extract_token(text, 2, ' ') as action, extract_token(text, 4, ' ') as src-ip, extract_token(text, 7, ' ') as port FROM 'C:\Windows\System32\LogFiles\Firewall\pfirewall.log' WHERE action='DROP' AND port='3389' ORDER BY date,time DESC 

結果を芋おみたしょう



Windowsファむアりォヌルのログを確認したす。


もちろん、結果のテヌブルでは、䞊べ替え、グルヌプ化など、䜕でもできたす。 SQLの想像力ず知識で十分です。


Log Parserは、他の倚くの゜ヌスでも優れた機胜を発揮したす。 たずえば、ナヌザヌがRDP経由でサヌバヌに接続した堎所を芋おみたしょう。


TerminalServices-LocalSessionManager \ Operationalログを䜿甚したす。


すべおのログでLog Parserがそのように動䜜するわけではありたせん-䞀郚のログにはアクセスできたせん。 この堎合、SystemRoot\ System32 \ Winevt \ Logs \ Microsoft-Windows-TerminalServices-LocalSessionManager4Operational.evtxからtemp\ test.evtxにログをコピヌするだけです。

このリク゚ストでデヌタを受け取りたす


 SELECT timegenerated as Date, extract_token(strings, 0, '|') as user, extract_token(strings, 2, '|') as sourceip FROM '%temp%\test.evtx' WHERE EventID = 21 ORDER BY Date DESC 


タヌミナルサヌバヌに誰がい぀接続したかを確認したす。


IISやExchangeなど、倚数のログファむルを凊理するためにLog Parserを䜿甚するず特に䟿利です。 SQLの機胜のおかげで、サヌバヌに接続するIOSおよびAndroidのバヌゞョンに関する統蚈たで、さたざたな分析情報を取埗できたす。


䟋ずしお、このク゚リで日ごずの文字数の統蚈を芋おみたしょう。


 SELECT TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'T'), 'yyyy-MM-dd')) AS Date, COUNT(*) AS [Daily Email Traffic] FROM 'C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking\*.LOG' WHERE (event-id='RECEIVE') GROUP BY Date ORDER BY Date ASC 

システムにOffice Webコンポヌネントがむンストヌルされおおり、Microsoftダりンロヌド センタヌ からダりンロヌドできる堎合は、出力に矎しい図を衚瀺できたす。



芁求を満たし、結果の画像を開きたす...



結果に感心したす。


Log Parserのむンストヌル埌、COMコンポヌネントMSUtil.LogQueryがシステムに登録されるこずに泚意しおください。 LogParser.exeの呌び出しだけでなく、他の䜿い慣れた蚀語を䜿甚しお、ナヌティリティ゚ンゞンに芁求を行うこずができたす。 䟋ずしお、ドラむブCの20個の最も容量の倧きいファむルを出力する簡単なPowerShellスクリプトを瀺したす。


 $LogQuery = New-Object -ComObject "MSUtil.LogQuery" $InputFormat = New-Object -ComObject "MSUtil.LogQuery.FileSystemInputFormat" $InputFormat.Recurse = -1 $OutputFormat = New-Object -ComObject "MSUtil.LogQuery.CSVOutputFormat" $SQLQuery = "SELECT Top 20 Path, Size INTO '%temp%\output.csv' FROM 'C:\*.*' ORDER BY Size DESC" $LogQuery.ExecuteBatch($SQLQuery, $InputFormat, $OutputFormat) $CSV = Import-Csv $env:TEMP'\output.csv' $CSV | fl Remove-Item $env:TEMP'\output.csv' $LogQuery=$null $InputFormat=$null $OutputFormat=$null 

SystemManager.ruポヌタルの資料Log Parser COM API Overviewでコンポヌネントの操䜜に関するドキュメントを理解できたす。


この機胜により、Log Parserのグラフィカルシェルである䜜業を容易にするためのいく぀かのナヌティリティを䜿甚できたす。 有料のものは考慮したせんが、無料のLog Parser Studioを玹介したす。



むンタヌフェむスログパヌサヌスタゞオ。


ここでの䞻な機胜はラむブラリです。これにより、フォルダを分散させるこずなく、すべおのリク゚ストを1か所に保持できたす。 たた、ク゚リを敎理するのに圹立぀既補の䟋がたくさんありたす。


2番目の機胜は、リク゚ストをPowerShellスクリプトに゚クスポヌトする機胜です。


䟋ずしお、最も倚くの手玙を送信するメヌルボックスの遞択がどのように機胜するかを芋おみたしょう。



最もアクティブなメヌルボックスの遞択。


この堎合、より倚くの皮類の雑誌を遞択できたす。 たずえば、「玔粋な」ログパヌサヌでは、入力デヌタのタむプに制限があり、Exchangeには別のタむプはありたせん。フィヌルドの説明を入力し、ヘッダヌを自分でスキップする必芁がありたす。 Log Parser Studioでは、必芁な圢匏をすぐに䜿甚できたす。


Log Parserに加えお、蚘事「 PowerShellではなくExcel 」で説明されおいるMS Excel機胜を䜿甚しおログを操䜜できたす。 ただし、Log Parserを䜿甚しおプラむマリマテリアルを準備し、ExcelのPower Queryで凊理するこずにより、最倧限の利䟿性を実珟できたす。


ログをシャベルで動かすためのツヌルを䜿甚したこずがありたすか コメントで共有したす。



Source: https://habr.com/ru/post/J351594/


All Articles