Installer manuellement l’intégration Log Analytics de Configuration Manager

  • Last update on June 17th, 2025

Veuillez noter que cet article est valable exclusivement pour la version auto-hébergée de Configuration Manager.

 

L’intégration de Configuration Manager avec Azure Log Analytics vous permet de collecter, surveiller et analyser les données de Sync pour un reporting avancé et l’automatisation. Dans Configuration Manager, l’intégration Log Analytics peut être installée automatiquement via la page Rapports

Si vous ne pouvez pas utiliser l’installateur automatique, ou si vous souhaitez utiliser des ressources personnalisées dans votre tenant, vous pouvez suivre les étapes ci-dessous. Ce guide vous accompagne dans la création d’un enregistrement d’application Azure, la configuration d’un groupe de ressources avec l’infrastructure analytique nécessaire, l’attribution des autorisations et la mise à jour des variables de pipeline.

Créer un enregistrement d’application

  1. Accédez à Azure Active Directory > App registrations > Nouvel enregistrement.
  2. Nom :
    Suggéré : Simeon Cloud Reporting
  3. Enregistrez l’application.
  4. Créez un secret client :
    Dans l’enregistrement d’application, accédez à Certificats et secrets > Nouveau secret client.

Approvisionner les ressources Azure

Créez un groupe de ressources dédié qui inclut les éléments suivants :

  • Log Analytics Workspace
  • Point de terminaison de collecte de données (DCE)
  • Règle de collecte de données (DCR)

Ces ressources peuvent être mises à disposition à l’aide de modèles ARM ou via le portail Azure. 

Développer pour voir le modèle ARM

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "string"
    },
    "streamName": {
      "type": "string"
    },
    "dataCollectionRuleName": {
      "type": "string",
      "defaultValue": "SyncLogCollectionRule"
    },
    "dataCollectionEndpointName": {
      "type": "string",
      "defaultValue": "SyncLogCollectionEndpoint"
    },
    "retentionInDays": {
      "type": "int",
      "defaultValue": 120
    }
  },
  "resources": [
    {
      "type": "Microsoft.OperationalInsights/workspaces",
      "apiVersion": "2022-10-01",
      "name": "[parameters('workspaceName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "sku": {
          "name": "pergb2018"
        },
        "retentionInDays": "[parameters('retentionInDays')]",
        "features": {
          "enableLogAccessUsingOnlyResourcePermissions": true
        },
        "workspaceCapping": {
          "dailyQuotaGb": -1
        },
        "publicNetworkAccessForIngestion": "Enabled",
        "publicNetworkAccessForQuery": "Enabled"
      }
    },
    {
      "type": "Microsoft.Insights/dataCollectionEndpoints",
      "apiVersion": "2022-06-01",
      "name": "[parameters('dataCollectionEndpointName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "networkAcls": {
          "publicNetworkAccess": "Enabled"
        }
      }
    },
    {
      "type": "Microsoft.OperationalInsights/workspaces/tables",
      "apiVersion": "2021-12-01-preview",
      "name": "[concat(parameters('workspaceName'), '/SyncLogs_CL')]",
      "dependsOn": [
        "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
      ],
      "properties": {
        "totalRetentionInDays": "[parameters('retentionInDays')]",
        "plan": "Analytics",
        "schema": {
          "name": "SyncLogs_CL",
          "columns": [
            { "name": "Action",                         "type": "string"   },
            { "name": "Baseline_Name",                  "type": "string"   },
            { "name": "Baseline_Property_Value",        "type": "string"   },
            { "name": "Change_Type",                    "type": "string"   },
            { "name": "Configuration",                  "type": "string"   },
            { "name": "Configuration_Description",      "type": "string"   },
            { "name": "Configuration_Full_Name",        "type": "string"   },
            { "name": "Configuration_Reconciliation_Type","type": "string"  },
            { "name": "Configuration_Type",             "type": "string"   },
            { "name": "Configuration_Type_Description", "type": "string"   },
            { "name": "Error_Message",                  "type": "string"   },
            { "name": "Old_Property_Value",             "type": "string"   },
            { "name": "Organization",                   "type": "string"   },
            { "name": "Property_Name",                  "type": "string"   },
            { "name": "Property_Reconciliation_Type",   "type": "string"   },
            { "name": "Property_Value",                 "type": "string"   },
            { "name": "Sync_Comment",                   "type": "string"   },
            { "name": "Sync_Date_Time",                 "type": "datetime" },
            { "name": "Sync_Run_Name",                  "type": "string"   },
            { "name": "Tenant",                         "type": "string"   },
            { "name": "TimeGenerated",                  "type": "datetime" }
          ]
        },
        "retentionInDays": "[parameters('retentionInDays')]"
      }
    },
    {
      "type": "Microsoft.Insights/dataCollectionRules",
      "apiVersion": "2021-09-01-preview",
      "name": "[parameters('dataCollectionRuleName')]",
      "location": "[resourceGroup().location]",
      "dependsOn": [
        "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]",
        "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('dataCollectionEndpointName'))]",
        "[resourceId('Microsoft.OperationalInsights/workspaces/tables', parameters('workspaceName'), 'SyncLogs_CL')]"
      ],
      "properties": {
        "dataCollectionEndpointId": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('dataCollectionEndpointName'))]",
        "streamDeclarations": {
          "[parameters('streamName')]": {
            "columns": [
              { "name": "Action",                          "type": "string"   },
              { "name": "Baseline_Name",                   "type": "string"   },
              { "name": "Baseline_Property_Value",         "type": "string"   },
              { "name": "Change_Type",                     "type": "string"   },
              { "name": "Configuration",                   "type": "string"   },
              { "name": "Configuration_Description",       "type": "string"   },
              { "name": "Configuration_Full_Name",         "type": "string"   },
              { "name": "Configuration_Reconciliation_Type","type": "string"   },
              { "name": "Configuration_Type",              "type": "string"   },
              { "name": "Configuration_Type_Description",  "type": "string"   },
              { "name": "Error_Message",                   "type": "string"   },
              { "name": "Old_Property_Value",              "type": "string"   },
              { "name": "Organization",                    "type": "string"   },
              { "name": "Property_Name",                   "type": "string"   },
              { "name": "Property_Reconciliation_Type",    "type": "string"   },
              { "name": "Property_Value",                  "type": "string"   },
              { "name": "Sync_Comment",                    "type": "string"   },
              { "name": "Sync_Date_Time",                  "type": "datetime" },
              { "name": "Sync_Run_Name",                   "type": "string"   },
              { "name": "Tenant",                          "type": "string"   }
            ]
          }
        },
        "destinations": {
          "logAnalytics": [
            {
              "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]",
              "name": "[parameters('workspaceName')]"
            }
          ]
        },
        "dataFlows": [
          {
            "streams": [
              "[parameters('streamName')]"
            ],
            "destinations": [
              "[parameters('workspaceName')]"
            ],
            "transformKql": "source\n| extend TimeGenerated = todatetime(Sync_Date_Time)\n",
            "outputStream": "Custom-SyncLogs_CL"
          }
        ]
      }
    }
  ],
  "outputs": {
    "dataCollectionEndpointId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('dataCollectionEndpointName'))]"
    },
    "dataCollectionRuleId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
    },
    "logAnalyticsResourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]"
    }
  }
}
 
 

Attribuer le rôle requis

Mettre à jour les variables du pipeline dans DevOps

Accédez à votre projet Configuration Manager dans Azure DevOps > Pipelines > Bibliothèque > Groupes de variables et sélectionnez le groupe de variables nommé « Sync ». 

S’il n’existe pas de groupe de variables, vous devez en créer un nouveau. 

Mettez à jour/définissez les variables suivantes :

  • LogAnalyticsEndpointUrl
    Construit selon le format suivant :
    • {URL du point de terminaison de collecte de données}/dataCollectionRules/{dcr-id}/streams/Custom-SimeonSync
    • Exemple
      https://simeoncloud-simeoncloud-com-0xzf.eastus-1.ingest.monitor.azure.com/dataCollectionRules/dcr-bcf4176c6571489bdfgdf1de778781988b6/streams/Custom-SimeonSync
  • SimeonSyncIntegrationAppId ID d’application 
  • SimeonSyncIntegrationAppSecret : la valeur du secret client que vous avez créée précédemment.
  • SimeonSyncIntegrationTenant : le nom de domaine du tenant