Generaremos una nueva database en influx, un usuario y sus permisos correspondientes para almacenar los datos.
> CREATE DATABASE CTX_VDI
> USE CTX_VDI
> CREATE USER "VDI" WITH PASSWORD 'VDI'
> GRANT ALL ON CTX_VDI TO VDI
Agregar la database a Grafana del tipo InfluxDB y rellenamos los campos necesarios.

Configuraremos la database, usuario y contraseña en el fichero de telegraf.conf de nuestras máquinas.
[[outputs.influxdb]]
## The full HTTP or UDP URL for your InfluxDB instance.
##
## Multiple URLs can be specified for a single cluster, only ONE of the
## urls will be written to each interval.
# urls = ["unix:///var/run/influxdb.sock"]
# urls = ["udp://127.0.0.1:8089"]
urls = ["http://IP_INFLUXDB:8086"] ###*********IP O NOMBRE SERVIDOR INFLUX
## The target database for metrics; will be created as needed.
database = "CTX_VDI"
## HTTP Basic Auth
username = "VDI" ###*********USUARIO DATABASE
password = "VDI" ###*********PASSWORD DATABASE
Generamos el siguiente Script para sacar la lista de procesos de los usuarios y pasarlos a Json para influxdb.
$ProcesosUser = Get-Process -includeUserName | Where-Object {$_.username -notmatch "^NT"}
$Procobject = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process
$row = @()
Foreach ($ProcU in $ProcesosUser) {
Foreach ($Procobj in $Procobject) {
If (($ProcU.name -eq $Procobj.name)-and ($ProcU.name -ne "idle") -and ($ProcU.username -notlike "Window Manager*") -and ($ProcU.username -ne $null)){
$row += @{
AppUser = $ProcU.username
Aplicacion = $ProcU.name
AppCPU = $Procobj.PercentProcessorTime
AppMem = ([math]::Round($Procobj.WorkingSetPrivate/1Mb,2))
}
}
}
}
$row | ConvertTo-JSon
Ejemplo de Salida de fichero Json:
[
{
"AppMem": 4.47,
"AppUser": "MORDOR\\administrator",
"Aplicacion": "ApplicationFrameHost",
"AppCPU": 0
},
{
"AppMem": 0.53,
"AppUser": "MORDOR\\administrator",
"Aplicacion": "cmd",
"AppCPU": 0
},
{
"AppMem": 0.53,
"AppUser": "MORDOR\\administrator",
"Aplicacion": "cmd",
"AppCPU": 0
}
]
Agregaremos en el fichero telegraf.conf lo siguiente, para que telegraf ejecute el Powershell y recopile los datos en formato Json. https://github.com/influxdata/telegraf/tree/master/plugins/parsers/json
[[inputs.exec]]
name_override = "VDI_ProcessList"
commands = ['powershell -ExecutionPolicy Bypass \\\\mordor.gon\\netlogon\\telegraf\\List_Process.ps1 -RunType $true']
timeout = "60s"
data_format = "json"
tag_keys = ["Aplicacion","AppUser"]
json_string_fields = ["AppMem","AppCPU"]
En la variable "json_string_fields" agregaremos todas las variables que vienen del Json y en tag_keys son de array (No pueden estar en las dos variables.
También se pueden generar entradas con otros formatos CSV, nagios, ... https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
Visualizacion en Grafana
Crearemos un nuevo dashboard para ver los datos.
Datos en Tabla
Podremos crear un Dashboard de Tabla con la siguiente query.


En Visualización podemos configurarlo para que nos advierta en rojo o amarillo

Datos en Grafica
Podremos mostrar los datos con graficas


Grafica por aplicacion
Crearemos un nuevo Dashboard y entraremos en los settings en variables, para crear dos nuevas queries.

Crearemos una variable para el hostname y otro para las aplicaciones, indicaremos un (Name y Label) del tipo (Query), seleccionaremos el Data Source, el tipo de refresco en mi caso al cargar el dashboard e introducimos la query que me muestre las aplicaciones de la tabla "VDI_ProcessList".

En la parte superior podremos seleccionar la máquina o la aplicación.

Agregaremos nuestras queries en el panel.

