Búsqueda de sitios web

Monitoreo de grupos de aplicaciones para SharePoint usando PowerShell Script


Si se detienen los grupos de aplicaciones de SharePoint, se producirán interrupciones del tipo "Servicio no disponible" en su entorno de SharePoint. Si bien SCOM puede monitorear el estado del grupo de aplicaciones de la aplicación web SharePoint IIS, lo hace un poco más ruidoso con alertas y no inicia el grupo de aplicaciones automáticamente (cuando se detiene). Entonces, ¡abordemos este problema con la ayuda de PowerShell!

Este script no solo escanea el estado del grupo de aplicaciones IIS en los servidores front-end web de SharePoint, sino que también:

  • Registra el estado del grupo de aplicaciones si no está en estado Iniciado
  • Inicia automáticamente AppPool si está en estado detenido
  • Envía un correo electrónico de alerta al equipo de administración de SharePoint (¡o a quien lo haya configurado!)

Script de PowerShell para monitorear los estados del grupo de aplicaciones IIS:

Aquí está mi ingenioso script de PowerShell para monitorear grupos de aplicaciones en todos los servidores front-end web de SharePoint.


Import-Module WebAdministration

#Array to hold Server names - Change it to YOUR SharePoint front end servers
$WFEServers =("HS-WFE01", "HS-WFE02", "HS-WFE03")

#Log file location
$LogFile = "D:\Scripts\AppPool-Log.txt"

#Loop through each server and Check Application Pool status
foreach ($Server in $WFEServers)
{
    $ServerMgr = [Microsoft.Web.Administration.ServerManager]::OpenRemote($Server)

    #Get all Application Pools which are not in Started State
    $AppPoolColl = $ServerMgr.ApplicationPools | Where-Object {$_.State -ne "Started"}

    foreach($AppPool in $AppPoolColl)
    {
        #Get the time to Log
        $now = Get-Date -f "yyyy-MM-dd HH:mm:ss"

        #Log to file
        "`n Found Application Pool: $($AppPool.name) in stopped state at the server : $($Server) on $($now)" >> $LogFile
        "Trying to Start the application Pool...">> $LogFile
        
        #Try Starting the application Pool
        $AppPool.Start()
        Start-Sleep -s 10
        "Application Pool's current Status: $($AppPool.State)" >> $LogFile

        #Send Alert-Mail message
        $emailFrom = "AppPoolMonitor@crescent.com"
        # Use commas for multiple addresses
        $emailTo = "SPAdmins@crescent.com"
        $subject = "Application Pool: $($AppPool.Name) in stopped state in Server: $($Server) at $($now)"
        $body = "Hi SharePoint Team, `n `n The Application Pool $($AppPool.name) was in stopped state in server: $($server). `n`n We tried Re-starting it... Current State of the Application Pool: $($AppPool.State). `n`n Please take necessary actions if its not started !. `n `nThanks, `nSharePoint AppPool Monitoring Script."
        $smtpServer = "smtp.crescent.com" #IP or HOST Name of SMTP Server
        $smtp = new-object Net.Mail.SmtpClient($smtpServer)
        $smtp.Send($emailFrom, $emailTo, $subject, $body) 
    } 
}

Aquí está la alerta de ejemplo del script de monitoreo de IIS AppPool:

Programe este script de PowerShell en el programador de tareas de Windows en cualquier servidor de aplicaciones (¡o cualquier otro servidor servirá!) para escanear periódicamente el estado del grupo de aplicaciones, digamos una vez cada 5 minutos. El intervalo de ejecución se puede ajustar según la prioridad de su aplicación.

Aquí hay otra publicación sobre la programación de scripts de PowerShell utilizando el Programador de tareas de Windows: Crear una tarea programada para el script de PowerShell con el Programador de tareas de Windows

Artículos relacionados