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

domingo, 3 de mayo de 2015

Application Insights para Sharepoint

Microsoft liberó hace unas semanas el producto “Application Insights” que permite agregar el tracking o ver la performance de sitios webs o apps.

Voy a mostrar un ejemplo de cómo integrarlo con Sharepoint (en este caso Sharepoint Online, pero se puede hacer lo mismo para Sharepoint on-premise mientras el cliente tenga acceso a internet)

Ingreso al portal nuevo de Azure (https://portal.azure.com) y creo un servicio de “Application Insights”. Seleccionar en el tipo de aplicación “Aplicación web ASP.NET”

image

image

image

Una vez creado el servicio hago click en el icono de inicio rápido.

image

Después selecciono “Obtener código para supervisar mis páginas webs”

image

Copio el código, y voy a una página de Sharepoint, agrego un web part de código (Script Editor).

image

Y pego el código

image

Después de un tiempo de navegar la página, vemos que ya tenemos resultados

image

image

image

image

Podemos agregar custom eventos, por ejemplo: Qué usuario estaba logueado

appInsights.trackEvent("UsuarioLogueado:christianazcon");

image

En la página lo veremos así

image

Para tomar el usuario loguedo en Sharepoint podemos usar la siguiente variable de javascript “_spPageContextInfo.userLoginName”. Esta variable no siempre está disponible, ya que depende del tipo de página y feature que se tiene habilitada. Por ello también podés usar REST o JSOM.

image

Al revisar en Azure cómo quedo el evento vemos esto.

image

Cómo podemos hacer para que se deploye en cada página de Sharepoint? Tenés dos opciones: agregar el código en la master page, o utilizar inject JavaScript (javascript embed). El último es más recomendado, ya que es más mantenible.

En otro post mostraré cómo podemos usar esta funcionalidad en nuestros servidores on-premise descargando el cliente para Windows Server

image

Más información:

http://azure.microsoft.com/en-us/documentation/articles/app-insights-web-track-usage/

Azure Services Bus (Events Hubs) con Sharepoint

Event Hubs es un servicio de Azure que permite agregar y procesar millones de eventos por segundo. Es muy útil para almacenar datos en tiempo real o de forma batch.

image

Hace un tiempo se liberó el sdk para trabajar vía Javascript (+ REST) con Event Hubs. https://github.com/ddobric/ServiceBusJavaScriptSdk

En este post lo usaremos para hacer un custom analytics para sitios de Sharepoint o para evaluar en tiempo real quién se conecta al sitio. Hace algunas semanas Microsoft libero Azure Insights para hacer el tacking del uso en sitios (http://azure.microsoft.com/en-us/services/application-insights/). La idea es mostrar cómo se podría hacer con Azure Event Hubs, y tener tu propio Azure Insights.

image

image

image

el sdk requiere algunos parámetros

var queuePath = "sharepointanalytics";
var ehClient = new EventHubClient(
            {
                'name': queuePath,
                'devicename': 'urlsitio', // es la especificación para “partition key”
                'namespace': "sharepointanalytics-ns",
                'sasKey': "gIAsGZEd3kObjQN9gvnx7wRjm3Hf97aBmFyXWbszBtQ",
                'sasKeyName': "RootManageSharedAccessKey",
                'timeOut': 10,
            });

‘queuePath’ es el nombre del Event Hub

image

'devicename' se usa cómo key de partición, ver el siguiente link: https://msdn.microsoft.com/en-us/library/azure/dn836025.aspx

'namespace': es el nombre del service bus

image

'sasKey': es el nombre de la policy de acceso del service bus, 'sasKeyName': es la primary key de la policy de acceso.

image

image

Ej: Endpoint=sb://sharepointanalytics-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gIAsGZEd3kObjQN9gvnx7wRjm3Hf97aBmFyXWbszBtQ=

En el sdk, hay un archivo llamado EventHubSamples.html, lo edito y

image

Agrego el siguiente código html (lo importante en amarillo)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>  
    <title>Service Bus JavaScrcipt SDK QueueClient Test Page</title>

   <link rel="stylesheet" href="css/main.css" type="text/css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"> </script>
    <script src="Scripts/servicebusjssdk-1.2.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {

           var queuePath = "sharepointanalytics";
            var ehClient = new EventHubClient(
            {
                'name': queuePath,
                'devicename': 'urlsitio', // This is by specification partition key.
                'namespace': "sharepointanalytics-ns",
                'sasKey': "gIAsGZEd3kObjQN9gvnx7wRjm3Hf97aBmFyXWbszBtQ=",
                'sasKeyName': "RootManageSharedAccessKey",
                'timeOut': 10,
            });

            $("#btnSend").click(function () {

                var eventBody = { "Horario": "22/02/2015 10:00 am", "Pagina": "Home.aspx", "sitio": "http://contoso.com", "usuario": "christianazcon"   };

                var msg = new EventData(eventBody);               

                ehClient.sendMessage(msg, function (messagingResult) {
                    $("#result").html(messagingResult.result);
                    $("#eventData").html(JSON.stringify(eventBody));
                });
            });

        });
    </script>
</head>
<body>
     <button id="btnSend">Send</button>
    <div class="message-wrapper">
                <p>Event Data:</p>
                <div id="eventData">
                </div><br />
                <p>Message Body:</p>
                <div id="result">
                </div><br />
      </div> <!-- END: .message-wrapper --></body>
</html>

En la página se ve así:

image

Presiono Send, me retorna “Sucess”

image

Ahora abro Service Bus explorer, https://code.msdn.microsoft.com/windowsazure/Service-Bus-Explorer-f2abca5a

Y veo que ya aparece el mensaje que envie

image

image

Ahora tendrás que revisar en que partición cayó el mensaje, ej: 5

image

Presiono Start

image

image

Cómo pueden ver, aparece el texto del mensaje.{"Horario":"22/02/2015 10:00 am","Pagina":"Home.aspx","sitio":"http://contoso.com","usuario":"christianazcon"}

Esto nos permite agregar un montón de eventos a las páginas mediante javascript y guardarlas en un Event Hub, y procesarlos a posteriori.

Por ejemplo para tomar el usuario logueado, puedo usar el siguiente script: https://lixuan0125.wordpress.com/2013/05/10/sharepoint-2013-get-current-user-loginname-using-jsom-rest/

Ej:

  • Eventos que realiza el usuario (donde hace click, cuanto tiempo está en cada página, etc)
  • Información de navegadores
  • etc

sábado, 13 de septiembre de 2014

Una granja Sharepoint 2013 de 3 servidores sobre Azure de manera simple

Hace un tiempo había hecho un post de cómo crear un pequeño entorno de desarrollo de Sharepoint 2013 sobre azure: http://todosharepoint.blogspot.com.ar/2014/06/crear-un-entorno-de-desarrollo-de.html

En este caso usaremos una nuevo elemento de la galería que se disponibilizó hace poco para crear granjas de Sharepoint. Primero para poder utilizar la creación de granjas de Sharepoint 2013 sobre Azure, deberemos ingresar al portal nuevo de Azure.

image

La idea es crear una arquitectura de este estilo

SharePoint-Farm-in-Azure-8

agrego un nombre de Resource Group, nombre de administrador y password

image image image

imageimage

Si marcas la opción de “Enable High availability” te creará una granja de alta disponibilidad

spfarm_highavail

Después de unos minutos (variossss) se tiene la granja completa sobre Azure.

image

image

image

image

Revisa que tengas el acces role habilitado para nuestra cuenta de suscribción

image

Cuando abro una de las máquinas virtuales de Sharepoint, veo los siguientes iconos en el desktop

image

Si abro la sección de Servers in Farm en el CA.

image

En el caso de los DC y SQL, vemos en la sección Peer Resources las VM´s

image

Si veo la configuración del SQL Server

image

image

En el G están los logs de los datafiles

image

En el F están los datafiles

image

En el D, veo un warning de no usar esta partición para almacenar datos no temporarios

image

Los datafiles y logs de la tempdb están en el C

image

Revisando la configuración de la base, se ve que le aplicaron algunas configuraciones requeridas para que Sharepoint funcione correctamente, ej: deshabilitar estadísticas

image

MAXDOP = 1

image

Pero hay algunas que deberían haber configurado. Ej: Max y Min memory server

image

El fill factor también lo deberían haber configurado (80% para Sharepoint)

image

image

En el caso del DC, ejecuto el siguiente comando de PowerShell Get-DnsServer, y veo los siguientes datos.

Zonas de DNS

image

Si ejecuto el siguiente comando Get-DnsServerResourceRecord -ZoneName "contoso.com"

image

Si yo me enfoco en un A record, puedo ejecutar el siguiente comando:

Get-DnsServerResourceRecord -ZoneName "contoso.com" -Name "GROUPHASHA-SP”