Post on 03-Jan-2015
Iván GonzálezMicrosoft MVP – Windows
Server - IISivan@plainconcepts.com
IIS 6.0Administración Avanzada
Agenda
• Reciclado de aplicaciones
• Diagnóstico de errores HTTP 500
• Trazado y auditoría con Windows Server 2003 SP1
• LogParser
Reciclado de aplicaciones
Cambios en la Arquitectura• Objetivo: Lograr el completo aislamiento entre
núcleo del servidor Web y las aplicaciones Web
• La funcionalidad en INETINFO se divide:– HTTP.sys: escucha las peticiones en modo kernel y
las enruta– W3SVC: configuración y gestión de procesos– W3Core: donde se ejecutan las aplicaciones Web
• Varias dll’s W3Core se cargan dentro de procesos W3WP.exe
• Dos modelos de procesos– Modo de aislamiento de Worker Processes– Modo de aislamiento de IIS 5.0
Reciclado de aplicaciones
El modelo de procesos de IIS 5.0
INETINFO.exe
metabase ftp, smtp, nntp
W3SVCW3SVC
Winsock
Filtros ISAPI
In-proc
Apps
ASP.NET
.Net App .Net App DomainDomain
.Net App .Net App DomainDomain
.Net App Domain
ASPNET_WP.exe
Pooled OOP Apps
DLLHOST.exe
Isolated Isolated OOP AppOOP App
DLLHOST.exe
Isolated Isolated OOP AppOOP App
DLLHOST.exe
Isolated OOP App
DLLHOST.exe
Modo usuario
Modo kernel
Reciclado de aplicaciones
Modo de aislamiento de Worker Processes en IIS 6.0
INETINFO.exeINETINFO.exe
metabase
ftp, smtp, nntp
Modo usuario
Modo kernel
HTTP.SYS
W3SVC
SVCHOST.exeSVCHOST.exe
W3
Co
nfi
g M
gr
W3
Pro
ce
ss
Mg
r
W3CoreW3Core
Filtros ISAPI
W3WP.exe
Apps
(no OOP)
Application Pool
W3CoreW3Core
Filtros ISAPI
W3WP.exe
Apps
(no OOP)
Application Pool
W3CoreW3Core
W3WP.exe
Application Pool
ASP.net Apps
.Net App .Net App DomainDomain
.Net App .Net App DomainDomain
.Net App Domain
Reciclado de aplicaciones
Application Pools• Podemos tener uno o
más– Cada uno servidor por uno
o más W3WP.exe– Cada W3WP.exe solo sirve
un pool– Peticiones redirigidas al
pool por HTTP.sys
• Podemos aislar las aplicaciones Web basándonos:– En sitio/cliente– En la funcionalidad– En la fiabilidad
Reciclado de aplicaciones
Reciclado periódico de los procesos
• Qué es– Reiniciamos las aplicaciones
Web basándonos en:• El tiempo que llevan
funcionando• El número de peticiones• En un calendario• En el consumo de memoria• Bajo demanda
• Porqué usarlo– Prevenir que aplicaciones
defectuosas afecten al sistema
– Refrescar las aplicaciones para aumentar la disponibilidad
Reciclado de aplicaciones
Arquitectura con autorecuperación
• Qué es– Diseñada para detectar
bloqueos de threads dentro de W3WP.exe
• Cómo funciona– W3SVC consulta cada
W3WP.exe– El proceso tiene un tiempo
para responder– Si no responde en ese tiempo:
• Matar el proceso, publicar un evento y lanzar uno nuevo (por defecto)
• IIS puede ser configurado para realizar una acción sobre el proceso
Reciclado de aplicaciones
Detección de fallos y recuperación
• Detección de fallos– W3SVC detecta “casques” en
W3WP.exe– W3SVC lanzará un nuevo
W3WP.exe si es necesario– Las peticiones son encoladas
por HTTP.sys mientras se crea el nuevo W3WP
– Resultado: no existe interrupción en el servicio
• Protección– Solo se permiten x fallos en y
minutos– El pool será detenido si se
superan estos valores (error 503 para las peticiones)
Reciclado de aplicaciones
Rendimiento• Web Garden
– Application pool con más de un Worker Process
• Afinidad de procesador– Vincular los procesos de un Application pool a uno o más
procesadores
• Se hace caché de las respuestas en HTTP.sys (kernel)• Se liberan los procesos después de un tiempo de
inactividad• Se relanzarán cuando sea necesario (peticiones)• Esto no implica que la aplicación no esté activa!!
demo
Diagnóstico de errores HTTP 500
• Introducción a los errores HTTP 500• Varios tipos de errores 500• Diagnóstico
Errores HTTP 500
• El protocolo HTTP está formado por varios mensajes– 100: Información– 200: OK– 300: Redirección– 400: Error del cliente– 500: Error del servidor
• El RPF para el protocolo HTTP– http://www.w3.org/Protocols/rfc2616/rfc2616.
html
Errores HTTP 500 (II)
• Los errores HTTP 500 devuelven una página genérica al cliente (500-100.asp)
• Excepciones:– 500.16– 500.19
• Internet Explorer a menudo reemplazará este error– Deshabilitar los mensajes descriptivos de
error en Internet Explorer• Opciones de Internet, Opciones Avanzadas,
Examinar
Errores HTTP 500 (III)
• Algunas herramientas y logs ayudan a solucionar los problemas de errores HTTP 500:– Los logs de IIS: %windir%\system32\logfiles– Visor de sucesos– Monitor de red– WFetch: Q284285– IIS Debug ToolKit 1.1– Herramientas de depuración para Windows
HTTP 503 Service Unavailable
• El servidor es actualmente incapaz de manejar la petición debido a una sobrecarga temporal o a mantenimiento del servidor. Las herramientas de depuración de IIS y el monitor de rendimiento son útiles para solucionar este problema.
• Posibles causas del problema– Problemas de conectividad a la Base de Datos– Más peticiones de las esperadas están llegando
al servidor– El App Pool está offline
HTTP 500.100
• El mensaje de error:HTTP 500.100 – Internal Server Error – ASP Error
• Si deshabilitamos los errores de Internet Explorer:
• Podría ser un problema de permisos que podemos solucionar con regmon o filemon
HTTP 500.100 (II)
• Con los mensajes de error de Internet Explorer deshabilitados podríamos obtener
• Este error está documentado en el artículo 278604
• La solución fue registrar de nuevo el componente (dll)
demo
Trazado y auditoría con Windows Server 2003 SP1
• Nueva instrumentación en IIS6 SP1– Enhanced Request-based Tracing– Currently-executing Requests Tracing– Auditoría de la Metabase
• Uso de la nueva instrumentación– Cuelgues o fallos en peticiones– Problemas de Autenticación/Autorización– ¿Qué se está ejecutando actualmente?– ¿Quién cambió qué, cuándo y cómo?
Enhanced Request-based Tracing
Introducción• OBJETIVO: seguir las peticiones a través de IIS y
en ASP/ASP.NET a través de eventos de traza• CÓMO: Eventos de traza ETW en 4 proveedores
principales– IIS: WWW Server– IIS: W3 Isapi– IIS: Active Server Pages (ASP)– ASP.NET Events
• PORQUÉ usar ETW? – Mecanismo de trazado general de alto rendimiento– Configuración dinámica – no es necesario reiniciar
para reconfigurar– SIN VOLCADOS!!
Enhanced Request-based Tracing
Un vistazo a ETW
Provider C
Provider B
Provider A
Trace files
Controller
…
Consumer
Real time delivery
Logged Events
Session 1
Buffers
Session 2 Session 64
Event Tracing Sessions
Events
EventsEnable/DisableSession Control
Consumer
Enhanced Request-based Tracing
IIS y ETW
IisTraceIisTrace
SessionSession
ETW InfrastructureETW Infrastructure
W3wp.exeW3wp.exe
Isapi filterIsapi filterIsapi filterIsapi filter
Asp.dllAsp.dll
Some COMSome COMobjobj
Some COMSome COMobjobj
C:\Logman start IisTrace –C:\Logman start IisTrace –pf MyProvs.txt -etspf MyProvs.txt -ets
Tracing enabledTracing enabled
Tracing enabledTracing enabled
New requestNew request
REQ_START
REQ_STARTFILTER_START
FILTER_STARTFILTER_ENDFILTER_END
ASP_REQ_STARTASP_REQ_START
COM_OBJ_START
COM_OBJ_START
COM_OBJ_END
COM_OBJ_ENDASP_REQ_ENDASP_REQ_END
REQ_END
REQ_END
C:\logman stop IisTrace -etsC:\logman stop IisTrace -ets
IisTrace.etlIisTrace.etl
Enhanced Request-based Tracing
Uso de trazas• Controlar las trazas
– Logman.exe– Perfmon Logs & Alerts service– APIs de la plataforma no manejadas
• Consumir trazas– Tracerpt.exe: consume ETL’s, informes
de salida y csv’s– Excel para ver csv’s– LogParser 2.2: lee ETL’s
Enhanced Request-based Tracing
IIS WWW Server Provider• Los eventos cubren
– Cuando W3WP.exe recoge la petición – a –
– Cuando W3WP.exe termina con la petición
– EXCLUYE:• El manejo de ISAPI ->
cubierto por IIS: W3 Isapi & proveedores ISAPI individuales (ASP/ASP.net)
• Flags: 9 en total, 7 para filtrado
• Verbosidad:– 0. GENERAL– 1. Errores críticos– 2. Errores– 3. Advertencias– 4. Información– 5. Verbose
Flag # Descripción
UseUrlFilter 0x1 Filtras URL’s específicas
IISAuthentication 0x2 Eventos autenticación
IISSecurity 0x4 Eventos autorización
IISFilter 0x8 Eventos filtros ISAPI
IISStaticFile 0x10 Manejador de ficheros estáticos
IISCGI 0x20 Eventos relacionados con CGI’s
IISCompression 0x40 Compresión estática & dinámica
IISCache 0x80 Eventos relacionados con la caché
IISAll 0xFE Todos los eventos
Enhanced Request-based Tracing
Trazar URLS específicas • ¿Qué es?
– La posibilidad de trazar solo URLs específicas en vez de todas las URLs
• ¿Cómo usarlo…?1. Establecer la propiedad TraceUriPrefix del sitio
2. Establecer el flag UseUrlFilter en IIS: WWW Server provider
3. NOTA: se DEBE usar el proveedor IIS: WWW Server con el flag UseUrlFilter establecido para filtrar eventos ASP & ASP.net por URL.
Adsutil set w3svc/1/Adsutil set w3svc/1/TraceUriPrefixTraceUriPrefix = “/*.aspx” = “/*.aspx”
““IIS: WWW Server”IIS: WWW Server” 0x00000000x000000011 0 0
““IIS: Active Server Pages (ASP)”IIS: Active Server Pages (ASP)” 0xFFFFFFFF 50xFFFFFFFF 5
Enhanced Request-based TracingResolviendo problemas de Autenticación/Autorización
• ANTES: montones de problemas alrededor…– ¿Se autenticó el usuario correctamente?– ¿Es el ID del usuario anónimo correcto?– ¿Qué UID se está usando para acceder al
contenido?– ¿Dónde se le está denegando el acceso al usuario?
• CÓMO: usar flags para el diagnóstico:
– Explicación:• 0x00000004 => Eventos de Autenticación• 0x00000002 => Eventos de Seguridad/Autorización• Verbosity = 5 => Todos los eventos anteriores
““IIS: WWW Server”IIS: WWW Server” 0x00000000x000000066 55
Enhanced Request-based Tracing
IIS: Active Server Pages Provider (ASP)• ¿De QUÉ se hace log?
– Encolado/Desencolado: ¿cuanto tiempo permaneció en la cola?
– Tiempo de parseo y compilación– Configuración de los objetos intrínsecos a la
petición– Eventos en tiempo de ejecución. OnApplication,
etc.– Ejecución de Global.asa– Tiempos de objetos COM
• Creación de objetos• Llamada a métodos• Llamada a GetObject
• ¿PORQUÉ usarlo?– La mayoría de las llamadas a soporte -> cuelgues
en páginas ASP – Método actual para la resolución -> volcado del
proceso INETINFO o dllhost.exe, envío a PSS.
Currently Executing Requests
Qué está ocurriendo realmente ahora• ¿De QUÉ se hace log?
– Estadísticas de los Worker Processes– Estadísticas para todas las peticiones
actualmente en ejecución• ¿PORQUÉ usarlo?
– Lista de la peticiones en ejecución sin tener que matar el proceso para ver HTTPERR log
– No hay que usar el depurador y extensiones del depurador para ver esto – integrado & no-intrusivo
• ¿CÓMO usarlo?:– Usar ETW para volcar los datos
– o… IISReqMon.vbs (con LogParser 2.2)C:\Logman start CurrReqDump –p C:\Logman start CurrReqDump –p “IIS: Request Monitor”“IIS: Request Monitor” -ets -ets
Currently Executing Requests
Datos registrados• Estadísticas del
Worker Process– PID– AppPoolID– # Requests Served– Total Worker
Threads– Available Worker
Threads– Process Start Time– Process Uptime
• Estadísticas de la petición– Start time– Context ID (to
correlate back to req-based tracing)
– Site ID– Local IP & Port– Host Name– Connection ID– Client IP– Request Verb– Request URL– Processing State– Elapsed total Time– Elapsed time in State
Currently Executing Requests
Auditoría de la Metabase• ¿QUÉ?: Entrada en el log de eventos del
sistema cada vez que hay un cambio en el metabase– NT Security Audit Log– Fuente: IISADMIN-Metabase
• ¿CÚANDO se registran los cambios?– Intentos exitosos o fallidos de añadir,
cambiar, mover, o borrar claves/propiedades• ¿PORQUÉ usarlo?
– Auditoría de cambios– Common Criteria Certification
Currently Executing Requests
Auditoría de la Metabase• ¿QUÉ se logea?
– Lo que está siendo cambiado• Path de la Metabase• Viejo valor de la Propiedad/Clave• Nuevo valor de la Propiedad/Clave
– Quién lo cambió: dominio & nombre de usuario si se puede obtener
– Cómo fue cambiada: nombre del ejecutable usado para hacer el cambio (MMC.exe, etc.) & IP remota si está disponible.
– Éxito o fallo de la operación
• ¿CUÁNDO se hace (en detalle)?– Operaciones sobre las claves:
mover/borrar/copiar/añdir/renombrar– Operaciones sobre las propiedades:
añadir/modificar/borrar
Currently Executing Requests
Habilitar la auditoría de la Metabase
• Deshabilitada por defecto• ¿CÓMO habilitarla?:
– Habilitar la auditoría global de objetos primero– Establecer la ACE Audit Success & Audit Failure
sobre los nodos de la metabase que se quieran auditar, & para qué usuarios (todos?)
– NOTA: esto configurará la propiedad AdminACL en la metabase para el nodo seleccionado
– La configuración de los nodos hijos sobreescribirán esta configuración
demo
LogParser
• Introducción a LogParser– Formatos de entrada y de salida– Funciones– Plantillas de salida– Cómo empezar…
• LogParser 2.2– El nuevo formato de salida ‘chart’– CheckPoint
Log Parser
es…• Una herramientas gratuita, aplicación
independiente– Versión 2.1: www.microsoft.com/download, buscar por
“IIS 6.0 Resource Kit Tools”– Versión 2.0: www.microsoft.com/download, buscar por
“Log Parser”
• Desarrollada por Gabriele Giuseppini, del equipo de IIS
• No soportada oficialmente (www.logparser.com)• Disponible de dos formas:
– .exe en línea de comandos– Objeto COM– No hay ningún GUI por el momento
LogParser
Conceptos clave• Log Parser requiere…
– Formato de entrada• [+opciones]
– Consulta– Formato de salida
• [+opciones]
– [+opciones]
• Lenguaje de consulta– Soporte la mayoría de la sintaxis de SQL– Extiende el lenguaje con funciones adicionales
LogParser
Funciones• Para obtener una lista de las funciones
– [2.1] logparser –h 2– [2.0] logparser –h FUNCTIONS
• Ejemplos:– Funciones de conversión
• TO_TIMESTAMP• TO_LOCALTIME• TO_INT
– Manejo de cadenas• STRLEN• SUBSTR• STRCAT
– Otras• REVERSEDNS• QUANTIZE• EXTRACT_EXTENSION [2.2]• CASE [2.2]
LogParser
Ejemplo de función• Convertir el timestamp del fichero de
log de UTC a hora local
SELECT TO_DATE(TO_LOCALTIME(TO_TIMESTAMP(date, time))) AS date, TO_DATE( TO_LOCALTIME( TO_TIMESTAMP(date, time))) AS
time,
c-ip,
cs-username,
s-ip,
s-port,
cs-method,
…
FROM C:\Windows\system32\logfiles\w3svc1\ex040308.log
LogParser
Plantillas de salida• Logparser –h –o: TPL• Formada por:
– Cabecera– Cuerpo– Pie
• Mejora el aspecto del resultado
LogParser
Cómo empezar• Encontrar los nombres de las columnas
en la fuente de datos– logparser –h –i:<IISW3C|IIS|EVT>– o… “SELECT * FROM <datasource>”– Para ficheros TSV o CSV:
• logparser –h –i:csv/tsv <nombre_fichero>
• Comprender los datos en cada columna• Aplicar las funciones necesarias para
convertir los datos• [2.2] opción -queryinfo
LogParser
Novedades en LogParser 2.2• Nuevos formatos de entrada
– ETW – “Event Tracing for Windows”, ficheros de log y sesiones vivas
– TSV – “Tab and Space Separated value text files”
– ADS – Lee información de objetos del DA– REG – Lee información del registro– NETMON – parsea las capturas de NETMON
• Nuevos formatos de salida– CHART – SYSLOG– TSV
LogParser
Checkpoint – parseo incremental
• Parsea sólo lo que no ha sido parseado anteriormente– ex*.log …de todos los ficheros de log en un
directorio– <1> …de todos los ficheros de log del
sitio 1– System …del log de eventos del sistema
• Requiere un fichero de checkpoint para almacenar datos
logparser “SELECT TimeGenerated, EventTypeName, Strings FROM System WHERE SourceName = ‘W3SVC’” –icheckpoint event.lpc
demo
Q&Aivan@plainconcepts.c
om
www.plainconcepts.com
www.microsoft.com/spain/technet
© 2005 Microsoft Corporation. Todos los derechos reservados.Esta presentación es sólo con propósitos formativos. MICROSOFT NO GARANTIZA, EXPLÍCITA O IMPLÍCITAMENTE, LOS CONTENIDOS DE ESTA PRESENTACIÓN.