IISログを使用してアプリケーションプールの再起動時間を確認する方法


  1. IISログの場所特定: IISログは通常、以下のパスに保存されます: C:\inetpub\logs\LogFiles。このディレクトリ内には、各ウェブサイトまたはアプリケーションに対して別々のディレクトリがあります。

  2. ログファイルの確認: アプリケーションプールの再起動時間を確認するためには、最新のログファイルを開きます。ログファイルはテキスト形式であり、通常は日付ごとに分割されています。

  3. 再起動イベントの検索: ログファイル内で、アプリケーションプールの再起動イベントを検索します。再起動イベントのエントリは通常、"Application Pool 'アプリケーションプール名' is being automatically recycled due to a series of failures." や "A worker process with process id 'プロセスID' serving application pool 'アプリケーションプール名' has requested a recycle because it reached its private bytes memory limit." などのメッセージと関連付けられています。

  4. 再起動時間の抽出: 再起動イベントのエントリから、再起動の日時を抽出します。日時は通常、エントリのタイムスタンプで確認できます。

コード例:

PowerShellを使用して、IISログからアプリケーションプールの再起動時間を抽出する例を示します。

$logPath = "C:\inetpub\logs\LogFiles\"
$logFiles = Get-ChildItem -Path $logPath -Filter "u_ex*.log" | Sort-Object -Property LastWriteTime -Descending
$latestLogFile = $logFiles[0].FullName
$pattern = "Application Pool '([^']+)' is being automatically recycled due to a series of failures."
$restartTimes = Select-String -Path $latestLogFile -Pattern $pattern | ForEach-Object {
    $logLine = $_.Line
    $timestamp = $logLine.Substring(0, 19)  # Assuming the timestamp is in the first 19 characters
    $poolName = $matches[1]

    [PSCustomObject]@{
        Timestamp = $timestamp
        PoolName = $poolName
    }
}
$restartTimes

この例では、PowerShellを使用して最新のログファイルから再起動時間を抽出し、タイムスタンプとアプリケーションプールの名前を表示します。