Windows – compteur de performance – unable to add these counters

Problème

Soudainement, un de mes serveurs Windows 2012 a eu son compteur de performance réseau HS. En lançant perfmon sur le serveur:

2014-08-20_21-49-38

 

Solution

Lancer lodctr /R ne résous pas le problème. Le compteur est là mais en fait il est désactivé. En lançant lodctr.exe /Q:

[Tcpip] Performance Counters (Disabled)
 DLL Name: %SystemRoot%\System32\Perfctrs.dll
 Open Procedure: OpenTcpIpPerformanceData
 Collect Procedure: CollectTcpIpPerformanceData
 Close Procedure: CloseTcpIpPerformanceData

 

Il suffit donc de l’activer de nouveau:

lodctr.exe /E:Tcpip

 

L’histoire ne dit pas ce qui l’a désactivé au départ…

 

 

RDP 2012(R2) – session collection – profile disk – 800391163

En créant une collection de session sous Windows 2012/2012R2, et en spécifiant un partage pour stocker les profils, vous rencontrez l’erreur 800391163:

rdp2012_session_profile_disk_800391163

Lors de la configuration, un des serveurs RDP va créer le modèle de profil avec sont compte local système:

rdp2012_session_profile_disk_procmon

En détail:

rdp2012_session_profile_disk_procmon2

Bien que vous ayez donné les droits NTFS aux comptes ordinateurs, cela ne passe toujours pas.

Il faut donner « everyone » en « full control » au niveau du partage, « change » ne suffit pas:

rdp2012_session_profile_disk_share

Et voilà une affaire de résolue ^^

Nagios: Superviser la santé Hyper-V 2012 – BPA & VM

Ce plugin Nagios vérifie la santé d’un serveur Hyper-V via un script PowerShell + NRPE (nsclient++):

  • Exécute et récupère le résultat du scan BPA (Best Practice Analyzer)
  • Vérifie que toutes les VM sont en cours d’exécution
  • Vérifie qu’aucune VM n’a un état de fonctionnement autre que normal

Les états avertissements et critiques sont déclenchés par la somme des:

  • Quantité d’alertes BPA
  • Nombre de VM dans un état autre que sain

Certaines VM (modèles…) peuvent être ignorées via un argument

Un nouveau scan BPA est lancé à chaque exécution, mais le résultat n’est récupéré que la fois suivante (async) (prend trop de temps).

Les données de performances suivantes sont fournies:

  • # VM arrêtées,
  • # VM avec problème de santé,
  • # Erreurs BPA
  • # Avertissements BPA

Configuration testée

Linux:

  • Centos 6.4 x64
  • Nagios 3.4.4
  • check_nrpe 2.13
  • Centreon 2.4.2

Windows:

  • Windows Server 2012 (nécessaire pour avoir le module PowerShell Hyper-V)
  • nsclient++ 0.4.1 x64

Arguments du script

  • excludeVM (séparées par des virgules)
  • maxWarn (Avertissement si supérieur) (1 par défaut)
  • maxError (Critique si supérieur) (5 par défaut)

maxWarn et maxCrit doivent être des entiers

Exemples d’utilisation

Exemple en exécution directe PowerShell:

PS C:\Program Files\NSClient++\scripts>. .\lotp_check_hyper-v.ps1
WARNING: 'VM Not Running:'2 'VM issues:'0 BPA Error:1 BPA Warning:12|VM_Not_Running=2 VM_issues=0 BPA_Error=1 BPA_Warning=12
PS C:\Program Files\NSClient++\scripts>

Exécution NRPE:

[root~]# /usr/lib64/nagios/plugins/check_nrpe -H myMonitoredServer -n -c check_hyper-v
WARNING: 'VM Not Running:'2 'VM issues:'0 BPA Error:1 BPA Warning:12|VM_Not_Running=2 VM_issues=0 BPA_Error=1 BPA_Warning=12
[root~]#

Installation:

Sur les Windows:

  • Activer l’exécution de scripts PowerShell non signés : Set-ExecutionPolicy RemoteSigned
  • copier le script dans C:\Program Files\NSClient++\scripts
  • Ajouter dans le fichier nsclient.ini:
    • [/settings/external scripts/wrapped scripts]
      check_hyper-v=lotp_check_hyper-v.ps1 -excludeVM $ARG1$ -maxWarn $ARG2$ -maxError $ARG3$

Configuration:

Par exemple, sur Centreon, en ajoutant la commande:

$USER1$/check_nrpe -H $HOSTADDRESS$ -n -t 60 -c check_hyper-v -a $ARG1$ $ARG2$ $ARG3$

Téléchargement

lotp_check_hyper-v.ps1

Code source en direct:

 

# ====================================================================
# Ping a list of targets through NRPE
# Author: Mathieu Chateau - LOTP
# mail: mathieu.chateau@lotp.fr
# version 0.1
# ====================================================================

#
# Require Set-ExecutionPolicy RemoteSigned.. or sign this script with your PKI 
#

# ============================================================
#
#  Do not change anything behind that line!
#
param 
(
	[string]$targets,
	[int]$maxWarn = 1,
	[int]$maxError = 5
)

$output=""
$exitcode=2
$countOK=0
$countKO=0
$targetsArray=@()
$targetsArray=$targets -split(' ')
Remove-Job -Name * -Confirm:$false -Force
foreach($t in $targetsArray)
{
	Start-Job -Name $t -ArgumentList $t -ScriptBlock {param($t);if(Test-Connection -ComputerName $t  -Count 2 -Quiet -ErrorAction SilentlyContinue){return $true}else{return $false}} |Out-Null
}
while(Get-Job -State Running)
{
	Start-Sleep -Milliseconds 500
}
foreach ($job in Get-Job)
{
	$temp=Receive-Job -Name $job.Name
	if($temp)
	{
		$countOK++
	}
	else
	{
		$countKO++
		$output+=$job.Name+" - "
	}
}
if ($countKO -gt $maxError)
{
	$state="CRITICAL"
	$exitcode=2
}
elseif ($countKO -gt $maxWarn)
{
	$state="WARNING"
	$exitcode=1
}
else
{
	$state="OK"
	$exitcode=0
}

$output=$state+":"+$countOK+" online"+" - "+$countKO+" offline - "+$output
$output+='|'
$output+="online="+$countOK+";"+$maxWarn+";"+$maxError+";"+" "
$output+="offline="+$countKO+";"+$maxWarn+";"+$maxError+";"
Write-Host $output
exit $exitcode

dcdiag – VerifyEnterpriseReferences – msDFSR-ComputerReferenceBL – Q312862

En préparant un plugin nagios sur la santé AD, dcdiag /e /c a eu la bonne idée de remonter cette alerte:

Starting test: VerifyEnterpriseReferences

The following problems were found while verifying various important DN

references. Note, that these problems can be reported because of

latency in replication. So follow up to resolve the following

problems, only if the same problem is reported on all DCs for a given

domain or if the problem persists after replication has had

reasonable time to replicate changes. 

 [1] Problem: Missing Expected Value

Base Object: CN=myDC,OU=Domain Controllers,DC=mydomain,DC=net

Base Object Description: "DC Account Object"

Value Object Attribute Name: msDFSR-ComputerReferenceBL

Value Object Description: "SYSVOL FRS Member Object"

Recommended Action: See Knowledge Base Article: Q312862

 

L’article Q312862 n’est plus vraiment d’actualité, mais le problème sous-jacent est bien réel.

Depuis Windows 2008, la réplication AD est censée se faire via DFS-R et non plus FRS. Cependant, cela implique de n’avoir plus que des DC > Windows Server 2003.

Donc si vos DC sont à jours, il faut utiliser dfsrmig dont les principales commandes sont:

Vérifier l’état global:

PS C:\users\mchateau\Desktop> dfsrmig /GetGlobalState

Current DFSR global state: 'Start'

Succeeded.

Les différents états possibles sont:

0 'Start'
1 'Prepared'
2 'Redirected'
3 'Eliminated'

==>Si vous êtes déjà en DFS-R, l’état est Eliminated.

 

Vérifier l’état de la migration:

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState

All domain controllers have migrated successfully to the Global state ('Start').
Migration has reached a consistent state on all domain controllers.
Succeeded.

 

Passer à l’état Prepared:

PS C:\users\mchateau\Desktop> dfsrmig /SetGlobalState 1

Current DFSR global state: 'Start'

New DFSR global state: 'Prepared'

Migration will proceed to 'Prepared' state. DFSR service will copy the contents of SYSVOL to SYSVOL_DFSR folder.
If any domain controller is unable to start migration, try manual polling.
Or run with option /CreateGlobalObjects.
Migration can start anytime between 15 minutes to 1 hour.
Succeeded.

 

Vérifier l’état (en cours):

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState

The following domain controllers have not reached Global state ('Prepared'):

Domain Controller (Local Migration State) - DC Type
===================================================

myDC01 ('Start') - Writable DC
myDC02 ('Start') - Writable DC
myDC03 ('Start') - Primary DC
myDC04 ('Start') - Writable DC

Migration has not yet reached a consistent state on all domain controllers.
State information might be stale due to Active Directory Domain Services latency.
PS C:\users\mchateau\Desktop>

 

Il ne reste plus qu’à faire les 2 états suivants tour à tour:

dfsrmig /SetGlobalState 2
dfsrmig /SetGlobalState 3

 

Au final:

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState
All domain controllers have migrated successfully to the Global state ('Eliminated').
Migration has reached a consistent state on all domain controllers.
Succeeded.