Installer sous Windows
Cette page installe les composants Mugnsoft comme services Windows. Un seul script PowerShell fait tout pour un composant : telechargement, verification de signature, configuration, regle de pare-feu, installation du service, enregistrement aupres du Webserver et demarrage. Les etapes manuelles qu’il automatise sont decrites ensuite.
Avant de commencer
- Windows 10 / 11 ou Windows Server 2016 et suivants, 64 bits, et un PowerShell eleve (clic droit → Executer en tant qu’administrateur).
- Pour verifier les paquets :
gpg, fourni avec Git for Windows ou Gpg4win. Le script trouve l’un ou l’autre. - Les flux reseau ci-dessous ouverts dans vos pare-feu (le script ajoute la regle du Pare-feu Windows de l’hote ou il s’execute). Chaque composant ecoute sur son propre port d’API, et le Webserver se connecte a lui :
| De | Vers | Port (defaut) | Pourquoi |
|---|---|---|---|
| Navigateurs des utilisateurs | Webserver | TCP 9090 (PortWEB) |
Interface web |
| Monitors, Integrators, Sentinel Agents | Webserver | TCP 8050 (PortAPI) |
Enregistrement et envoi des donnees |
| Webserver | chaque Monitor / Integrator / Sentinel Agent | son port (paquets : monitor 8072, integrator 8053, sentinel 8079) |
Le Webserver pilote le composant |
- Installez d’abord le Webserver : tous les autres composants ont besoin de deux valeurs qu’il produit.
- Un composant de chaque type par hote : les noms de service sont fixes (
MugnsoftWebserver,MugnsoftMonitor,MugnsoftIntegrator,MugnsoftDiscoveryAgent,MugnsoftWebserverFront). - Sentinel Agent : installez le runtime Npcap si l’hote doit remonter la bande passante reseau (voir les prerequis).
Vos valeurs
Les commandes de cette page utilisent ces valeurs d’exemple. Remplacez-les par les votres ; tout le reste se copie tel quel.
| Valeur | Origine | Exemple (a remplacer !) |
|---|---|---|
| Adresse du Webserver | IP ou nom DNS de l’hote Webserver, tel que les autres hotes le joignent | 10.0.0.5 |
| Port d’API du Webserver | PortAPI de webserver.json (defaut) |
8050 |
_sharedInternal |
Affiche a la fin de l’installation du Webserver (etape 1), aussi dans webserver.json |
3f9c...e1 (64 caracteres hexa) |
| Fichier de licence | license_MNS.dat envoye par Mugnsoft, un par Webserver et par Integrator, lie a son hote |
.\license_MNS.dat |
| Localisation | Texte libre affiche sur le Webserver (monitor, sentinel) | Paris |
Option A — Script (recommande)
Dans un PowerShell eleve, telechargez mugnsoft-install.ps1 sur chaque hote :
Invoke-WebRequest https://doc.mugnsoft.com/materials/mugnsoft-install.ps1 -OutFile mugnsoft-install.ps1 -UseBasicParsing
1. Webserver (en premier). Placez votre license_MNS.dat a cote du script, puis :
powershell -ExecutionPolicy Bypass -File .\mugnsoft-install.ps1 webserver -License .\license_MNS.dat
La fin de sa sortie donne ce dont les autres hotes ont besoin, par exemple :
Webserver installed in C:\Mugnsoft\webserver
Web UI: https://<this host>:9090/ (admin / admin, change it at first login)
API: <this host>:8050 -> the -Webserver value for the components
_sharedInternal (pass it to every component as -SharedInternal):
3f9c...e1
2. Sonde monitor, Integrator, Sentinel Agent, chacun sur son hote, avec votre adresse de Webserver et votre _sharedInternal :
# sonde monitor
powershell -ExecutionPolicy Bypass -File .\mugnsoft-install.ps1 monitor -Webserver 10.0.0.5:8050 -SharedInternal 3f9c...e1 -Location Paris
# Integrator (il a son propre fichier de licence)
powershell -ExecutionPolicy Bypass -File .\mugnsoft-install.ps1 integrator -Webserver 10.0.0.5:8050 -SharedInternal 3f9c...e1 -License .\license_MNS.dat
# Sentinel Agent
powershell -ExecutionPolicy Bypass -File .\mugnsoft-install.ps1 sentinel -Webserver 10.0.0.5:8050 -SharedInternal 3f9c...e1 -Location Paris
Chaque execution se termine par ... installed ... and registered with 10.0.0.5:8050. Activez ensuite le composant.
Ce que fait le script, dans l’ordre, en s’arretant au premier probleme avec un message indiquant quoi corriger :
- Controle les arguments, l’execution elevee et l’absence du dossier d’installation (il n’ecrase jamais une installation).
- Telecharge
mugnsoft-<composant>-<version>.windows-amd64.zipet son.sigdepuishttps://mugnsoft.com/bin/<version>/, et verifie la signature avec la cle GPG publique de Mugnsoft (dans un trousseau jetable). - L’extrait dans
C:\Mugnsoft\<dossier du composant>. - Ecrit les valeurs dans le fichier
.jsondu composant (et copie le fichier de licence). - Ajoute une regle entrante du Pare-feu Windows
Mugnsoft <composant>pour le ou les ports du composant. - Lance
<composant>.exe install: un monitor, un Integrator ou un Sentinel Agent s’enregistre a ce moment aupres du Webserver, et le service n’est cree que si cela reussit. - Demarre le service.
| Parametre | Defaut | Usage |
|---|---|---|
-Version <x.y.z> |
4.2.0 |
Version a installer |
-Dir <chemin> |
C:\Mugnsoft |
Dossier parent de l’installation |
-Package <fichier.zip> |
telechargement | Installer un paquet deja present (son .sig doit etre a cote) |
-NoVerify |
desactive | Sauter la verification de signature (deconseille) |
-Name <nom> |
<composant>-<nom de l'ordinateur> |
Nom du composant sur le Webserver : lettres, chiffres, tirets |
-Port <port> |
celui du paquet | Port d’API du composant |
-Advertise <ip> |
detectee | Monitor uniquement : l’IP que le Webserver doit composer pour joindre la sonde (voir Verifier l’adresse) |
-WebserverUrl <url> |
https://<hote webserver>:9090 |
Integrator uniquement : lien vers l’interface web utilise dans les notifications |
-ApiPort, -WebPort |
8050, 9090 |
Webserver uniquement |
-FrontPki <dossier> |
— | Webserver-Front uniquement, voir Installer le Webserver-Front |
-NoFirewall |
desactive | Ne pas ajouter la regle du Pare-feu Windows |
Get-Help .\mugnsoft-install.ps1 -Detailed affiche la meme liste.
<#
.SYNOPSIS
Download, verify, configure, install and start one Mugnsoft component as a
Windows service, in one command. Run it from an elevated PowerShell.
.EXAMPLE
.\mugnsoft-install.ps1 webserver -License .\license_MNS.dat
.EXAMPLE
.\mugnsoft-install.ps1 monitor -Webserver 10.0.0.5:8050 -SharedInternal 3f9c...e1 -Location Paris
.PARAMETER Component
webserver, monitor, integrator, sentinel or webserver-front.
.PARAMETER Version
Release to install (default 4.2.0).
.PARAMETER Dir
Parent folder (default C:\Mugnsoft); the component goes in <Dir>\<package folder>.
.PARAMETER Package
Install this package (.zip) instead of downloading it.
.PARAMETER NoVerify
Skip the GPG signature check (not recommended).
.PARAMETER License
webserver and integrator: the license_MNS.dat received from Mugnsoft.
.PARAMETER ApiPort
webserver: API port (default 8050).
.PARAMETER WebPort
webserver: web UI port (default 9090).
.PARAMETER Webserver
monitor, integrator, sentinel: the Webserver API address, host:port (e.g. 10.0.0.5:8050).
.PARAMETER SharedInternal
monitor, integrator, sentinel: the "_sharedInternal" value of the Webserver's webserver.json.
.PARAMETER Name
Component name (default <component>-<computer name>).
.PARAMETER Port
Component API port (default: the package's).
.PARAMETER Location
Location shown on the Webserver (monitor, sentinel).
.PARAMETER Advertise
monitor: IP address the Webserver must use to reach this probe (default: auto-detected).
.PARAMETER WebserverUrl
integrator: Webserver web UI URL used in notifications (default https://<webserver host>:9090).
.PARAMETER FrontPki
webserver-front: the front\ folder produced by mugnsoft-front-pki.sh.
.PARAMETER NoFirewall
Do not add the Windows Firewall rule opening the component's port(s).
#>
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, Position = 0)]
[ValidateSet("webserver", "monitor", "integrator", "sentinel", "webserver-front")]
[string]$Component,
[string]$Version = "4.2.0",
[string]$Dir = "C:\Mugnsoft",
[string]$Package = "",
[switch]$NoVerify,
[string]$License = "",
[string]$ApiPort = "",
[string]$WebPort = "",
[string]$Webserver = "",
[string]$SharedInternal = "",
[string]$Name = "",
[string]$Port = "",
[string]$Location = "",
[string]$Advertise = "",
[string]$WebserverUrl = "",
[string]$FrontPki = "",
[switch]$NoFirewall
)
$ErrorActionPreference = "Stop"
$ProgressPreference = "SilentlyContinue" # Invoke-WebRequest is 10x faster without the progress bar
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$BaseUrl = "https://mugnsoft.com/bin"
function Fail($msg) { Write-Host "ERROR: $msg" -ForegroundColor Red; exit 1 }
function Info($msg) { Write-Host "==> $msg" -ForegroundColor Cyan }
# Run a native program and capture stdout+stderr. Windows PowerShell turns every
# stderr line into a terminating error under ErrorActionPreference=Stop, so relax
# it for the call only.
function Native([string]$exe, [string[]]$a) {
$prev = $ErrorActionPreference; $ErrorActionPreference = "Continue"
try { $o = & $exe @a 2>&1 | ForEach-Object { "$_" }; $code = $LASTEXITCODE } finally { $ErrorActionPreference = $prev }
return @{ Out = ($o -join "`n"); Code = $code }
}
# component -> package folder and binary
$pkg = @{ "webserver" = "webserver"; "webserver-front" = "webserver-front"; "monitor" = "monitor";
"integrator" = "integrator"; "sentinel" = "discovery_agent" }[$Component]
$bin = "$pkg.exe"; $conf = "$pkg.json"
$target = Join-Path $Dir $pkg
# ---- checks, before anything is written -------------------------------------
$admin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $admin) { Fail "run this script from an elevated PowerShell (Run as administrator)" }
foreach ($p in @(@("-ApiPort", $ApiPort), @("-WebPort", $WebPort), @("-Port", $Port))) {
if ($p[1] -and -not ($p[1] -match '^\d+$' -and [int]$p[1] -ge 1 -and [int]$p[1] -le 65535)) { Fail "$($p[0]) must be a port number, got '$($p[1])'" }
}
foreach ($p in @(@("-Location", $Location), @("-Advertise", $Advertise), @("-WebserverUrl", $WebserverUrl))) {
if ($p[1] -notmatch '^[A-Za-z0-9._:/@+=, -]*$') { Fail "$($p[0]) contains characters that are not allowed: '$($p[1])'" }
}
if ($Component -in @("webserver", "integrator")) {
if (-not $License) { Fail "-License <license_MNS.dat> is required for the $Component" }
if (-not (Test-Path $License -PathType Leaf)) { Fail "license file not found: $License" }
}
if ($Component -in @("monitor", "integrator", "sentinel")) {
if (-not $Webserver) { Fail "-Webserver <host:port> is required (the Webserver API address)" }
if ($Webserver -notmatch '^[A-Za-z0-9.-]+:\d+$') { Fail "-Webserver must look like host:port, e.g. 10.0.0.5:8050" }
if (-not $SharedInternal) { Fail "-SharedInternal is required: copy `"_sharedInternal`" from the Webserver's webserver.json" }
if ($SharedInternal -notmatch '^[A-Za-z0-9._~!#%^*+=-]+$') { Fail "-SharedInternal holds unexpected characters" }
if (-not $Name) { $Name = "$Component-$($env:COMPUTERNAME.ToLower())" }
if ($Name -notmatch '^[A-Za-z0-9-]+$') { Fail "-Name may hold letters, digits and hyphens only: '$Name'" }
}
if ($Component -eq "webserver-front") {
if (-not $FrontPki) { Fail "-FrontPki <dir> is required: the front\ folder made by mugnsoft-front-pki.sh" }
if (-not ((Test-Path "$FrontPki\config\ssl\certificates\webserver.pem") -and (Test-Path "$FrontPki\webserver-front.json"))) {
Fail "$FrontPki does not look like the front\ folder of mugnsoft-front-pki.sh" }
}
if (Test-Path $target) { Fail "$target already exists: this script installs, it does not upgrade (see the Upgrade section of the docs)" }
$work = Join-Path $env:TEMP ("mugnsoft-install-" + [guid]::NewGuid().ToString("N"))
New-Item -ItemType Directory $work | Out-Null
try {
# ---- 1. get the package -----------------------------------------------------
$file = "mugnsoft-$pkg-$Version.windows-amd64.zip"
if (-not $Package) {
Info "Downloading $file"
try { Invoke-WebRequest "$BaseUrl/$Version/$file" -OutFile "$work\$file" -UseBasicParsing } catch { Fail "download failed: $BaseUrl/$Version/$file" }
if (-not $NoVerify) { try { Invoke-WebRequest "$BaseUrl/$Version/$file.sig" -OutFile "$work\$file.sig" -UseBasicParsing } catch { Fail "signature download failed" } }
$Package = "$work\$file"
} else {
if (-not (Test-Path $Package -PathType Leaf)) { Fail "package not found: $Package" }
$Package = (Resolve-Path $Package).Path
if (-not $NoVerify -and -not (Test-Path "$Package.sig")) { Fail "no $Package.sig next to the package: download it too, or pass -NoVerify" }
}
# ---- 2. verify its signature (gpg from PATH, Git for Windows or Gpg4win) ------
if (-not $NoVerify) {
$gpg = (Get-Command gpg -ErrorAction SilentlyContinue).Source
$git = (Get-Command git -ErrorAction SilentlyContinue).Source # Git for Windows ships gpg in usr\bin
$fromGit = if ($git) { Join-Path (Split-Path (Split-Path $git)) "usr\bin\gpg.exe" } else { "" }
foreach ($c in @($fromGit, "$env:ProgramFiles\Git\usr\bin\gpg.exe", "${env:ProgramFiles(x86)}\GnuPG\bin\gpg.exe", "$env:ProgramFiles\GnuPG\bin\gpg.exe")) {
if (-not $gpg -and $c -and (Test-Path $c)) { $gpg = $c }
}
if (-not $gpg) { Fail "gpg not found: install Git for Windows or Gpg4win to verify the package (or pass -NoVerify)" }
Info "Verifying the GPG signature"
try { Invoke-WebRequest "$BaseUrl/Mugnsoft_public.key" -OutFile "$work\Mugnsoft_public.key" -UseBasicParsing } catch { Fail "could not download Mugnsoft_public.key" }
# a throw-away keyring, given as a RELATIVE --homedir: Git's (MSYS) gpg misreads
# an absolute Windows path there, Gpg4win accepts both
Push-Location $work
New-Item -ItemType Directory gnupg | Out-Null
Native $gpg @("--homedir", "gnupg", "--batch", "--quiet", "--import", "$work\Mugnsoft_public.key") | Out-Null
$sig = if (Test-Path "$Package.sig") { "$Package.sig" } else { "$work\$file.sig" }
$ok = (Native $gpg @("--homedir", "gnupg", "--batch", "--verify", $sig, $Package)).Code -eq 0
Pop-Location
if (-not $ok) { Fail "SIGNATURE CHECK FAILED for $Package : do not install it" }
Info "Signature OK"
} else {
Write-Host "WARNING: signature not verified (-NoVerify)" -ForegroundColor Yellow
}
# ---- 3. extract ---------------------------------------------------------------
Info "Extracting to $target"
New-Item -ItemType Directory -Force $Dir | Out-Null
Expand-Archive $Package -DestinationPath "$work\x"
if (-not (Test-Path "$work\x\$pkg")) { Fail "unexpected package layout: no $pkg\ folder inside" }
Move-Item "$work\x\$pkg" $target
Set-Location $target
if (-not (Test-Path $conf)) { Fail "$conf missing from the package" }
# set "key": "value" in a flat JSON file, adding the key when it is absent;
# written back as UTF-8 WITHOUT BOM (a BOM makes the JSON unreadable to the component)
$script:text = [IO.File]::ReadAllText("$target\$conf")
function SetKey($key, $val) {
$re = '("' + [regex]::Escape($key) + '"\s*:\s*)"[^"]*"'
if ($script:text -match $re) { $script:text = [regex]::Replace($script:text, $re, { param($m) $m.Groups[1].Value + '"' + $val + '"' }) }
else { $script:text = ([regex]'\{').Replace($script:text, "{`r`n `"$key`": `"$val`",", 1) }
}
# ---- 4. configure ---------------------------------------------------------------
Info "Configuring $conf"
$ports = @()
switch ($Component) {
"webserver" {
Copy-Item $License "$target\license_MNS.dat"
if ($ApiPort) { SetKey "PortAPI" $ApiPort }
if ($WebPort) { SetKey "PortWEB" $WebPort }
}
"webserver-front" { Copy-Item -Recurse -Force "$FrontPki\*" $target; $script:text = [IO.File]::ReadAllText("$target\$conf") }
default {
SetKey "_sharedInternal" $SharedInternal
SetKey "webserver" $Webserver
SetKey "name" $Name
SetKey "description" "Mugnsoft $Component on $env:COMPUTERNAME"
if ($Port) { SetKey "port" $Port }
if ($Component -ne "integrator") { SetKey "location" $Location }
if ($Component -eq "monitor" -and $Advertise) { SetKey "ip" $Advertise }
if ($Component -eq "integrator") {
Copy-Item $License "$target\license_MNS.dat"
SetKey "os" "windows"
if (-not $WebserverUrl) { $WebserverUrl = "https://" + $Webserver.Split(":")[0] + ":9090" }
SetKey "webserverUrl" $WebserverUrl
}
}
}
[IO.File]::WriteAllText("$target\$conf", $script:text, (New-Object Text.UTF8Encoding $false))
$cfg = $script:text | ConvertFrom-Json
if ($Component -in @("webserver", "webserver-front")) { $ports = @($cfg.PortAPI, $cfg.PortWEB) } else { $ports = @($cfg.port) }
# ---- 5. open the port(s) in Windows Firewall --------------------------------------
if (-not $NoFirewall) {
$rule = "Mugnsoft $Component"
if (-not (Get-NetFirewallRule -DisplayName $rule -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -DisplayName $rule -Direction Inbound -Protocol TCP -LocalPort $ports -Action Allow | Out-Null
Info "Firewall: inbound TCP $($ports -join ', ') allowed (rule '$rule')"
}
}
# ---- 6. install the service (components register with the Webserver here) ------
Info "Installing the service"
$out = (Native "$target\$bin" @("install")).Out
$out -split "`r?`n" | Where-Object { $_ -and $_ -notmatch '^time=' } | ForEach-Object { Write-Host " $_" }
# "Service '<name>' installed." - not "Service '<name>' not installed."
if ($out -notmatch "Service '[^']+' installed\.") { Fail "the service was not installed - read the messages above, fix, then run: cd $target; .\$bin install" }
# ---- 7. start it ----------------------------------------------------------------
Info "Starting the service"
(Native "$target\$bin" @("start")).Out -split "`r?`n" | Where-Object { $_ -and $_ -notmatch '^time=' } | ForEach-Object { Write-Host " $_" }
# install generates the webserver's _sharedInternal: read the config again
$cfg = [IO.File]::ReadAllText("$target\$conf") | ConvertFrom-Json
Write-Host ""
switch ($Component) {
"webserver" {
Write-Host "Webserver installed in $target"
Write-Host " Web UI: https://<this host>:$($cfg.PortWEB)/ (admin / admin, change it at first login)"
Write-Host " API: <this host>:$($cfg.PortAPI) -> the -Webserver value for the components"
Write-Host " _sharedInternal (pass it to every component as -SharedInternal):"
Write-Host " $($cfg._sharedInternal)"
}
"webserver-front" { Write-Host "Webserver-Front installed in $target - now configure ADMIN (see the Webserver-Front install page)." }
default {
Write-Host "$Component '$Name' installed in $target and registered with $Webserver."
Write-Host "Last step: on the Webserver, open Settings (gear) > Components, right-click '$Name' and choose enable server."
}
}
} finally {
Set-Location $env:TEMP
Remove-Item -Recurse -Force $work -ErrorAction SilentlyContinue
}
Option B — Pas a pas
Les memes etapes a la main, dans un PowerShell eleve.
1. Telecharger et verifier (sur chaque hote ; $c vaut webserver, monitor, integrator ou discovery_agent) :
$v = "4.2.0"; $c = "monitor" # <- changer $c pour chaque hote
$f = "mugnsoft-$c-$v.windows-amd64.zip"
Invoke-WebRequest https://mugnsoft.com/bin/$v/$f -OutFile $f -UseBasicParsing
Invoke-WebRequest https://mugnsoft.com/bin/$v/$f.sig -OutFile "$f.sig" -UseBasicParsing
Invoke-WebRequest https://mugnsoft.com/bin/Mugnsoft_public.key -OutFile Mugnsoft_public.key -UseBasicParsing
Verifiez dans Git Bash (ou une invite Gpg4win) depuis le meme dossier. La commande doit afficher Good signature from "Mugnsoft ..." ; l’avertissement This key is not certified est attendu. Un BAD signature signifie que le fichier est corrompu ou altere : supprimez-le.
gpg --import Mugnsoft_public.key
gpg --verify mugnsoft-monitor-4.2.0.windows-amd64.zip.sig mugnsoft-monitor-4.2.0.windows-amd64.zip
Puis extrayez (de retour dans PowerShell) :
Expand-Archive $f -DestinationPath C:\Mugnsoft
cd C:\Mugnsoft\$c
2. Hote Webserver : copiez la licence, installez et demarrez, puis lisez _sharedInternal (le Webserver en ecrit un aleatoire dans webserver.json lors de install) :
Copy-Item C:\chemin\vers\license_MNS.dat C:\Mugnsoft\webserver\
cd C:\Mugnsoft\webserver
.\webserver.exe install; .\webserver.exe start
Select-String _sharedInternal webserver.json
New-NetFirewallRule -DisplayName "Mugnsoft webserver" -Direction Inbound -Protocol TCP -LocalPort 8050,9090 -Action Allow
3. Hote Monitor / Integrator / Sentinel Agent : editez le fichier .json du composant (monitor.json, integrator.json ou discovery_agent.json) avec le Bloc-notes et renseignez :
| Cle | Valeur | Note |
|---|---|---|
_sharedInternal |
la valeur du Webserver | Doit etre identique a celle du Webserver |
webserver |
10.0.0.5:8050 |
Adresse et port d’API du Webserver |
name |
un nom unique, ex. monitor-paris-1 |
Lettres, chiffres, tirets. La valeur du paquet est un exemple |
location, description |
votre texte | Les valeurs du paquet sont des exemples |
port |
garder, ou un autre port libre | Le Webserver doit pouvoir le joindre |
ip |
monitor uniquement, optionnel | L’IP que le Webserver doit composer, si l’hote en a plusieurs |
webserverUrl |
https://10.0.0.5:9090 |
Integrator uniquement |
Pour l’Integrator, copiez aussi son license_MNS.dat dans C:\Mugnsoft\integrator\. Puis ouvrez le port, installez (ce qui enregistre le composant) et demarrez, en remplacant monitor et 8072 par votre composant et son port :
New-NetFirewallRule -DisplayName "Mugnsoft monitor" -Direction Inbound -Protocol TCP -LocalPort 8072 -Action Allow
.\monitor.exe install; .\monitor.exe start
install doit afficher deux fois status: Success (enregistrement, puis certificat) et Service '...' installed.
Activer les composants
Un composant enregistre reste en attente tant que vous ne l’activez pas :
- Connectez-vous a
https://10.0.0.5:9090/(admin/admin; un nouveau mot de passe est exige a la premiere connexion). - Ouvrez le menu engrenage → components, clic droit sur le nouveau composant → enable server. Un message de succes confirme que le Webserver l’a joint.
Verifier l’adresse. Le Webserver se connecte a l’adresse IP enregistree par le composant. Un hote avec plusieurs interfaces reseau peut enregistrer la mauvaise : enable server echoue alors avec getting access token: Failed. Make sure the component is running. Clic droit sur le composant → edit server, saisissez l’IP que le Webserver peut joindre, enregistrez, puis activez-le a nouveau. Pour un monitor, vous pouvez aussi passer -Advertise <ip> (ou renseigner ip dans monitor.json) avant l’installation.
Gerer les services
| Tache | Commande (depuis le dossier du composant) | Equivalent Windows |
|---|---|---|
| Etat | — | Get-Service MugnsoftMonitor |
| Arreter / demarrer / redemarrer | .\monitor.exe stop, .\monitor.exe start, .\monitor.exe restart |
Restart-Service MugnsoftMonitor |
| Executer au premier plan (debogage) | .\monitor.exe stop; .\monitor.exe run |
— |
| S’enregistrer a nouveau aupres du Webserver | .\monitor.exe register |
— |
| Supprimer le service | .\monitor.exe uninstall (puis supprimer le dossier) |
— |
| Journaux | log\monitor.log dans le dossier du composant |
— |
Remplacez monitor / MugnsoftMonitor par webserver / MugnsoftWebserver, integrator / MugnsoftIntegrator, discovery_agent / MugnsoftDiscoveryAgent. Un composant se retire du Webserver depuis sa page Components (clic droit → delete server).
Pour une mise a jour, suivez l’ordre et les controles des notes de version de la version cible ; cette page couvre les nouvelles installations.
Sondes monitor : navigateurs pour les parcours EUM
URL, API, TCP, ping et les autres types de moniteurs n’ont besoin de rien de plus. Les parcours EUM (Web UI) ont besoin d’un navigateur sur l’hote de la sonde : Chrome, Edge ou Firefox. Au demarrage, le monitor telecharge le webdriver correspondant s’il peut joindre Internet. Sinon, telechargez vous-meme le driver correspondant a la version du navigateur et placez-le dans C:\Mugnsoft\monitor\drivers\ :
| Navigateur | Driver | Telechargement |
|---|---|---|
| Chrome | chromedriver.exe |
Chrome for Testing |
| Firefox | geckodriver.exe |
geckodriver releases |
| Edge | msedgedriver.exe |
Edge WebDriver |
Pour enregistrer des parcours, utilisez Mugnsoft Pulse ou le Mugnsoft IDE.
Depannage
| Message | Cause et correction |
|---|---|
self pre-registering ... status: Failed / Make sure that component can reach the Webserver API endpoint. |
L’hote ne joint pas webserver sur le port d’API : verifiez la valeur, le service Webserver, les pare-feu. Testez avec Test-NetConnection 10.0.0.5 -Port 8050 |
a server is already defined with this name |
Un composant de ce nom existe sur le Webserver (une tentative precedente). Supprimez-le sur la page Components, ou choisissez un autre -Name, puis relancez install |
a server is already defined with this IP and port |
Un composant a deja enregistre cette adresse IP et ce port (une installation precedente de cet hote). Supprimez-le sur la page Components, ou utilisez un autre -Port, puis relancez install |
Failed to install service '...': service ... already exists |
Ce type de composant est deja installe sur cet hote : un par hote. Utilisez-le, ou faites d’abord uninstall |
No license ...\license_MNS.dat file found |
Integrator : copiez son fichier de licence dans son dossier (-License avec le script) |
license not valid for this machine |
Le fichier de licence appartient a un autre hote : les licences sont liees a l’hote |
enable server : getting access token: Failed |
Le Webserver ne joint pas le composant : mauvaise IP enregistree (voir Verifier l’adresse), ou port du composant bloque |
enable server / Push Settings : rejected the internal login (HTTP 401) |
_sharedInternal differe de celui du Webserver : corrigez-le dans le .json du composant et redemarrez le composant |
running scripts is disabled on this system |
Lancez le script avec powershell -ExecutionPolicy Bypass -File ... comme ci-dessus |
<dossier> already exists (script) |
Le script n’ecrase jamais une installation : choisissez un autre -Dir, ou supprimez d’abord l’ancienne (uninstall) |
SIGNATURE CHECK FAILED (script) / BAD signature |
Le paquet est corrompu ou altere : telechargez-le a nouveau ; ne l’installez jamais |
Voir aussi
- Prerequis — systemes compatibles et dimensionnement
- Installer le Webserver-Front — la replique DMZ en lecture seule
- Arborescence — contenu du dossier de chaque composant
- Composants en detail — tous les parametres de chaque composant
- Durcissement —
_sharedInternal, certificats et autres parametres de securite