
Saludos amigos, en Febrero de este año os conté cómo monitorizar Veeam usando un fichero Powershell que invocaba las librerías de Veeam de Powershell para consultar directamente al servidor, o servidores de Veeam.
Este Post tuvo repercusión mundial, e incluso tuve la oportunidad de explicarlo durante el VeeamON New Orelans a todos aquellos que se acercaron a preguntar. Pero sin embargo tiene un problema en entornos grandes: el tiempo de ejecución del Script es muy alto, aparte de consumir recursos cada vez que se ejecuta.
Este tutorial que os vengo a contar hoy se basa en Veeam Enterprise Manager, y en particular usaremos su RESTfulAPI, es importante antes de continuar que nos aseguremos que lo tenemos instalado, si tenemos licencia para ello.
Tiempos de Respuesta del Script usando el VeeamPSSnapIn vs. Veeam Enterprise Manager RESTfulAPI
Creo que lo mejor para ver por qué este método es mucho mejor es comparar la ejecución de mis dos Scripts, en mi entorno con un VBR, 4 Repositorios, 4 Trabajos de Copia, imagen y detalles más abajo:

Script usando Powershell VeeamPSSnapIn
PS C:\> $sw = [Diagnostics.Stopwatch]::StartNew()
>> .\veeam-stats.ps1
>> $sw.Stop()
>> $sw.Elapsed
{
"Successful-Backups" : 4,
"Warning-Backups" : 0,
"Failes-Backups" : 0,
"Failed-Backups" : 0,
"Running-Backups" : 0,
"Successful-BackupCopys" : 0,
"Warning-BackupCopys" : 0,
"Failes-BackupCopys" : 0,
"Failed-BackupCopys" : 0,
"Running-BackupCopys" : 0,
"Idle-BackupCopys" : 0,
"Successful-Replications" : 0,
"Warning-Replications" : 0,
"Failes-Replications" : 0,
"Failed-Replications" : 0,
"TotalBackupTransfer" : 4,
"REPO - USER1" : 100,
"REPO - VEEAM" : 22,
"REPO - VEEAMDEDUP" : 53,
"REPO - VMFS6" : 100,
"Number of protected Endpoints" : 4,
"TotalBackupRead" : 9,
"Running-Replications" : 0
}
TotalMinutes : 0.0589677816666667
TotalSeconds : 3.5380669
TotalMilliseconds : 3538.0669
Script llamando a la RESTAPI
PS C:\> $sw = [Diagnostics.Stopwatch]::StartNew()
>> .\veeam-stats_EM.ps1
>> $sw.Stop()
>> $sw.Elapsed
{
"SuccessfulJobRuns" : 4,
"ProtectedVms" : 8,
"SourceVmsSize" : 489,
"WarningsJobRuns" : 0,
"FailedJobRuns" : 0,
"REPO - VEEAM" : 21.76 ,
"REPO - VEEAMDEDUP" : 52.66 ,
"REPO - USER1" : 66.18 ,
"REPO - VMFS6" : 100.00 ,
"RunningJobs" : 0
}
TotalMinutes : 0.00540453166666667
TotalSeconds : 0.3242719
TotalMilliseconds : 324.2719
Arquitectura lógica de Veeam Enterprise Manager, Grafana, InfluxDB y Telegraf
Así es cómo quedaría la arquitectura lógica del diseño en este caso monitorizando Veeam usando la RESTAPI de Veeam Enterprise Manager, el Script Powershell puede ser ejecutado desde el propio server Veeam, o desde otro equipo que tenga instalado Telegraf y acceso a la RESTAPI de Veeam Enterprise Manager.
Como podemos observar, el flujo será el siguiente: en el server de veeam (o uno cualquiera) tendremos un script, Telegraf lanzará este script, que conecta a la RESTAPI y recupera información, en el intervalo que mencionemos y enviará las métricas al server de influxdb, en Grafana construiremos el Dashboard a nuestro gusto.
Primeros pasos con la RESTfulAPI de Veeam Enterprise Manager
En el siguiente Blog post, mi amigo y Veeam Vanguard Craig nos cuenta cómo podemos empezar a jugar un poco con la RESTAPI de Veeam Enterprise Manager:
Es un post muy entretenido y didáctico que nos ayudará a la hora de realizar algunas consultas a nuestro entorno.
Creación y configuración del Script Powershell para Veeam
Me he basado en un Script que ya tenía construido Markus Kraus, pero en mi caso he tenido que añadir varias cosas más:
- Crear las variables al principio para hacerlo más sencillo, y editar el script para usar estas variables
- Procesar el output de una manera muy especial para que fuera un InfluxDB output que Telegraf sabe como procesar
- Añadida la línea de RunningJobs
- Añadida la sección entera de Repository, así cómo la lógica para calcular el %
Espero que con vuestra ayuda podamos hacerlo crecer. Descargar el Script desde aquí o ir a GitHub, y ubicarlo en la ruta que queráis en mi caso C:, estar atentos a las primeras líneas y poner vuestros datos, usuario, pass y veeam server fqdn o IP
$user = "TUUSER" $password = "TUPASS" $BRHost = "TUVEEAMENTERPRISESERVER"
Si lanzamos el Script desde nuestra Shell, para probar que todo va bien, debemos ver algo como lo siguiente, pero con vuestros números:
veeamstats_EM successfuljobruns=36 veeamstats_EM successfuljobruns=36 veeamstats_EM protectedvms=6 veeamstats_EM sourcevmsize=224 veeamstats_EM warningjobruns=0 veeamstats_EM failedjobruns=1826 veeamstats_EM runningjobs=1 veeamstats_EM VEEAM=27 veeamstats_EM VEEAMDEDUP=53 veeamstats_EM USER1=66 veeamstats_EM VMFS6=100
Si es así ya estamos listos para configurar Telegraf
Configuración de Telegraf para Veeam
No voy a mencionar todo el proceso de instalación de Telegraf en Windows, porque ya comenté los pasos con detalle en esta otra entrada de Blog. Adjunto las opciones nuevas que tendremos que tener en nuestro Telegraf, lo podemos añadir al final del todo, por favor usar vuestras rutas y nombres, etc:
[[inputs.exec]] commands = ["powershell C:/veeam-stats_EM.ps1"] name_override = "veeamstats_EM" interval = "60s" timeout = "60s" data_format = "influx"
Básicamente lo que estamos haciendo es:
- Usar un ejecutable, un Powershell en este caso, en la ruta que queramos, si tenemos que usar C:/
no C:\, - Hemos seleccionado el nombre que tendrá nuestras stats dentro de Grafana
- Un intervalo largo, ya que no necesitamos ejecutarlo cada menos, pero aquí podéis jugar como queráis
- Un timeout, ya que ejecutar el Script y crear el InfluxDB lleva unos segundos
- El formato en el que crearemos el resultado en este caso “influx”
- Tendremos que ademas decirle al servicio de Telegraf que queremos ejecutarlo como otro usuario:
Ya podemos reiniciar el proceso de Telegraf y revisar el log por si tenemos algún error.
Configuración de Grafana para Veeam Enterprise Manager
Os dejo el Dashboard aquí directo para que lo descarguéis e importéis en vuestro Grafana de la siguiente manera:
Luego seleccionaremos el siguiente botón y ya seleccionamos el fichero que hemos descargado desde Github.

Una vez que cambiéis los paneles con vuestros host de veeam correspondiente, deberíais de ver algo similar a esto, un poco más limitado por ahora que el anterior Dashboard de Veeam.
PD: Las Tablas con los trabajos y VMS son simples HTML de momento, ya que no he conseguido pasarlo a InfluxDB.
Si queréis jugar con este Dashboard en tiempo real podéis ir aquí:
Espero que os guste, y me gustaría dejaros la serie completa aquí, para que empecéis a jugar con los plugins que os he ido contando todos estos años:
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte I (Instalando InfluxDB, Telegraf y Grafana)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte II (Instalar agente Telegraf en Nodos remotos Linux)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte III Integración con PRTG
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IV (Instalar agente Telegraf en Nodos remotos Windows)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte V (Activar inputs específicos, Red, MySQL/MariaDB, Nginx)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VI (Monitorizando Veeam)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VII (Monitorizar vSphere)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte VIII (Monitorizando Veeam con Enterprise Manager)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IX (Monitorizando Zimbra Collaboration)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte X (Grafana Plugins)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XI
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XII – Plugin nativo de Telegraf para vSphere
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIII – Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIV – Veeam Availability Console
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XV – Monitorización IPMI de nuestros Hosts ESXi
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVI – Rendimiento y seguridad avanzada de Veeam Backup for Microsoft Office 365
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVII – Mostrando los Dashboards en dos monitores usando Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVIII – Monitorizar temperatura y estado de Raspberry Pi 4
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XIX (Monitorizando Veeam con Enterprise Manager) Shell Script
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XX (Monitorizando Certificados SSL x.509)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXI (Monitorizando HTTP Responses)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXII (Monitorizando Cloudflare con Mapa)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIII (Monitorizando WordPress con Jetpack RESTful API)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIV (Monitorizando de Veeam for Microsoft Azure)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXV (Monitorizando Consumo Eléctrico)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVI (Monitorizando Veeam Backup for Nutanix)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVII (Monitorizando ReFS y XFS (block-cloning y reflink)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXVIII (Monitorizando HPE StoreOnce)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXIX (Monitorizando PiHole)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXX (Monitorizando Veeam Backup for AWS)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXI (Monitorizando Unifi Protect)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXII (Monitorizando Veeam ONE – experimental)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXIII (Monitorizando NetApp ONTAP)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXIV (Monitorizando Goldshell Miners – JSONv2)

Buenos días.
He seguido todos los pasos sin ningún problema, pero a la hora de ejecutar el script me esta saliendo un error en el jq, lo que hace que solo me muestre los primeros gráficos en grafana, si me puedes ayudar a identificar el problema estaría muy agradecido, de antemano muchas gracias.
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)