EN EnglishDE Deutsch

PRTG-Monitoring – Installationsstatus von Intune-Apps

PRTG-Monitoring – Installationsstatus von Intune-Apps
Foto von Adam Nir / Unsplash

So überwachen Sie mit PRTG Ihre Intune-Apps und deren Rollout-Status (Gerätestatus).

Microsoft Intune Admin Center: Übersicht der App «7zip 22» mit dem Diagramm Device status, 2 Geräte installiert, keine fehlgeschlagen
Bild: Gerätestatus einer Software in Intune / Microsoft Endpoint Manager
PRTG-Sensor «7zip rollout state» mit Kanälen für installed, failed, notApplicable, pendingInstall, total und unknown der App 7zip 22
Bild: PRTG-Monitoring des Rollout-Status der App 7zip

Wenn Sie eine Anwendung mit Microsoft Intune verteilen, möchten Sie die Rollout-Status vielleicht in Ihrem bestehenden Monitoring im Blick behalten, um zu sehen, ob die Installationen auf den Geräten sauber durchlaufen. Eine Möglichkeit dafür ist PRTG-Monitoring für den Endpoint Manager (Intune).

Werden die Arbeitsgeräte mit Microsoft Endpoint Manager (Intune) verwaltet, lassen sich die Informationen aus dem Endpoint Manager auch in Ihr bestehendes PRTG-Monitoring holen.

Für die Überwachung der Kennzahlen verwenden wir die Monitoring-Software von Paessler. PRTG überwacht Datenverkehr, Verfügbarkeit und Performance von Geräten und Anwendungen in IT-Infrastrukturen. Dazu gehören klassische Netzwerkgeräte wie Server, Router, Switches und Firewalls, aber auch virtuelle Umgebungen. Und – wie in diesem Beispiel – mit den passenden Skripten auch Cloud-Komponenten wie der Microsoft Endpoint Manager.

In diesem Beispiel messen wir mit PRTG folgende Kennzahlen aus dem Microsoft Endpoint Manager:

  • Installationsstatus gesamt
    Der Installationsstatus aller Apps auf den Geräten insgesamt. Laut Dokumentation kann der Status einer der folgenden sein:
    "installed", "failed", "notInstalled", "uninstallFailed", "pendingInstall", "unknown", "notApplicable".
    Mit dem Skriptparameter «-states» filtern Sie die Status, die Sie in PRTG messen möchten, und können zusätzlich ein «total» ausgeben (Beispiele unten).
  • Installationsstatus pro Produkt
    Den Installationsstatus bestimmter Apps mit PRTG messen. Mit dem Skriptparameter «-softwarenames» filtern Sie einzelne Apps heraus. Der Parameter akzeptiert auch «all», um alle in Intune gefundenen Apps anzuzeigen, oder «overall», um den Status über alle Apps zusammen anzuzeigen (Beispiele und Anwendungsfälle unten).

Schauen wir uns nun einige Anwendungsfälle an.

Anwendungsfälle

Rollout-Status einer bestimmten App: 7zip

Um den Rollout-Status einer bestimmten App anzuzeigen, verwenden wir folgende Parameter:

v1_prtg_intune_app_status.ps1 -states 'total;installed;failed;pendingInstall;unknown;notApplicable' -softwarenames '7zip 22'
PRTG-Sensor «7zip rollout state» mit Kanälen für installed, failed, notApplicable, pendingInstall, total und unknown der App 7zip 22
Bild: PRTG-Sensor für den Intune-App-Status, Rollout-Status von 7zip

Genauso lassen sich mehrere oder sogar alle Softwarepakete anzeigen, indem Sie mehrere Softwarenamen angeben (-softwarenames '7zip 22;winscp') oder einfach (-softwarenames 'all').

Installationsstatus gesamt

Prüfen wir den Installationsstatus aller Softwarepakete insgesamt. In unserer Testumgebung sind 2 Softwarepakete 2 Geräten zugewiesen. Wie der Screenshot unten zeigt, haben wir deshalb insgesamt 4 Status «installed», es ist also alles in Ordnung. Dafür haben wir folgende Skriptparameter verwendet:

v1_prtg_intune_app_status.ps1 -states 'installed;failed;total;pendingInstall;unknown;notApplicable' -softwarenames 'overall'
PRTG-Sensor «intune software status overall» mit 4 installierten und 0 fehlgeschlagenen Installationen über alle Apps
Bild: PRTG-Sensor für den Intune-App-Status, Rollout-Status gesamt

Alle fehlgeschlagenen Installationen anzeigen

Zum Schluss erstellen wir ein Dashboard für alle fehlgeschlagenen Installationen, damit das Prinzip der Skriptparameter klar wird. Neue Apps in Intune erscheinen automatisch, weil wir -softwarenames 'all' angegeben haben:

v1_prtg_intune_app_status.ps1 -states 'failed' -softwarenames 'all'

Leider gibt es nicht viel zu sehen, weil unsere Pakete «winscp» und «7zip 22» im Moment keine fehlgeschlagenen Installationen haben.

PRTG-Sensor «intune package states - all failed» mit den Kanälen failed - 7zip 22 und failed - winscp, beide bei 0

Hail Mary – nur zum Spass

Und zum Spass noch einer, der einfach alles anzeigt. Obwohl wir in der Testumgebung nur 2 Pakete haben, wird es schnell unübersichtlich.

v1_prtg_intune_app_status.ps1 -states 'all' -softwarenames 'all;overall'
PRTG-Sensor «hail mary» mit einer langen Liste von Kanälen für jeden Status jeder App sowie dem Gesamtstatus

Voraussetzungen

Damit sich die gewünschten Kennzahlen auslesen lassen, braucht es im Azure AD (heute Microsoft Entra ID) einen Service Principal (App-Registrierung). Dieser muss die passenden Leseberechtigungen in der Microsoft Graph API haben.
https://learn.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals

Auf dem PRTG-Server bzw. der PRTG-Probe ist das PowerShell-Modul «MSAL.PS» installiert. Das ist das Modul der Microsoft Authentication Library, mit dem das Skript ein Access Token bezieht.

Install-Module MSAL.PS -Scope AllUsers -Force

PowerShell: MSAL-Bibliothek (Microsoft Authentication Library) installieren

Das Skript verwendet diese Bibliothek an einer Stelle, um ein Access Token zu holen:

# acquire azure authentication token
$MsalToken = Get-MsalToken -TenantId $tenant_id -ClientId $app_id -ClientSecret ($client_secret | ConvertTo-SecureString -AsPlainText -Force)

#Connect to Graph using access token
Connect-Graph -AccessToken $MsalToken.AccessToken

PowerShell: Azure-Authentifizierungstoken beziehen

Erscheint eine Fehlermeldung und lässt sich NuGet nicht installieren, muss auf der Probe, auf der das Skript des Sensors läuft, zuerst TLS 1.2 erzwungen werden.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider NuGet

PowerShell: TLS 1.2 erzwingen

Service Principal (App-Registrierung)

Nun legen Sie im Azure Active Directory einen «Service Principal» (App-Registrierung) inklusive Secret an. Dabei erhalten Sie verschiedene Angaben, die Sie anschliessend für das Monitoring-Skript brauchen, damit es auf die Informationen in Azure zugreifen kann:

  • Application ID (app_id)
  • Azure Tenant ID (tenant_id)
  • Application Client Secret (client_secret)

Wie Sie den Service Principal anlegen, ist im Download (Readme) ausführlich beschrieben.

PowerShell und Graph API

Die gewünschten Kennzahlen aus dem Endpoint Manager stellt Microsoft über die Graph API bereit. Früher hatte jedes Produkt seine eigene API oder sogar mehrere. Exchange kennt EWS, REST, ActiveSync und MAPI/HTTP, Skype for Business hat eine UCWA und eine UCMA, und so liesse sich die Liste endlos fortsetzen. Jede API hat ihre eigene URL, eigene Methoden, ein eigenes Format und eigene Authentifizierungsmechanismen.

Mit Microsoft Graph will Microsoft einen einheitlichen Zugriff auf alle Daten über eine REST-Schnittstelle bieten. Unser Skript verwendet folgenden Endpoint:

https://graph.microsoft.com/V1.0/deviceManagement/managedDevices

Dieser ist bei Microsoft hier genauer dokumentiert.

PRTG-Konfiguration

Sensor anlegen

  • Legen Sie auf der Probe, auf der unser eigenes EXE/XML-Skript installiert ist, einen neuen Sensor vom Typ EXE/Script Advanced an.
  • Wählen Sie als Skript «Powershell Script – v1_prtg_intune_app_status.ps1».
  • Füllen Sie das Feld «Parameters» aus:
    -app_id '<%azure_application_id>'
    -tenant_id '<%azure_tenant_id>'
    -client_secret '<%azure_application_client_secret>'
    -states 'all'
    -softwarenames 'all;overall'
  • Erhöhen Sie den Timeout von 60 s auf 120 s.
  • Stellen Sie das Intervall nach Bedarf ein, z. B. einmal pro Stunde.

Die Alarmierung ist individuell. Die gewünschten Schwellenwerte legen Sie deshalb in den Kanaleinstellungen unter «Value Lookups and Limits» fest. https://www.paessler.com/manuals/prtg/sensor_channels_settings

Mit wenig Aufwand erscheinen wichtige Informationen aus dem Microsoft Endpoint Manager im Monitoring, und wird ein festgelegter Schwellenwert überschritten, löst PRTG einen Alarm aus, per E-Mail, Ticket, Microsoft Teams usw.