Mostrando entradas con la etiqueta Logging. Mostrar todas las entradas
Mostrando entradas con la etiqueta Logging. Mostrar todas las entradas

sábado, 2 de agosto de 2014

Exportar los logs del IIS de Sharepoint a una base de datos

La idea es exportar todos los logs generados del IIS para generar reportes custom sobre el uso de Sharepoint. Después podría generar reportes de SSRS para generar reportes planificados para monitorear y sacar estadísticas del uso de Sharepoint. El script de powershell sólo toma el archivo del día anterior, de esta manera se va procesando diariamente sin generar mucha sobrecarga sobre la base de datos o sobre el IIS al procesar una gran cantidad de datos. De todos modos el script podrá ser configurado para procesar la cantidad de días que requieran (ej: 15 días previos). Siempre se puede ejecutar desde logparse las consultasm pero quería generar reportes más detallados y que se fácil generar reportes históricos.

Primero instalamos LogParser en el servidor donde se quiere procesar los logs

http://www.microsoft.com/en-us/download/details.aspx?id=24659

Segundo, en el IIS de Sharepoint, configurar el logging de la plataforma

image

Seteo los siguientes fields para loguear

image

Tercero, creo la base de datos y la tabla donde se guardaran los logs. Yo estaré usando una sola tabla para cargar logs de varios web applications, pero es recomendable crear una tabla por web application si van a mantener logs de varios días y si tienen muchas accesos al IIS.

La base se llamará IISLogs

image

A continuación creo la tabla, llamada IIS

image

Después creo un usuario de SQL (se puede hacer también con windows authentication, pero va evitar complejidad, uso SQL Authentication)

image

image

El usuario debe tener el permiso de dbowner sobre la tabla “IIS”.

Cuarto, subimos el siguiente script al servidor, y realizamos las configuraciones necesarias. Hay que cambiar las variables en rojo.

$LogParserExe = "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe"

Function ProcessLogFiles ($RequestPath,$urlSite) {    
    try
    {
        $Date = Get-Date
        $Date = $Date.adddays(-1)
        $Date2Str = $Date.ToString("yyyMMdd")
        $Files = gci $RequestPath -Filter "*.log"
        ForEach ($File in $Files){
            $FileDate = $File.creationtime
            $CTDate2Str = $FileDate.ToString("yyyyMMdd")
            if ($CTDate2Str -eq $Date2Str) {
                Write-Host "Procesando el archivo " +  $File.FullName
              
                [string] $query = "SELECT" `
                                  + " TO_TIMESTAMP(date, time) AS EntryTime" `
                                  + ",c-ip AS ClientIpAddress" `
                                  + ",cs-method AS Method" `
                                  + ",STRCAT('"+ $urlSite + "',cs-uri-stem) AS UriStem" `
                                  + ",cs-uri-query AS UriQuery" `
                                  + ",s-port AS Port" `
                                  + ",cs-username AS Username" `
                                  + ",cs(User-Agent) AS UserAgent" `
                                  + ",sc-status AS HttpStatus" `
                                  + ",sc-substatus AS HttpSubstatus" `
                                  + ",sc-win32-status AS Win32Status" `
                                  + ",sc-bytes AS BytesFromServerToClient" `
                                  + ",cs-bytes AS BytesFromClientToServer" `
                                  + ",time-taken AS TimeTaken INTO IIS " `
                                  + " FROM " + $File.FullName


                Write-Host $query
              
                [string[]] $parameters = @()
   
                $parameters += $query
                $parameters += "-i:IISW3C"
                $parameters += "-o:SQL"
                $parameters += "-server:NOMBRESERVIDOR"
                $parameters += "-database:IISLogs"
               
$parameters += "-username:USUARIO_CREADO"
               
$parameters += "-password:PASSWORD_DEL_USUARIOCREADO"               
   
                Write-host "Parameters: $parameters"
   
                Write-Host "Importing log files to database..."
                & $LogParserExe $parameters

            }#if ($CTDate2Str -eq $Date2Str)

        }#ForEach ($File in $Files)
    }
    catch
    {
        write-host "Caught an exception: $_.Excepti" -ForegroundColor Red
        write-host "Exception Type: $($_.Exception.GetType().FullName)" -ForegroundColor Red
        write-host "Exception Message: $($_.Exception.Message)" -ForegroundColor Red
    }

}#Function ProcessLogFiles ($RequestPath)

ProcessLogFiles "D:\Data\Microsoft\LogsIIS\W3SVC378636303" "http://ur_webapplication"

ProcessLogFiles "D:\Data\Microsoft\LogsIIS\W3SVC582736404" “http://ur_webapplicationOTHER

Les dejo el archivo en el siguiente link para descargar también: descargar

A continuación podemos crear una tarea planificada para que se ejecute todos los días el script de powershell. Link

También se debería crear una tarea planificada en SQL Server para que vaya eliminando los logs que tengan N días de antiguedad.

image

Ej: cada 2 semanas voy a borrar los logs.

image

Agrego una tarea “Execute T-SQL Statement Task

image

image

En el caso que quieras ejecutar el script para que procese logs de N días, debes cambiar la siguiente línea.

$Date = $Date.adddays(-1)

Una vez que tenemos los datos en el SQL podemos hacer consultas reportes muy detallados (con Excel) o planificados(SSRS). Veamos un par de ejemplos,.

Ejemplo 1:  Navegadores más usados.

image

Ejemplo 2: uso de excel 2013. Voy a sacar la cantidad de bytes que envío cada usuario y recibió del servidor.

image

image

Ahora lo proceso con PivotTable

image

image

Ejemplo 3: resumen de HTTP Status

image

Veo que tengo muchos request con status 401, lo cual debería revisar. También veo que tengo muchos request con status 304, es que no hay cambios entre request solicitados (en este caso es buena señal.)

Pueden sacar más queries del siguiente link:

http://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/

http://logparserplus.com/Examples

domingo, 8 de julio de 2012

Tips/Info #47 Sharepoint

1-Obtener información de un web part GUID o ID

SELECT DISTINCT D.SiteID, D.WebId, W.FullURL as WebURL, D.Id As DocumentId,
                D.DirName, D.LeafName, tp_ID
FROM       dbo.Docs D WITH (nolock) 
INNER JOIN dbo.Webs W WITH (nolock) ON D.WebID = W.Id
INNER JOIN dbo.WebParts WP WITH (nolock) ON D.Id = WP.tp_PageUrlID
WHERE WP.tp_ListId Is Null AND WP.tp_Type Is Null AND WP.tp_Flags Is Null
      AND WP.tp_BaseViewID Is Null AND WP.tp_DisplayName Is Null 
      AND WP.tp_Version Is Null
AND WP.tp_WebPartTypeId='ID del web part'

2-Ver y editar la configuración de Sharepoint Diagnostic Logging usando PowerShell

Lista los niveles de log configurados para un área específica:
get-sploglevel -identity "SharePoint Server:*" | format-table name, eventseverity, traceseverity

Setea el nivel de log para el área Sharepoint Server para que loguee logs de "Errores"
set-sploglevel -identity "SharePoint Server:*" -eventseverity Error -traceseverity Monitorable
Más información: http://technet.microsoft.com/en-us/library/ff607887

3-Algunas buenas prácticas para el logging de Sharepoint 2010

Cambiar la unidad donde se registra los logs. De forma predeterminada, el registro de diagnóstico está configurado para escribir los registros en la misma unidad y partición que SharePoint Server 2010 donde se instaló.Debido a que el registro de diagnóstico puede utilizar un montón de espacio en el disco y la escritura en los registros puede afectar el rendimiento del disco, usted debe configurar el registro para escribir en un disco que es diferente de la unidad en la  cual SharePoint Server 2010 se ha instalado.
   
Restringir el espacio de disco usado por logs. Por defecto, la cantidad de espacio en disco que puede utilizar el registro de diagnóstico no se limita. Por lo tanto, limitar el espacio de disco que utiliza el registro para asegurarse de que el disco no se llena, sobre todo si se configura el registro detallado para escribir eventos de nivel. Cuando la restricción del disco se agota, los registros más antiguos se eliminan y nuevos logs se registran.

Use la configuración de logging "Verbose" con cuidado. Puede configurar el registro de diagnóstico detallado para registrar eventos de nivel. Esto significa que el sistema registrará cada acción que lleva SharePoint Server 2010.El nivel Verbose puede utilizar espacio en el disco y afectar la unidad y el rendimiento del servidor. Usted puede utilizar detallado a nivel de registro para registrar un mayor nivel de detalle cuando se están haciendo cambios críticos y volver a configurar el registro para registrar sólo los eventos de más alto nivel después de realizar el cambio.

Regularmente haz backups de logs. Los registros de diagnóstico contiene datos importantes. Por lo tanto, que realizar copias de seguridad periódicamente para asegurarse de que estos datos se mantiene. Cuando se restringe el uso del espacio, los archivos de registro se borran automáticamente, a partir de los archivos más antiguos en primer lugar, cuando el umbral se cumple.

Habilitar el evento de "log flooding protection". Al habilitar esta opción se configura el sistema para la detección de eventos que se repiten en el registro de eventos de Windows. Cuando el mismo evento se registra en varias ocasiones, los eventos que se repiten son detectados y suprimidos hasta que las condiciones vuelven a un estado normal.

4-“The specified name is already in use” while activating site feature"

Revisar el log, y buscar el ID de la feature que lanza esta excepción.
Abrir el Sharepoint Manager (http://spm.codeplex.com/) y activar la feature, en la sección Web Features.

Figure1[3]

5-Verificar la consistencia de una actualización en Sharpeoint 2010

Si la información de la versión no es consistente a través de estos tres lugares, esto puede indicar que la actualización no se ha instalado correctamente. Esto puede provocar errores y otros problemas que pueden ser muy difíciles de solucionar.

1. La clave de registro (HKLM\Software\Microsoft\Office Server\14.0\BuildVersion)

2. La siguiente clave de registro (HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{9014000

0-110D-0000-1000-0000000FF1CE}\DisplayVersion)

3. El archivo Microsoft.SharePoint.Portal.dll (\Program Files\CommonFiles\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.SharePoint.Portal.dll)

viernes, 20 de abril de 2012

Tips/Info #15–Sharepoint 2010

1-Deshabilitar la vista mobil de Sharepoint 2010

En tu web.config de tu web application agrega lo siguiente entre el nodo system.web

<browserCaps>      <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>      <filter>isMobileDevice=false</filter>    </browserCaps>

2-Ingresar a la lista TaxonomyHiddenList

[site url]/Lists/TaxonomyHiddenList/AllItems.aspx

TaxonomyHiddenListItem

3-La opción de “Include Content” está deshabilitada al querer guardar una lista como template

Esto se debe a que el contenido tiene más de 10 MB o que la propiedad “ExcludeFromTemplate” está en true

4-Deshabilitar el resource throttling en una lista mediante powershell

   1:  $web = Get-SPWeb http://sitesharepoint/sites/demo
   2:  $largelist = $web.Lists["Lista larga"]
   3:  $largelist.EnableThrottling=$false
   4:  $largelist.Update()



5-CEIP Data Collection timer job



Este job se encarga del Customer Experience Improvement Program


6-Provisionar el Central Administration en un diferente puerto



   1:  psconfig.exe -cmd adminvs -unprovision
   2:  psconfig.exe -cmd adminvs -provision -port 10000 -windowsauthprovider onlyusentlm
7-Recuerde que puede atachar varios documentos a un item de lista, mediante la opción “Attach File” de la ribbon. Recuerde que debe habilitar la opción de “Enabled attachments” en las propiedades avanzadas de la lista
8-Ocultar la quick launch con css


<style type="text/css">
 
#s4-leftpanel {
 DISPLAY: none
}
.s4-ca {
 MARGIN-LEFT: 0px
}
 
</style>
 
 Importante: si desea una solución más mantenible, utilice un master page con la sección del quick launch borrada o oculta.
9-Vista “All People”

http://site/_layouts/people.aspx?MembershipGroupId=0
10-Activar Office Web Apps para todos los site collections

   1:  $webApps = $(Get-SPFeature -limit all | where {$_.displayname -eq “OfficeWebApps”}).Id

   2:  Get-SPWebApplication -identity “http://url_webapplication” | Get-SPSite -limit all | %{Enable-SPFeature $webApps -Url $_.URL}


11-Logging en Sharepoint

La base de datos de Logging almacena las siguientes cosas:




    • ULS Logs from 14 Hive\LOGS



    • Raw Resource Usage Data



Esta data es usada por Web Analytics en Sharepoint. Dos jobs Microsoft SharePoint Foundation Usage Data Import y Microsoft SharePoint Foundation Usage Data Processing son usados para procesar la raw data a la base de datos de analytics.


El siguiente comando de powershell permite ver los días de retención de información de la base de datos.


Get-SPUsageDefinition


El siguiente comando permite cambiar esta configuración:


Set-SPUsageDefinition -Identity"Page Requests" -DaysRetained 3


El ejemplo anterior cambia la configuración del procesamiento de Page Request.


12-Qué puede restringirse para el search?




    • El sitio puede estar no disponible para el search: Site Actions – Site Settings – Search and Offline Availability

    • Los web parts permiten agregar seguridad lo cual restringen los resultados de búsqueda (Site Actions – Site Settings – Search and Offline Availability, seleccionar Do Not Index Web Parts if This Site Contains Fine-Grained Permissions)

    • Las listas o librerias permiten restringir su seguridad para que el crawled no la indexe (List / Library Settings – Advanced Settings / Sección Search)

    • Las columnas pueden restringirse para que no sean buscadas (Site Actions – Site Settings – Searchable Columns)

13-Cambiar la URL de una colección de sitios



Backup-SPSite -Identity http://sarepoint/sitios/url_vieja –Path “c:/backup.bak”
Remove-SPSite -Identity http://sarepoint/sitios/url_vieja
Restore-SPSite -Identity http://sarepoint/sitios/url_nueva –Path “c:/backup.bak” – force


14-Setear un campo con el usuario actual mediante SPServices


   1:  <script type=”text/javascript”> $(document).ready(function() {
   2:   
   3:  $(‘id del field’).text($().SPServices.SPGetCurrentUser({fieldName: “Title”,debug: false}));
   4:   
   5:  </script>

 

sábado, 31 de marzo de 2012

Links útiles #13–Sharepoint 2010

1-Implementar un web part consumidor

http://www.matchpointcommunity.com/blog/Posts/45/how-to-implement-a-consumer--producer-webpart

2-Soportar IE6 en MySite

http://blog.libinuko.com/2012/03/25/sharepoint-2010-how-to-support-ie6-0-to-access-mysite/

3-Upgrade o migración desde MOSS 2007 a SPS 2010

Hay dos maneras de hacer el upgrade:

  • Inplace upgrade
  • database attach y upgrade

http://blogs.msdn.com/b/sharepoint__cloud/archive/2012/03/25/important-points-on-upgrade-to-sharepoint-2010.aspx

4-Crear un web part con tips diarios

http://sharepointhero.wordpress.com/2012/03/10/adding-a-simple-tip-of-the-day-web-part-22-2/

5-Configurar FBA (autentificación basada en forms) con Sharepoint 2010

http://blogs.technet.com/b/pfelatam/archive/2012/03/21/como-configurar-fba-forms-based-authentication-en-sharepoint-server-2010-utilizando-iis-7-y-asp-net-membership-database-sql-como-en-moss-2007.aspx

6-Configurar Kerberos con Sharepoint 2010

http://www.microsoft.com/download/en/details.aspx?id=23176

https://www.nothingbutsharepoint.com/sites/itpro/Pages/How-To-Configure-Kerberos-Authentication-for-SharePoint-2010.aspx

http://www.thesharepointblog.net/Lists/Posts/Post.aspx?List=815f255a-d0ef-4258-be2a-28487dc9975c&ID=43

http://blogs.msdn.com/b/echarran/archive/2010/02/11/howto-configure-sharepoint-2010-for-kerberos.aspx

http://blogs.msdn.com/b/russmax/archive/2009/10/20/configuring-kerberos-authentication-in-sharepoint-2010-part-1.aspx

7-Alertas custom en Sharepoint 2010

http://www.codeproject.com/Articles/351400/SharePoint-2010-Custom-Alert-Me-for-Discussion-Boa

8- Restore de una base de contenidos de un backup de Sharepoint

http://blog.bugrapostaci.com/2012/03/26/sharepoint-2010-manuel-content-database-restore-from-sharepoint-backup-folder/

9-Logging de eventos en Sharepoint 2010 (timer jobs, item event receivers, desde código custom)

http://www.thesharepointblog.net/Lists/Posts/Post.aspx?List=815f255a-d0ef-4258-be2a-28487dc9975c&ID=106

10- Lista para vacaciones y time card

http://www.sharepoint911.com/blogs/laura/Lists/Posts/Post.aspx?ID=105

11-Agregar link o info en el header de Sharepoint 2010 (mediante javascript/css, controles delegados, custom action)

https://www.nothingbutsharepoint.com/sites/devwiki/articles/Pages/Global-Link-in-SharePoint-Sites-Using-Configuration-Files.aspx

12-Filtrar datos con html form web part

http://office.microsoft.com/en-us/sharepoint-server-help/use-the-html-form-web-part-to-filter-and-display-data-in-another-web-part-HA101791813.aspx

http://www.learningsharepoint.com/2011/08/07/using-html-form-web-part-to-filterwith-examples-sharepoint-2010/

13-Ocultar templates de site en Sharepoint 2010

http://hermansberghem.blogspot.com.ar/2011/03/hiding-site-templates.html?utm_source=BP_recent

sábado, 25 de febrero de 2012

SPMonitoredScope

Una Región Monitoreada es una parte del software que recopila información para ser mostrada en el Panel del Desarrollador. En SharePoint 2010 todo el código que ejecuta lo hace por defecto dentro de Regiones Monitoreadas, que cuentan cuantas veces se ejecuta cada rutina y cuanto tiempo se demora en ejecutar:

Ej:

   1:  using (SPMonitoredScope GetListsBtnScope = new
   2:   
   3:  SPMonitoredScope("GetListsBtn_Click"))
   4:   
   5:  {
   6:   
   7:  //your code goes here
   8:   
   9:  }

El evento GetListsBtn_Click aparece en el developr Dashboard




  • Un desarrollador puede utilizar SPMonitoredScope para:
    Identificar el uso excesivo de recursos.

  • Identificar los cuellos de botella de rendimiento.

  • Determinar cómo cierto componente interactúa con otros componentes.

Por ejemplo, este código mide  logea el tiempo de ejecución, el número de solicitudes, y el número de consultas de SharePoint de SQL Server(incluyendo el texto de la consulta) que se realizan por la llamada externa.

   1:  using (new SPMonitoredScope("My Scope Name",TraceSeverity.Verbose,1000,
   2:     new SPRequestUsageCounter(3),
   3:     new SPSqlQueryCounter()))
   4:  {
   5:      callExternalCode();
   6:  }



Más información:


http://www.wictorwilen.se/Post/Improve-your-SharePoint-2010-applications-with-monitoring-using-SPMonitoredScope.aspx


http://msdn.microsoft.com/en-us/library/ff512758.aspx

viernes, 17 de febrero de 2012

Logging in SharePoint

SPDiagnosticsService.Local.WriteTrace(0, new

SPDiagnosticsCategory(“My category”,

TraceSeverity.Unexpected, EventSeverity.Error),

TraceSeverity.Unexpected, ex.Message, ex.StackTrace);

 

Your solution might have the minium log level set to higher than “Information” and your entry will not be written if your log level is set too low

If your application is running on one of the front-end Web servers in the farm, the property LOCAL returns an instance of the SPDiagnosticsService class. If an instance of the service does not exist, when you access this property, an instance is created on the local server and the change propagates to all servers in the server farm.

If you are not connected to a front-end Web server in the server farm, the property returns Nothing.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spdiagnosticsservice.aspx

sábado, 28 de enero de 2012

Configuración correcta de ULS (Diagnostic Log)

En primer lugar, consideramos que los registros de ULS están diseñados con un propósito singular en cuenta: Para permitir que un administrador identifique y resuleva problemas en SharePoint. No se utilizan para ningún otro propósito dentro de SharePoint. Desde esta perspectiva, si el entorno es "perfecto" (si es posible), entonces la mejor respuesta para usted es simplemente apagarlo. Consumen una pequeña cantidad del sistema de recursos del sistema, y pueden consumir una cantidad considerable de espacio en disco.

Por otro lado, algunos clientes lo tienen seteado a verbose (detallado),todo el tiempo. Esto es un poco ridículo, si no estás investigando un problema. Está consumiendo enormes cantidades de espacio en disco y recursos del sistema potencialmente significativo y el rendimiento un poco degradado para los usuarios finales para capturar los datos que no tienen interés en realidad de mirarlo. Le sugiero que restablecer la configuración predeterminada o incluso apagar esta funcionalidad.

lunes, 16 de enero de 2012

Microsoft Online Services Diagnostics and Logging (MOSDAL)

Los diagnósticos de Microsoft Online Services y el Kit de herramientas de soporte de registro (MOSDAL) realiza diagnósticos de red y recopila información de registro para las aplicaciones que se utilizan para conectarse a la de Microsoft Business Productivity Online Standard Suite (seguridad-S) o a 365 de Microsoft Office, configuración de red y configuración del sistema. Los registros que genera la herramienta de proporcionan datos que ayuda a los profesionales de soporte técnico solucionar otros problemas relacionados con el servicio, red, instalación y configuración. El Kit de herramientas de soporte de MOSDAL recopila los archivos de registro, las claves del registro y opciones de configuración que requerirían mucho tiempo y esfuerzo colección mediante el uso de herramientas independientes.

Descargar: http://www.microsoft.com/download/en/details.aspx?id=626&WT.mc_id=rss_office_365