Monitorizando los perfiles de Citrix con Centreon y Grafana

Este documento lo utilizaremos para monitorizar con Centreon el tamaño y número de ficheros que tienen nuestros perfiles móviles de Citrix, claro está que podemos utilizarlo para monitorizar otras carpetas.

En principio nos basaremos en un script de PowerShell que normalmente ejecutaremos desde el servidor que es el que almacena los perfiles. Este script leerá todo el contenido del directorio que indiquemos y nos sacará un resumen por cada usuario, su número de ficheros, y lo que ocupa su carpeta o perfil. Además el script está totalmente preparado y el output lo hará correctamente para tener métricas de cada usuario. Como siempre, esto lo ejecutaremos de manera remota con NRPE, así que si todavía no sabes cómo funciona o cómo instalártelo, echa un vistazo antes a este post viejo.

 

Si nos descargamos el siguiente script de PowerShell y modificamos la línea 15, que es la ruta de la carpeta a analizar lo tenemos listo para probar!

# Vacio variables, yo que se pq.. :)
$Objetos = ""
$Tamano = ""
$Profile = ""
$TotalObjects = ""
$SizeMB = ""
$lines = ""
$line = ""
$Todos = ""
$Files = ""
$Size = ""

# Exporta a CSV las carpetas con su tamaño y total de objetos
(Get-Culture).NumberFormat.NumberDecimalSeparator = '.'
Get-ChildItem -path "F:\PerfilesCitrixUPM*" | Foreach {
$Files = Get-ChildItem $_.FullName -Recurse| Where-Object { -not $_.PSIsContainer } -ErrorAction SilentlyContinue
$Size = (( $Files | Measure-Object -Property Length -Sum).Sum /1MB)
$Size = [math]::round($Size,2)

[PSCustomObject]@{Profile = $_.Name ; TotalObjects = "$($Files.Count)" ; SizeMB = $Size}
} | Export-CSV "perfiles-size.csv" -NoTypeInformation

# Formatea estilo Nagios
$lines = Get-Content .\perfiles-size.csv | Select -skip 1 | ConvertFrom-Csv -Header Profile,TotalObjects,SizeMB
ForEach ($line in $lines){
$Profile = $($line.Profile)
$TotalObjects = $($line.TotalObjects) -as [int] 
$SizeMB = $($line.SizeMB) -as [int]

$Todos =$Profile.replace(' ','') + "_tamano=" + $SizeMB + " " + $Profile.replace(' ','') + "_ficheros=" + $TotalObjects + " " + $Todos

# Más de 1000 objetos
If ($TotalObjects -gt 1000){
   $Objetos = $Profile.replace(' ','') + ", " + $Objetos
}

# Más de 100Mb (100)
If ($SizeMB -gt 200){
   $Tamano =  $Profile.replace(' ','') + ", " + $Tamano
}
}

If ($Objetos.length -gt 0 -And $Tamano.length -gt 0){
   Write-Host "CRITICAL - Muchos archivos en" $Objetos + "Perfil grande en" $Tamano"|"$Todos
   exit 2
}
ElseIf ($Objetos.length -gt 0){
   Write-Host "CRITICAL - Muchos archivos en" $Objetos"|"$Todos
   exit 2
}
ElseIf ($Tamano.length -gt 0){
   Write-Host "CRITICAL - Perfil grande en" $Tamano"|"$Todos
   exit 2
}
Else {
   Write-Host "OK - Perfiles correctamente |"$Todos
   exit 0
}

 

 

Y ahora damos de alta como ya conocemos, en el fichero nsclient.ini la configuración necesaria para ejecutar ese script desde la máquina de Centreon, lo único y a tener en cuenta, si tenéis muchos ficheros y tarda mucho en hacer la consulta, le podemos subir el timeout o el número de caracteres si fuese necesario, algo como esto nos serviría:

[/settings/NRPE/server]
timeout = 120
payload length = 15000

[/settings/external scripts]
timeout = 120

[/settings/external scripts/scripts]
check_perfiles = cmd /c echo scripts\\Tamano_Perfiles_UPM.ps1; exit($lastexitcode) | powershell.exe -command -

 

Y si ese fuera nuestro caso, a la hora de crear el servicio en Centreon tras pasarle el argumento ‘check_perfiles’ que indicamos en el nsclient.ini, podemos acompañarlo de ‘ -P 15000 -t 120’ como argumentos extra, esto es, si necesitamos ampliar el número de caracteres o el timeout a algo específico, en plan ‘ñapa’ por no tocar el Comando.

 

Y listo! Tras exportar la configuración ya tendremos controlado la jauría de perfiles Citrix UPM o si utilizamos otro tipo de perfil móvil, o si queremos monitorizar cualquier otra carpeta para ver su tamaño, o número de archivos.

 

Y nada, por recordar, aunque esta gráfica sea super chunga, pero era por dar una idea, que podéis integrarlo con Grafana, que es muy sencillo, si quieres saber cómo montártelo, recuerda este otro documento.

 

Espero que haya servido de utilidad, un saludo a tod@s!