Este plugin permite realizar una monitorización masiva del rendimiento en entornos de Windows con el servicio IIS integrado. Para más información visite la siguiente pagina web: http://pandorafms.com/index.php?sec=Library&sec2=repository&lng=en&action=view_PUI&id_PUI=279
6. 4 DOCUMENTACIÓN A ENTREGAR POR EL ÁREA QUE REQUIERE LA
MONITORIZACIÓN.
La información que debe entregar el área que requiere la monitorización es la siguiente:
• Requisitos de la máquina:
◦ Agente Pandora FMS instalado
• Una consola Powershell 2.0 para ejecutar el plugin. Por defecto viene instalada en sistemas
Windows Server 2008 R2 y Windows 7, pero debe ser descargada para versiones anteriores
de Windows. Powershell no es compatible con sistemas Windows XP SP1 e inferiores.
• Es necesario que el usuario con el que se ejecuta el agente de Pandora FMS, que es el
usuario que ejecutará el plugin, disponga de los siguiente permisos del sistema:
◦ Administrador Local
• La política de ejecución de scripts Powershell debe ser establecida como RemoteSigned o
inferior:
Set-ExecutionPolicy RemoteSigned
• Los diversos plugins obtendrán automáticamente la información de todos los contadores que
le hayamos especificado en una lista en el archivo counters.txt y generará un módulo por
cada uno en Pandora (Plugin PerfCounter). Así mismo, obtendrán información sobre el
estado de los elementos críticos de cara al servidor IIS (Plugin IIS Status), así como de los
registros de IIS y de los eventos generados que guarden relación con este (Plugin IIS Logs e
IIS Events)
Page 6
7. 5 MÓDULOS DEL PLUGIN
• Verificación de servicios
◦ Serv_IISADMIN
◦ Serv_MSFTPSVC
◦ Serv_NntpSvc
◦ Serv_SMTPSVC
◦ Serv_W3SVC
◦ Serv_HTTPFilter
• Verificación de estado en IIS
◦ AppPool Status – AppPoolName
◦ Site Status – SiteName
◦ WebURL Status – URL
• Verificación de eventos en IIS
◦ Event ID
• Verificación de logs en IIS
◦ Error 404 – IIS Hostname
◦ Error 500 – IIS Hostname
◦ Error 503 – IIS Hostname
◦ Error 504 – IIS Hostname
◦ Error 505 – IIS Hostname
• Verificación de Performance Counters
◦ Web Service(*)Total Bytes Sent
◦ Web Service(*)Bytes Sent/sec
◦ Web Service(*)Total Bytes Received
◦ Web Service(*)Bytes Received/sec
◦ Web Service(*)Total Bytes Transferred
◦ Web Service(*)Bytes Total/sec
◦ Web Service(*)Total Files Sent
Page 7
8. ◦ Web Service(*)Files Sent/sec
◦ Web Service(*)Total Files Received
◦ Web Service(*)Files Received/sec
◦ Web Service(*)Total Files Transferred
◦ Web Service(*)Files/sec
◦ Web Service(*)Current Anonymous Users
◦ Web Service(*)Current NonAnonymous Users
◦ Web Service(*)Total Anonymous Users
◦ Web Service(*)Anonymous Users/sec
◦ Web Service(*)Total NonAnonymous Users
◦ Web Service(*)NonAnonymous Users/sec
◦ Web Service(*)Maximum Anonymous Users
◦ Web Service(*)Maximum NonAnonymous Users
◦ Web Service(*)Current Connections
◦ Web Service(*)Maximum Connections
◦ Web Service(*)Total Connection Attempts (all instances)
◦ Web Service(*)Connection Attempts/sec
◦ Web Service(*)Total Logon Attempts
◦ Web Service(*)Logon Attempts/sec
◦ Web Service(*)Total Options Requests
◦ Web Service(*)Options Requests/sec
◦ Web Service(*)Total Get Requests
◦ Web Service(*)Get Requests/sec
◦ Web Service(*)Total Post Requests
◦ Web Service(*)Post Requests/sec
◦ Web Service(*)Total Head Requests
◦ Web Service(*)Head Requests/sec
Page 8
9. ◦ Web Service(*)Total Put Requests
◦ Web Service(*)Put Requests/sec
◦ Web Service(*)Total Delete Requests
◦ Web Service(*)Delete Requests/sec
◦ Web Service(*)Total Trace Requests
◦ Web Service(*)Trace Requests/sec
◦ Web Service(*)Total Move Requests
◦ Web Service(*)Move Requests/sec
◦ Web Service(*)Total Copy Requests
◦ Web Service(*)Copy Requests/sec
◦ Web Service(*)Total Mkcol Requests
◦ Web Service(*)Mkcol Requests/sec
◦ Web Service(*)Total Propfind Requests
◦ Web Service(*)Propfind Requests/sec
◦ Web Service(*)Total Proppatch Requests
◦ Web Service(*)Proppatch Requests/sec
◦ Web Service(*)Total Search Requests
◦ Web Service(*)Search Requests/sec
◦ Web Service(*)Total Lock Requests
◦ Web Service(*)Lock Requests/sec
◦ Web Service(*)Total Unlock Requests
◦ Web Service(*)Unlock Requests/sec
◦ Web Service(*)Total Other Request Methods
◦ Web Service(*)Other Request Methods/sec
◦ Web Service(*)Total Method Requests
◦ Web Service(*)Total Method Requests/sec
◦ Web Service(*)Total CGI Requests
Page 9
10. ◦ Web Service(*)CGI Requests/sec
◦ Web Service(*)Total ISAPI Extension Requests
◦ Web Service(*)ISAPI Extension Requests/sec
◦ Web Service(*)Total Not Found Errors
◦ Web Service(*)Not Found Errors/sec
◦ Web Service(*)Total Locked Errors
◦ Web Service(*)Locked Errors/sec
◦ Web Service(*)Current CGI Requests
◦ Web Service(*)Current ISAPI Extension Requests
◦ Web Service(*)Maximum CGI Requests
◦ Web Service(*)Maximum ISAPI Extension Requests
◦ Web Service(*)Current CAL count for authenticated users
◦ Web Service(*)Maximum CAL count for authenticated users
◦ Web Service(*)Total count of failed CAL requests for authenticated users
◦ Web Service(*)Current CAL count for SSL connections
◦ Web Service(*)Maximum CAL count for SSL connections
◦ Web Service(*)Total count of failed CAL requests for SSL connections
◦ Web Service(*)Total Blocked Async I/O Requests
◦ Web Service(*)Total Allowed Async I/O Requests
◦ Web Service(*)Total Rejected Async I/O Requests
◦ Web Service(*)Current Blocked Async I/O Requests
◦ Web Service(*)Measured Async I/O Bandwidth Usage
◦ Web Service(*)Total blocked bandwidth bytes.
◦ Web Service(*)Current blocked bandwidth bytes.
◦ Web Service(*)Service Uptime
Page 10
12. 7 MONITORIZACIÓN POR DEFECTO
La monitorización por defecto de sistemas Windows incluye:
• Monitorización de recursos del sistema.
• Monitorización de servicios.
• Monitorización de eventos y logs del sistema.
• Monitorización de contadores de rendimiento.
7.1. Monitorización general
Por nuestra experiencia en entornos Windows, hemos determinado que algunos módulos son
interesantes a tener en cuenta de cara a una monitorización, y por ello vienen incluidos por defecto
en el pandora_agent.conf.
Existen diversas plantillas de configuración y plugins, con distintos módulos por defecto en cada
caso, para cada tecnología, aparte de la plantilla por defecto.
7.2. Ajustes de configuración adicionales
NOTA: Es extremadamente importante tener en cuenta que los archivos de configuración pensados para
el plugin en WINDOWS deben estar editados y almacenados con retornos de carro tipo “WINDOWS” y
que si se usan retornos de carro tipo “UNIX” el plugin no funcionará adecuadamente.
Existen algunos chequeos específicos que tienen sus propios “tokens” de configuración, que se
describen a continuación:
7.2.1. Monitorización via Powershell
Partiendo de la base de que ya tenemos instalado y configurado tanto Pandora como el sistema a
monitorizar, vamos a explicar como obtener información sobre el estado del servidor IIS en general,
desde actividad de los diferentes servicios así como contadores a raiz de Powershell que mediante
diferentes cmdlets se encargará de realizar comprobaciones sobre elementos críticos de nuestros
sistemas.
Para este caso instalaremos tanto un agente software de Pandora como los diferentes plugins de
agente Powershell en la máquina en cuestión.
Un plugin de agente es en resumen, un script que se ejecuta en la máquina local donde está
instalado el agente software, y que extrae una información útil en formato XML que el agente va a
enviar luego al servidor de Pandora para ser procesado).
Page 12
13. Para hacer que el agente software de Pandora que tenemos instalado en nuestro servidor a
monitorizar ejecute dicho script, debemos editar el archivo de configuración del agente y hacer la
llamada al plugin mediante el token de configuración module_plugin.
Vamos a editar el archivo de configuración del agente de Pandora desde la consola de
administración de Pandora FMS. Para ello, antes deberemos haber activado la opcion remote_config
en el mismo archivo a 1. Este archivo está localizado por defecto en:
C:Archivos de programapandora_agentpandora_agent.conf
Partiendo de que podemos editar la configuración remotamente, nos dirigimos a la sección
Administración>Gestionar agentes y hacemos click en el icono de configuración remota del agente
que queramos configurar.
Listado de agentes en la vista de gestión de Pandora FMS
Introduciremos lo siguiente al final del archivo de configuración por ejemplo:
# Agent Plugins for IIS Monitoring
module_plugin "<ruta-powershell>powershell.exe" -command C:'<ruta-
plugin>Pandora_Plugin_IIS_Log_v1.0.ps1' -format W3C -offset 1 -i 300 -path
C:'<ruta-logs>' 2> regplugin_error.log
module_plugin "<ruta-powershell>powershell.exe" -command C:'<ruta-
plugin>Pandora_Plugin_IIS_Events_v1.0.ps1' -i 300 2> eventplugin_error.log
module_plugin "<ruta-powershell>powershell.exe" -command "C:'<ruta-
plugin>Pandora_Plugin_IIS_Status_v1.0.ps1' -select all -list C:'<ruta-
listado>URLs.txt'"
module_plugin "<ruta-powershell>powershell.exe" -command C:'<ruta-
plugin>Pandora_Plugin_PerfCounter_vx.y.ps1' -list C:'<ruta-listado>counters.txt'
2> counter_plugin.error
Page 13
16. Name : service
RequiredServices : {service1, service2}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
DisplayName : This is a Windows Service
DependentServices : {service3}
MachineName : .
ServiceName : service
ServicesDependedOn : {service1, service2}
ServiceHandle : SafeServiceHandle
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :
7.2.2. Monitorización del registro de IIS
Es posible habilitar, si es que no está habilitado ya, el registro de IIS, para guardar un log con todas
estas conexiones y su código de estado, en el lado del servidor, tal y como se especifica en los
artículos de Microsoft:
http://support.microsoft.com/kb/318380/es
http://support.microsoft.com/kb/313437/es
Se pueden definir módulos que comprueben el contenido de este registro y que reporte y genere
evento cada vez que encuentre información de estos códigos de error, que impliquen un corte en el
servicio.
Con este propósito se ha desarrollado un plugin Powershell al que, indicando la ruta de
almacenamiento de los logs de IIS o la ruta de un fichero log en concreto, buscará en el log
seleccionado o el log actualmente en uso, en todo intento de conexión contra los IIS, aquellos cuyo
código de estado HTTP haya resultado ser uno de los siguientes:
– 404: Not Found
– 500: Internal Server Error
– 503: Service Unavailable
– 504: Gateway Timeout
– 505: HTTP Version Not Supported
Page 16
17. Los parámetros de este plugin son los siguientes:
-i Interval in seconds to look for new events
-offset Timezone difference (W3C Format Only - Timestamp in W3C log entries is
displayed in GMT zone)
-format IIS Log Format (W3C, IIS, NCSA)
-file Path to a specific IIS log file (not to be used with the path parameter)
-path Path to the IIS logs directory (not to be used with the file paramenter)
Usage example for a server with a local time of GMT+1:
.Pandora_Plugin_IIS_Log_v1.0.ps1 -format W3C -i 300 -offset 1 -path
L:ExchangeLogsIISW3SVC1 2> plugin_error.log
Para el correcto funcionamiento del plugin cabe destacar que:
– El intervalo a utilizar deberá ser el mismo que el intervalo del agente.
– En caso de usar el formato de log W3C (por defecto), habrá que hacer uso del parámetro
offset para establecer la diferencia horaria de GMT a GMT+1 (1)
– En caso de usar el formato de log W3C, se deberán usar los campos del log por defecto. Lo
contrario implicará una modificación en el plugin a nivel de código.
– En caso de que no se creen logs diariamente (por defecto), sino que exista un único log, será
recomendable hacer uso del parámetro file en vez de path.
– En caso de que se creen logs diariamente (por defecto), horaria, semanal o mensualmente,
se deberá hacer uso del parámetro path en vez de file. En cualquier caso será preferible la
generación por defecto o la horaria para una mayor rapidez en la presentación de los datos
extraídos del log.
El problema persiste en que los códigos de estado HTTP específicos (xxx.x) sólo serán mostrados al
cliente en el navegador, ya que el registro de IIS únicamente guarda códigos de estado simple, con
lo que adicionalmente y tanto para el caso del control de estos códigos específicos.
Módulos generados por el plugin de logs de IIS
Page 17
18. A esto podemos sumar el hecho de que en determinadas implementaciones, el número de
conexiones diarias u horarias es tal, que el registro de conexiones de IIS es de una envergadura que
el plugin es incapaz de procesar lo suficientemente rápido para definir una monitorización sincrona,
con lo que su uso se encuentra más orientado al troubleshooting que a la monitorización.
7.2.3. Monitorización de eventos de IIS
Otra fuente importante de información de cara a la monitorización en entornos Windows es el
contenido de los logs de eventos.
Para el caso de IIS existen una serie de fuentes en los logs de eventos del sistema, de los cuales
podemos extraer todos los eventos relacionados con esta tecnología de forma masiva mediante un
plugin de agente Powershell, cuyo propósito es el de generar módulos por cada Event ID
relacionada con IIS, actualizándose sus valores a cada intervalo de ejecución del agente en caso de
que existan nuevas entradas en los logs de eventos con dichas IDs.
Sólo tenemos que pasarle al plugin el intervalo del agente como parámetro y éste hará el resto.
Módulos generados por el plugin de eventos de IIS
7.2.4. Monitorización de estado de IIS
Adicionalmente, haciendo uso de la consola de administración Powershell de IIS, podemos
fácilmente obtener información acerca del estado de los diferentes WebSites y Application Pools, así
como de las aplicaciones contenidas en estos, mediante un plugin de agente Powershell ejecutado
desde dicha interfaz. Además, es posible hacer chequeos web simples de forma masiva, pasando un
listado de URLs como parámetro de este plugin para generar módulos automáticamente reportando
el estado de cada URL y en caso de error, actualizar su descripción con el código de estado HTTP
resultante.
Page 18
19. Este plugin sin embargo no soporta el uso de POST contra dichas URLs, sólo solicitudes GET. Para
la simulación del proceso de autenticación y envío/recepción de correos se requiere la
implementación de los chequeos Goliat comentados anteriormente.
Los parámetros de este plugin son los siguientes:
-select all All operations are executed
-select server-status Only operations to check sites and application pools
are executed
-select web-status Only operations to check HTTP status codes from an
URL list are executed
-list Provides a path for a list with URLs to check (to use
with all and webstatus only)
Usage example: .Pandora_Plugin_IIS_v1.0.ps1 -select all -list URLs.txt 2>
plugin_error.log
Podemos elegir entre ejecutar todas las operaciones, o comprobar únicamente el estado de Websites
y Application Pools, o sólo los chequeos web.
Módulos generados por el plugin de estado IIS
Page 19
20. 8 EXPLICACIÓN DE LOS ARCHIVOS
– IIS Monitoring
– Powershell.exe
– counters.txt: contiene el listado de contadores de rendimiento a monitorizar. Este
archivo debe estar ubicado en la misma ruta donde se ejecuta el plugin de Powershell.
– URLs.txt: contiene el listado de URLs a monitorizar. Este archivo debe estar ubicado en
la misma ruta del plugin de Powershell.
– Pandora_Plugin_PerfCounter_vx.y.ps1: plugin para la monitorización completa de
contadores de rendimiento.
– Pandora_Plugin_IIS_Status_vx.y.ps1: plugin para la monitorización del estado de
WebSites, ApplicationPools y URLs de IIS.
– Pandora_Plugin_IIS_Logs_vx.y.ps1: plugin para la monitorización de los códigos de error
en los registros de IIS.
– Pandora_Plugin_IIS_Events_vx.y.ps1: plugin para la monitorización de los eventos del
sistema relacionados con IIS.
Page 20
22. 9.4. Verificación de eventos en IIS
La verificación de eventos de los servidores IIS se realiza mediante el plugin
Pandora_Plugin_IIS_Events.ps1 y puede ser aplicada en la tecnología específica de IIS, de forma
genérica.
Módulos generados:
• IIS Monitoring
– Event ID
Otra opción es la creación de módulos de agente software para la monitorización de algunos de los
Event IDs más importantes de esta tecnología
9.5. Verificación de logs en IIS
La verificación de logs de conexiones de los servidores IIS se realiza mediante el plugin
Pandora_Plugin_IIS_Logs.ps1 y puede ser aplicada en la tecnología específica de IIS, de forma
genérica, por cada servidor y por cada site.
Módulos generados:
• IIS Monitoring
– Error 404 – IIS Hostname
– Error 500 – IIS Hostname
– Error 503 – IIS Hostname
– Error 504 – IIS Hostname
– Error 505 – IIS Hostname
9.6. Verificación de Performance Counters
La verificación de contadores de rendimiento se realiza mediante el plugin
Pandora_Plugin_PerfCounter.ps1 y puede ser aplicada en diferentes políticas para diferentes
tecnologías, cada una con diferentes listados de contadores en función de qué queramos
monitorizar de cada una de dichas tecnologías.
A continuación mostramos el listado de contadores que se pueden monitorizar en el caso de IIS:
• IIS Monitoring
– Web Service(*)Total Bytes Sent
– Web Service(*)Bytes Sent/sec
– Web Service(*)Total Bytes Received
– Web Service(*)Bytes Received/sec
Page 22
23. – Web Service(*)Total Bytes Transferred
– Web Service(*)Bytes Total/sec
– Web Service(*)Total Files Sent
– Web Service(*)Files Sent/sec
– Web Service(*)Total Files Received
– Web Service(*)Files Received/sec
– Web Service(*)Total Files Transferred
– Web Service(*)Files/sec
– Web Service(*)Current Anonymous Users
– Web Service(*)Current NonAnonymous Users
– Web Service(*)Total Anonymous Users
– Web Service(*)Anonymous Users/sec
– Web Service(*)Total NonAnonymous Users
– Web Service(*)NonAnonymous Users/sec
– Web Service(*)Maximum Anonymous Users
– Web Service(*)Maximum NonAnonymous Users
– Web Service(*)Current Connections
– Web Service(*)Maximum Connections
– Web Service(*)Total Connection Attempts (all instances)
– Web Service(*)Connection Attempts/sec
– Web Service(*)Total Logon Attempts
– Web Service(*)Logon Attempts/sec
– Web Service(*)Total Options Requests
– Web Service(*)Options Requests/sec
– Web Service(*)Total Get Requests
– Web Service(*)Get Requests/sec
– Web Service(*)Total Post Requests
– Web Service(*)Post Requests/sec
– Web Service(*)Total Head Requests
– Web Service(*)Head Requests/sec
– Web Service(*)Total Put Requests
– Web Service(*)Put Requests/sec
– Web Service(*)Total Delete Requests
– Web Service(*)Delete Requests/sec
– Web Service(*)Total Trace Requests
– Web Service(*)Trace Requests/sec
– Web Service(*)Total Move Requests
– Web Service(*)Move Requests/sec
– Web Service(*)Total Copy Requests
– Web Service(*)Copy Requests/sec
– Web Service(*)Total Mkcol Requests
– Web Service(*)Mkcol Requests/sec
– Web Service(*)Total Propfind Requests
– Web Service(*)Propfind Requests/sec
– Web Service(*)Total Proppatch Requests
– Web Service(*)Proppatch Requests/sec
Page 23
24. – Web Service(*)Total Search Requests
– Web Service(*)Search Requests/sec
– Web Service(*)Total Lock Requests
– Web Service(*)Lock Requests/sec
– Web Service(*)Total Unlock Requests
– Web Service(*)Unlock Requests/sec
– Web Service(*)Total Other Request Methods
– Web Service(*)Other Request Methods/sec
– Web Service(*)Total Method Requests
– Web Service(*)Total Method Requests/sec
– Web Service(*)Total CGI Requests
– Web Service(*)CGI Requests/sec
– Web Service(*)Total ISAPI Extension Requests
– Web Service(*)ISAPI Extension Requests/sec
– Web Service(*)Total Not Found Errors
– Web Service(*)Not Found Errors/sec
– Web Service(*)Total Locked Errors
– Web Service(*)Locked Errors/sec
– Web Service(*)Current CGI Requests
– Web Service(*)Current ISAPI Extension Requests
– Web Service(*)Maximum CGI Requests
– Web Service(*)Maximum ISAPI Extension Requests
– Web Service(*)Current CAL count for authenticated users
– Web Service(*)Maximum CAL count for authenticated users
– Web Service(*)Total count of failed CAL requests for authenticated users
– Web Service(*)Current CAL count for SSL connections
– Web Service(*)Maximum CAL count for SSL connections
– Web Service(*)Total count of failed CAL requests for SSL connections
– Web Service(*)Total Blocked Async I/O Requests
– Web Service(*)Total Allowed Async I/O Requests
– Web Service(*)Total Rejected Async I/O Requests
– Web Service(*)Current Blocked Async I/O Requests
– Web Service(*)Measured Async I/O Bandwidth Usage
– Web Service(*)Total blocked bandwidth bytes.
– Web Service(*)Current blocked bandwidth bytes.
– Web Service(*)Service Uptime
Page 24