VM Insights : Surveiller les performances et dépendances des VMs Azure

Surveiller ses environnements Azure est très important. Pour cela nous connaissons bien la solution Azure Monitor qui nous permet justement de surveiller et analyser nos environnements Azure. Azurer Monitor nous permet également d’être alerté si un incident survient sur notre plateforme.

              L’une des nouvelles fonctionnalités d’Azure Monitor est VM Insights. Elle nous permet de visualiser les performances et les dépendances de nos machines virtuelles. VM Insights se base sur les logs de VMS récupérés par les collecteurs de données Log Analytics.

              Voici les points qui seront traités :

  • Comment activer VM Insights : depuis le Portail et en PowerShell
  • Comment embarquer les VMs dans la solution : depuis le Portail et en PowerShell
  • Gérer les alertes en PowerShell

A l’issue de cet article vous saurez comment activer la solution et y embarquer les VMs automatiquement avec un script PowerShell complet et expliqué.

Activation de VM insights :

Il existe différentes méthodes pour activer VM Insights parmi lesquelles :

Directement sur le portail Azure

  • En ajoutant la solution au niveau d’un Log Analytics Workspace
    • En activant la solution depuis la machine virtuelle : dans le volet Monitoring de la VM > Insights > Enable / Activer.

L’activation de VM Insights directement depuis la VM, permet, en même temps d’activer la fonctionnalité VM Insights et d’embarquer la VM dans la solution. Une fois la fonctionnalité activée nous avons une visualisation des dépendances et performances de notre machine virtuelle comme représenté sur les Dashboards ci-dessous :

Visualisation des performances : Indicateur sur l’utilisation de la CPU, sur les espaces disques, les IOPS ou encore l’utilisation de la mémoire.

Visualisation des dépendances : nous permet notamment de voir avec quels environnements échange la VM et sur quels ports ou encore quels processus sont lancés sur la VM.

En ligne de commande

              Comme expliqué précédemment, la fonctionnalité VM Insights se base sur un Log Analytics Workspace. Nous devons donc commencer par en créer un ou récupérer les informations du Workspace déjà existant que l’on souhaite utiliser, ce sera le cas dans mon exemple. Voici le code permettant de récupérer les propriétés d’un Workspace existant puis d’ensuite activer la solution VM Insights :

# Get Log Analytics Workspace properties
$law = Get-AzOperationalInsightsWorkspace -ResourceGroupName $rgName 

#Set in a variable VM Insights solution Name
$SolutionName = "VMInsights"
 
#Enable VMInsights Solution on the Log Analytics Workspace
Set-AzOperationalInsightsIntelligencePack -ResourceGroupName $rgName -WorkspaceName $law.Name -IntelligencePackName $SolutionName -Enabled $true 

Comment embarquer les VMs dans la solution

              Pour embarquer des VMs dans la solution nous pouvons le faire comme expliqué précédemment directement depuis la VM ou bien via PowerShell. Il est important de comprendre comment le lien se fait entre les VMs et la solution VM Insights. Lors de l’activation de la solution pour une VM, 2 agents sont poussés dans la VM. Les agents sont les suivants :

  • Pour les VMs WINDOWS : Microsoft Monitoring Agent et Dependency Agent Windows
  • Pour les VMs Linux : Oms Agent For Linux et Dependency Agent Linux

              Si l’on souhaite déployer VM Insights sur un ensemble de VMs, nous n’allons pas passer par une activation de la solution à la main VM par VM depuis le portail. C’est tout l’intérêt du script PowerShell qui suit :

              Nous commençons par récupérer une liste de VMs pour lesquelles nous souhaitons analyser les performances et dépendances. Ici nous récupérons toutes les VMs d’un groupe de ressources :

# List all VMs in the resource group 
$azVMs = Get-AzVM -ResourceGroupName $rgName

              Ensuite, nous automatisons le déploiement des 2 Agents sur chaque VM de notre groupe de ressource en fonction de l’OS de la machine. Deux paramètres sont importants pour pousser l’installation des agents : l’ID du Workspace et la clé d’accès à ce dernier. Ce qui donne le code suivant :

$PublicSettings = @{"workspaceId" = $law.CustomerId}
$ProtectedSettings = @{"workspaceKey" = $lawKey}

# Push Agents Install on VMS to enable VM Insights
foreach ($vm in $azVMs) {
    # get VM's Os type

    $OsType = $vm.StorageProfile.OsDisk.OsType

    # Filter installation extension name by the Os type of the VM
    if($OsType -eq "Windows"){

        Set-AzVMExtension -ExtensionName "MMAExtension" `
            -ResourceGroupName $rgName `
            -VMName $vm.Name `
            -Publisher "Microsoft.EnterpriseCloud.Monitoring" `
            -ExtensionType "MicrosoftMonitoringAgent" `
            -TypeHandlerVersion 1.0 `
            -Settings $PublicSettings `
            -ProtectedSettings $ProtectedSettings `
            -Location $location

        Set-AzVMExtension -ExtensionName "DependencyAgentWindows" `
            -ResourceGroupName $rgName `
            -VMName $vm.Name `
            -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
            -ExtensionType "DependencyAgentWindows" `
            -TypeHandlerVersion 9.1 `
            -Settings $PublicSettings `
            -ProtectedSettings $ProtectedSettings `
            -Location $location

    }

    if($OsType -eq "Linux"){

        Set-AzVMExtension -ExtensionName "OMSExtension" `
            -ResourceGroupName $rgName `
            -VMName $vm.Name `
            -Publisher "Microsoft.EnterpriseCloud.Monitoring" `
            -ExtensionType "OmsAgentForLinux" `
            -TypeHandlerVersion 1.0 `
            -Settings $PublicSettings `
            -ProtectedSettings $ProtectedSettings `
            -Location $location

        Set-AzVMExtension -ExtensionName "DependencyAgentLinux" `
            -ResourceGroupName $rgName `
            -VMName $vm.Name `
            -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
            -ExtensionType "DependencyAgentLinux" `
            -TypeHandlerVersion 9.1 `
            -Settings $PublicSettings `
            -ProtectedSettings $ProtectedSettings `
            -Location $location

    }

    else{

        Write-Host "OS Type :" -ForegroundColor Red -NoNewline
        Write-Host $OsType -ForegroundColor White -NoNewline
        Write-Host "  not supported " -ForegroundColor Red -NoNewline
    }

} 

Création d’alertes

              Pour optimiser la surveillance de la plateforme et pouvoir suivre au mieux les performances de nos VMs, nous pouvons créer des règles d’alerte dans Azur Monitor en se basant sur les insights des VMs. Ici nous allons créer une alerte nous permettant d’être notifié par mail dès lors que l’utilisation de la CPU d’une VM dépasse 80%.

Créer un groupe d’action

              Pour commencer nous devons créer un groupe d’action dans lequel nous allons indiquer quelle action devra être effectuée lors du déclenchement de l’alerte, dans notre exemple un envoie de mail.


# Add new email where alerts should be send
$email = New-AzActionGroupReceiver -Name "alerts-mail" -EmailReceiver -EmailAddress "perfAlert@infeeny.com"

# Add Action group
$act = Set-AzActionGroup -Name "performance alerts" -ResourceGroup $rgName -ShortName "perfalerts" -Receiver $email

#$act = Get-AzActionGroup -ResourceGroupName $rgSocleName -Name "plateform alerts Action Group"
$action = New-AzActionGroup -ActionGroupId $act.id

Ajouter une règle d’alerte

      Maintenant nous créons le critère de l’alerte avec la métrique que nous souhaitons surveiller. Puis on crée l’alerte à laquelle nous allons associer ce critère et le groupe d’action créé juste avant.


### Add metric Rule for CPU ###

#set alert criteria for CPU utilization 
$criteriacpu = New-AzMetricAlertRuleV2Criteria -MetricName "Percentage CPU" `
-TimeAggregation average `
-Operator GreaterThanOrEqual `
-Threshold 80 

#Add alert rule     
Add-AzMetricAlertRuleV2 -Name "Windows and Linux CPU Alerts" `
    -ResourceGroupName $rgName `
    -WindowSize 00:05:00 `
    -Frequency 00:01:00 `
    -TargetResourceScope $rg.ResourceId `
    -Condition $criteriacpu `
    -TargetResourceType microsoft.compute/virtualmachines `
    -TargetResourceRegion $location `
    -ActionGroup $action `
    -Severity 3 

Conclusion

              Pour conclure, grâce à la nouvelle fonctionnalité VM Insights d’Azure Monitor, nous avons un suivi et une vision complète des performances de nos VMs. Cette fonctionnalité nous apporte des Dashboards complets que nous pouvons customiser afin d’afficher les métriques qui nous sont le plus cohérentes.
              Dans cet article, vous avez toutes les informations nécessaires pour déployer la fonctionnalité VM Insights sur vos VMs Azure et générer des alertes vous permettant ainsi de réagir au plus vite en cas d’incident ou de surcharge. Ici nous avons choisi PowerShell mais il est tout à fait possible de déployer la solution via Terraform ou Azure ARM si vous faites de l’InfrasAsCode.

Voici le lien Github vers le script complet :

https://github.com/infeeny/VMInsights/blob/master/VMInsights.ps1

SharePoint 2016 Technical Preview vu depuis PowerShell

Ca y est ! La nouvelle version de SharePoint est arrivée en version Technical Preview. Il est donc temps de voir les nouvelles fonctionnalités mises à disposition par Microsoft dans SharePoint 2016. C’est aussi l’occasion d’apprécier les changements techniques annoncés dans cette nouvelle mouture, et principalement sur la partie hybride. De mon point de vue, l’une des meilleures façon d’aborder cette évolution technique est de faire le tour d’horizon des nouvelles commandes PowerShell disponible, c’est une méthode assez pertinente pour anticiper les évolutions à venir. Afin de bien comprendre et analyser ces évolutions, nous allons regrouper les commandes par thématiques.

Une remarque qui a son importance: à l’heure où nous écrivons ces lignes aucune de ces commandes n’a été référencé par Microsoft sur Technet.

Gestion des plages d’adresses autorisées

Add-SPIPRangeAllowList
Disable-SPIPRangeAllowList
Get-SPIPRangeAllowList
Test-SPIPRangeAllowList
Set-SPIPRangeAllowListSetting
Set-SPIPAccessControlOperationMode
Set-SPIPAccessControlSubscriptionId

Elles permettent tout simplement de restreindre l’accès d’une Collection de site à une adresse IP donnée. Malheureusement cela ne fonctionne que sur la collection de site racine de la Web Application. Pour plus de détails sur l’implémentation de cette fonctionnalité, je vous invite à lire ce post.

Gestion des bases de données

Dismount-SPSiteMapDatabase
Get-SPSiteMapDatabase
Mount-SPSiteMapDatabase
Upgrade-SPSiteMapDatabase

Aucune information filtré sur ce nouveau composant pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Reset-SPSites

Runtime Telemetry

Set-SPRuntimeTelemetry
Get-SPRuntimeTelemetry

Aucune information filtré sur ce  nouveau composant pour l’instant. A première vue il s’agirait d’un composant mesurant la disponibilité de service ou d’application par un lien ODL, peut être un lien avec le nouveau mode hybride ? Nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Get-SPRuntimeTelemetry

Gestion des serveurs

Set-SPServer
Upgrade-SPServer

Deux nouvelles commandes permettant de gérer les serveurs SharePoint. Un point intéressant est la commande Upgrade-SPServer qui vérifierait tout simplement les versions sur chacun des serveurs

get-spserver

Get-spserver

Gestion des serveurs et des rôles

Start-SPService
Stop-SPService
Get-SPService

Ces commandes vont tout simplement faciliter la gestion du provisioning ses services SharePoint, principalement sur une architecture à plusieurs tiers. On retrouve la notion de MinRole permettant de segmenter par rôle chacun de vos serveurs SharePoint 2016.

Get-spservice

Gestion des bases de données

Compare-SPDatabaseSchema
Copy-SPDatabase
Migrate-SPDatabase
Register-SPContentDatabase
Switch-SPSitesToNewDatabase
Upgrade-SPConfigurationDatabase

C’est probablement un des périmètres où il y a eu le plus d’évolutions, et pour cause, SharePoint vit au rythme de ses bases de données. La première commande Compare-SPDatabaseSchema nous permet de comparer les schémas de deux bases de données différentes. Cette commande a été testée avec deux bases de données de contenus.

compare-spdatabaseschema

La commande Copy-SPDatabase permet, comme son nom l’indique, de copier une base de donnée SharePoint. Aucune information n’existe pour l’instant sur ce nouveau composant, mais on se doute que cela sera utile dans un scénario hybride ! On remarquera que la propriété de cible pour la copie attend une Connection String. A force de travailler avec SharePoint, on en aurait presque oublié le principe 🙂

Register-SPContentDatabase s’inscrit très probablement dans cette continuité de plateforme hybride.

register-spcontentdatabase

Switch-SPSitesToNewDatabase est une commande plus ou moins identique à Move-SPSite. Elle permet le déplacement d’une Collection de site d’une base de données de contenu vers une autre. Le différence notable est la capacité de renseigner plusieurs collections de site en paramètre d’entrée.

switch-spsitestonewdatabase

Upgrade-SPConfigurationDatabase est l’équivalent de la commande Upgrade-SPServer pour notre base de donnée de configuration (SharePoint_Config)

upgrade-spconfigurationdatabase

Site Master

Enable-SPWebTemplateForSiteMaster
Disable-SPWebTemplateForSiteMaster
Get-SPWebTemplatesEnabledForSiteMaster
Get-SPSiteMaster
New-SPSiteMaster
Remove-SPSiteMaster

SharePoint 2016 ajoute une nouvelle fonctionnalité touchant la création des collections de site: le Fast Site Collection Creation. Cette fonctionnalité est en lien direct avec le principe de Site Provisioning, concept très populaire permettant la mise en place automatisé d’espaces collaboratifs aux utilisateurs. Le mécanisme permet d’accélérer la création d’une Collection de Site en se basant sur une copie de la collection de site au niveau de la base de donnée de contenu.

Son application est assez simple

  1. Définir le Web Template faisant l’objet du Site Master
  2. Créer le Site Master. Suite à cette commande, une nouvelle collection de site Master est créé
  3. Créer la Collection de Site depuis le Master

enable-spwebtemplateforsitemaster

new-spsitemaster new-spsitemaster3 new-spsitemaster

Pour en savoir plus sur ce mécanisme et son application direct, vous pouvez lire le récent post de Bill Baer à ce sujet.

Gestion des vidéos

Disable-SPVideoStreaming
Enable-SPVideoStreaming
Get-SPVideoStreamingConfig
Suspend-SPVideoStreamingAccess
Resume-SPVideoStreamingAccess

Un des axes de développements de SharePoint 2016 est la gestion des vidéos. Au travers de ces commandes, on découvre un service de streaming. Pour le rendre effectif, vous devrez créer une Service Application de type Subscription Settings Service Application comme décrit ici.

get-spsitesubscription

Il sera par la suite possible d’activer, suspendre ou désactiver le service de streaming et le service est activé par défaut lorsque l’on dispose d’une Subscription Service. . On regrette un peu l’absence de paramétrage avancé du service de streaming, mais on espère que d’ici la version RTM on ai une plus grande latitude de configuration. On imagine que comme beaucoup de services disponible dans cette Technical Preview, ce sont les mêmes composants actuellement exploités dans le cadre d’un service Office 365, et dans ce cas précis le service d’Office Video.

Get-SPVideoStreamingConfig

Azure

Update-SPAzureBlobConfigLocator
Update-SPAzureBlobConfigLocatorEx
Update-SPAzureBlobConfigLocatorEx1
Update-SPAzureBlobLogStoreSignatures
Update-SPAzureBlobSignaturesEx
Update-SPAzureBlobSignaturesEx1
New-SPAzureVideoServiceAccount
Get-SPAzureVideoServiceAccount
Remove-SPAzureVideoServiceAccount

Cette nouvelle version est résolument tourné vers le cloud et le modèle hybride. Nous avons désormais à disponibilité des commandes permettant d’interagir avec une plateforme Azure. Pour bénéficier de ces fonctionnalités il faudra cependant disposer d’un compte Azure, et surtout d’un abonnement Media Services.

Au niveau des commandes PowerShell, on distingue deux catégories : la gestion des vidéos, et la configuration d’un service permettant le stockage de fichiers binaire encryptés sur une plateforme Azure. Pour le coup on est vraiment sur de l’hybride avec les données techniques se trouvant sur la base de donnée de contenu sur notre environnement On Premise, et les documents hébergés directement sur la plateforme Azure. On a hâte de tester tout ça !

Très peu d’informations sont disponible à ce sujet,  néanmoins cet article nous donne un bon aperçu des commandes à effectuer pour disposer de cette fonctionnalité de stockage de fichiers dans Azure.

Office 365

Set-SPO365LinkSettings
Test-SPO365LinkSettings
Get-SPO365LinkSettings

Là encore, ces commandes mettent en avant le modèle hybride avec la configuration de OneDrive et des Sites. On retrouve également ces fonctionnalités au niveau de notre Central Administration.

On retiendra de cette fonctionnalité la capacité de choisir le mode de redirection pour le mode hybride choisit: OneDrive et les Sites, ou OneDrive uniquement.

get-spo365LinkSettings get-spo365LinkSettings get-spo365LinkSettings

Mise à jour des fichiers par serveurs

Copy-SPSideBySideFiles

Toujours dans cette optique de mettre à disposition des administrateurs des fonctionnalités pour gérer la performance et le dimensionnement d’infrastructure SharePoint On Premise, nous avons le droit à une commande permettant la copie de répertoires et de fichiers dans la ruche. Cette commande PowerShell se base sur le très populaire et robuste Robocopy.exe et permet la copie de fichiers web (js,css et htm) d’un server à l’autre. Nous n’avons pas trouvé de Timer Job associé à ces opérations, il y a donc fort à parier que son application direct soit laissé aux administrateurs. Très peu de paramètres sont disponible pour cette dernière, si ce n’est le choix du chemin de log.

Copy-SPSideBySideFiles

Secure Store

Disable-SPSecureStoreMinDB
Enable-SPSecureStoreMinDB
Move-SPSecureStorePartitionData

Aucune information n’a filtré sur cette fonctionnalité lié au Secure Store pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Apps et Apps Store

Get-SPAppStoreWebServiceConfiguration
Set-SPAppStoreWebServiceConfiguration
Move-SPAppManagementData
Upgrade-SPAppManagementServiceApplication

Aucune information filtré sur cette fonctionnalité pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Gestion de Projets

Beaucoup de fonctionnalités autour de Project et PWA (Project Web Application) sont disponible dans cette nouvelle version. Elles feront probablement l’objet d’une étude dans un post séparé tellement elles sont nombreuses.

Service Application

Get-SPConnectedServiceApplicationInformation

Aucune information filtré sur cette fonctionnalité pour l’instant, la commande nous retourne les différents EndPoint de nos Service Application. On peut partir de l’hypothèse que cette commande s’inscrit dans l’utilisation d’une architecture n-tiers avec les MinRoles, cette information permettrait la vérification centralisée de chacune des Service Applications d’une ferme disposant de plusieurs rôles.

Get-SPConnectedServiceApplicationInformation

Gestion des Collection de Sites

Reset-SPSites

Aucune information filtré sur cette fonctionnalité pour l’instant. Contrairement à ce que pourrait laisser penser cette commande, le paramètre d’entrée ID est celui de la base de données de contenu et non celui d’une collection de site. Nous n’avons pas remarqué de comportement particulier lors de l’exécution de cette commande, ni aucune indisponibilité.

Reset-SPSites

Gestion des Web Applications

Upgrade-SPWebApplication

Aucune information n’a filtré sur cette fonctionnalité pour l’instant, nous mettrons l’article à jour une fois que nous aurons éprouvé ces commandes.

Upgrade-SPWebApplication

Insights

Get-SPInsightsAuthSettings
Set-SPInsightsAuthSettings

D’après ce post sur le Forum Technet , on apprend que le composant n’est pas encore disponible dans cette Technical Preview. La commande nous retourne des informations sur notre ferme SharePoint, ainsi que sur une assembly (introuvable localement). En en saura probablement plus dans les semaines à venir.

Get-SPInsightsAuthSettings

Profils utilisateurs

Get-SPMicrofeedOptions
Set-SPMicrofeedOptions
Set-SPDefaultProfileConfig
Upgrade-SPProfileServiceApplication
Export-SPTagsAndNotesData

De nouvelles commandes sont disponible pour gérer les profils utilisateurs dans SharePoint, on rappellera qu’un des changements majeur de cette nouvelle version est la suppression complète de FIM (Forefront Identity Manager) et donc la possibilité d’exporter des propriétés de profils utilisateurs dans un annuaire en natif. On notera dans ces commandes la possibilité de gérer des options pour le MicroFeed ainsi que la possibilité d’exporter les Tags & Notes. Cette commande est la bienvenue sachant que la fonctionnalité de Tags & Notes sera dépréciée sur SharePoint 2016.

Get-SPmicrofeedoptions Export-sptagsandnotesdata

[JSS 2014] Session : BI et déploiement automatique avec TFS

Speaker : Romuald COUTAUD & Khirdine HADDAR
Level : 200

Objectif : Déploiement des solutions BI (SQL, SSIS, SSAS, SSRS) automatiquement avec TFS

Introduction :
Dans tous les projets BI, il y a différentes façons de gérer l’industrialisation de nos projets (SQL, SSIS, SSAS, SSRS). Cette session va permettre d’illustrer TFS (Team Foundation Server), l’un des moyens d’industrialisation de ces projets en automatisant la génération et le déploiement des livrables dans les différents environnements (Dev, Intégration, Prod).
Ce qui va être présenté ici, ce sont juste le versioning des solutions ainsi que la génération et le déploiement automatique des différents projets (TFS Build).

TFS :

  • Gestion des versions des projets
  • Packager les livrables
  • Build TFS
    • Extraction et copie automatique sur le serveur
    • Génération des projets (se fait à l’aide de MSBuild, un framework dotNet)
    • Déploiement

Le déploiement se fait à l’aide de WWF (Windows Workflow Foundation). Il est possible d’utiliser des scripts PowerShell pour compléter ces tâches.
Beaucoup de DLL (codeplex) ont été développées par la communauté et seront utilisées.

Outils :
SSIS : MSBuildSSIS2012 (génération & déploiement)
SSAS : SSASHelper (génération)
SSRS : SSRSMSBuildTasks

Démo : Déploiement SQL Server

  • définition du Build avec les différents arguments (deploy, environment, …)
    • fait appel à TFSBuild.exe

>> Toute la base a été déployée sur l’instance DB indiquée, avec les schémas associés.

Démo : Déploiement SSIS

  • le fichier .proj a été modifié pour prendre en compte des options non natifs
  • possibilité d’ajouter un fichier .xaml (WWF) pour avoir des options en plus aussi (BuildSSIS, …)
  • lancement du Build
    • compilation du projet SSIS + déploiement
    • le build peut se lancer aussi en ligne de commande. En changeant les paramètres, on peut facilement déployer les mêmes sources mais sur des instances différentes

Démo : Déploiement SSAS

  • mêmes procédés que précédemment à l’exception qu’un fichier de config.xml peut permettre de customiser ses différentes sources
  • comme indiqué dans la partie Outils, le codeplex pour SSAS ne permet pas de déployer les solutions SSAS. Pour la démo, un script PowerShell a été développé, permettant les déploiements

Démo : Déploiement SSRS

  • pas de surprise par rapport aux précédentes démos. La DLL, récupérée sur codeplex, met à disposition plusieurs méthodes permettant de checker l’existance d’un rapport, l’ajout/suppression d’un rapport, la modification de la source, etc.
  • les étapes de génération et déploiement restent les mêmes que précédemment

Pré-requis :

  • avoir un server TFS configuré
  • adapter tous les codeplex récupérés

Conclusion :
On entend beaucoup parler de TFS (surtout chez les dotNetiens) mais durant mes différentes missions, je n’ai pas eu l’occasion de voir cette méthode mise en place.
Très bonne session, on a pu voir qu’une fois que toutes les configurations, pour chaque type de solution, ont été mises en place, on peut facilement déployer nos solutions sur chacun de nos environnements et du coup, faciliter la tâche à nos chers collègues du support (et nous même).
Reste à voir ce que TFS peut donner avec les tests unitaires par exemple…

SSAS – Processer un cube Analysis Services de 8 manières différentes

SSAS-cube
Dans cet article, nous allons voir ensemble huit méthodes nous permettant de traiter un cube OLAP.
Avant toute chose, faisons un petit rappel sur les différents types de traitement de cube suivants :
Process Default, Process Full, Process Clear, Process Data, Process Update, Process Add, Process Index, Process Structure, Process Clear Structure.

[PASS SUMMIT 2013] Automate your ETL infrastructure with SSIS and PowerShell

Speaker : Allen White – Practice Leader UpSearch

Niveau de la session : 200

1. Simple ETL Process :

* Pour gérer les modifications dans la source et les impacter dans la cible (DWH) : Change Data Capture, Change Tracking, Simple Triggers,

* Exemple d’incremental update (aka UPSERT) :

Source –> Correlate –> Destination (en cas de No Match)

–> Filter (en cas de Match) –> Updates stage

* Le merge en T-SQL n’est pas performant avec les gros volumes de données,

2. Basic BIML Introduction :

* BIML (Business Intelligence Markup Language) :

* Langage basé sur le projet « Vulcan » de Microsoft (à voir sur codeplex),

* BIML utilise le XML pour définir (construire) un package SSIS,

* Il faut installer « BIDS Helper » pour pouvoir faire du BIML directement dans le projet SSIS (clic droit sur le projet, « Add new BIML File »),

* Le développement en BIML est simplifié grâce à l’Intellisens,

* Une fois le code XML du package prêt, il suffit de faire clic droit sur le fichier .biml (disponible sous le dossier projet « Miscellaneous ») et de choisir l’option « Generate SSIS package »,

3. BIML script with PowerShell :

* PowerShell est un langage basé sur l’objet (Object Based Language),

* La création des packages SSIS via PowerShell repose sur le namespace .NET System.Xml.XMLTEXTWRITER,

* Démo : Passer par PowerShell pour créer le script XML du package SSIS qui lui même repose sur BIML (on fait du BIML via PowerShell pour générer un lot SSIS),

4. Conclusion :

Session intéressante qui permet de découvrir d’autres possibilités de créer un package SSIS (autre que via l’éditeur graphique et le drag and drop qui s’en suit). Elle nécessite, néanmoins, la connaissance des 2 langages BIML et PowerShell afin de tirer profit de la session et ne pas se contenter de suivre un code qui est assez long. L’intérêt de créer des packages via PowerShell ou BIML par rapport à la génération classique des lots (via simple clic droit et choix des composants via la toolbox) est un sujet à débattre. On parle d’automatiser et donc simplifier les développements mais je n’en sors pas totalement convaincu eu égard à la longueur du code et au fait de devoir TOUT coder dans le package (connexion, composants, etc.) ! A suivre…

Ismaïl Ben Lamine