Greetings friends, I bring you a new entry about Grafana and Veeam, which I’m sure you’ll like and put in your labs. Back in 2017 I told you how they monitor Veeam using the PowerShell CMDlets and also how to do it using PowerShell and Enterprise Manager RESTful API. These entries have had tens of thousands of hits, but they were more of a proof of concept as they were missing a lot of detail.
Today, I am pleased to bring you a complete and finished Dashboard to monitor Veeam Backup & Replication, without limit of servers, jobs, VMs or Repos, thanks to Veeam Enterprise Manager and its RESTful API (only in Enterprise Plus)
Veeam Enterprise Manager Dashboard
When you finish the entry you will have something similar to that Dashboard that will allow you to visualize:
Enterprise Manager Section – Summary
- Total number of Veeam Backup & Replication Servers managed by Enterprise Manager
- Total number of Veeam Backup Repositories that have Veeam Backup & Replication Servers managed by Enterprise Manager
- Total number of Veeam Backup Proxies that have Veeam Backup & Replication Servers managed by Enterprise Manager
- Total number of Veeam Jobs that have Veeam Backup & Replication Servers managed by Enterprise Manager
- Total number of protected VMs that have Veeam Backup & Replication Servers managed by Enterprise Manager
- Disk space consumption per Veeam Backup Repository
VBR section – Veeam Backup Performance
- CPU consumption of the Veeam Backup Server
- Veeam Backup Server RAM Consumption
- Veeam Backup Server Disk Space Consumption
- Veeam Backup Server Network Consumption
VBR Section – Backup Jobs
- Name of each Backup Job, with the last known status in the period selected in the Dashboard
VBR Section – Replica Jobs
- Name of each Replica Job, with the last known status in the period selected in the Dashboard
VBR Section – Protected VMs
- Name of each VM protected by Veeam that includes a backup job, with the last known status in the period selected in the Dashboard
VBR Section – Replicated VMs
- Name of each VM replicated by Veeam that includes a replica job, with the last known status in the period selected in the Dashboard
VBR Section – Job Historical Performance and Duration
- Table with status information of all backup jobs, ordered by date, includes name and last known status in the period selected in the Dashboard.
- Table with information of the duration of each backup and replication job, ordered by date, includes duration and name of the job according to the period selected in the Dashboard.
Topology with all logical components
This entry is a little different from the previous ones since in this case, we will use a combination of telegraf for Microsoft Windows to collect metrics from the Veeam Backup servers and a shell script to collect the Enterprise Manager metrics using RESTful API. The design would be something similar to this:As we can see, the telegraf agent will collect all counters with metrics, and send them to InfluxDB, in turn, the shell script will download metrics from Enterprise Manager using RESTful API, which will send to InfluxDB as well, from where we can comfortably view them with Grafana.
How-to download and configure telegraf for Microsoft Windows
As we can see, telegraf has already a Windows Event Log plugin ready to be used. Before we made use of it, we need to download telegraf as an agent in our Veeam ONE Server, and configure it properly.
Really easy, from a PowerShell with admin rights, we ran the next commands:
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.25.1_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.25.1_windows_amd64.zip Expand-Archive .\telegraf-1.25.1_windows_amd64.zip -DestinationPath 'C:\Program Files\InfluxData\telegraf\' cd "C:\Program Files\InfluxData\telegraf" mv .\telegraf-1.25.1\telegraf.* .
That has installed the latest version of telegraf, moved to the correct path, and so on. Let’s add it now as Windows Service:
.\telegraf.exe --service install --config "C:\Program Files\InfluxData\telegraf\telegraf.conf"
Let’s move to the configuration part, there is not much to do, just to make sure your agent uses the hostname, the output is right as well. For example, here is my agent and outputs section:
[agent] interval = "10s" round_interval = true metric_batch_size = 1000 metric_buffer_limit = 10000 collection_jitter = "0s" flush_interval = "10s" flush_jitter = "0s" precision = "0s" logtarget = "file" logfile = "C:/Program Files/InfluxData/telegraf/telegraf.log" hostname = "veeamone.jorgedelacruz.es" omit_hostname = false [outputs.influxdb_v2] urls = ["https://YOURINFLUXDB:8086"] token = "YOUROWNTOKEN" organization = "NAMEOFYOURORG" bucket = "YOURBUCKET"
And finally, at the end of the file, let’s add the really powerful metrics to monitor the OS:
[[inputs.win_perf_counters]] [[inputs.win_perf_counters.object]] # Processor usage, alternative to native, reports on a per core. ObjectName = "Processor" Instances = ["*"] Counters = [ "% Idle Time", "% Interrupt Time", "% Privileged Time", "% User Time", "% Processor Time", "% DPC Time", ] Measurement = "win_cpu" # Set to true to include _Total instance when querying for all (*). # IncludeTotal=false # Print out when the performance counter is missing from object, counter or instance. # WarnOnMissing = false # Gather raw values instead of formatted. Raw value is stored in the field name with the "_Raw" suffix, e.g. "Disk_Read_Bytes_sec_Raw". # UseRawValues = true [[inputs.win_perf_counters.object]] # Disk times and queues ObjectName = "LogicalDisk" Instances = ["*"] Counters = [ "% Idle Time", "% Disk Time", "% Disk Read Time", "% Disk Write Time", "% User Time", "% Free Space", "Current Disk Queue Length", "Free Megabytes", ] Measurement = "win_disk" [[inputs.win_perf_counters.object]] ObjectName = "PhysicalDisk" Instances = ["*"] Counters = [ "Disk Read Bytes/sec", "Disk Write Bytes/sec", "Current Disk Queue Length", "Disk Reads/sec", "Disk Writes/sec", "% Disk Time", "% Disk Read Time", "% Disk Write Time", ] Measurement = "win_diskio" [[inputs.win_perf_counters.object]] ObjectName = "Network Interface" Instances = ["*"] Counters = [ "Bytes Received/sec", "Bytes Sent/sec", "Packets Received/sec", "Packets Sent/sec", "Packets Received Discarded", "Packets Outbound Discarded", "Packets Received Errors", "Packets Outbound Errors", ] Measurement = "win_net" [[inputs.win_perf_counters.object]] ObjectName = "System" Counters = [ "Context Switches/sec", "System Calls/sec", "Processor Queue Length", "System Up Time", ] Instances = ["------"] Measurement = "win_system" [[inputs.win_perf_counters.object]] # Example counterPath where the Instance portion must be removed to get data back, # such as from the Memory object. ObjectName = "Memory" Counters = [ "Available Bytes", "Cache Faults/sec", "Demand Zero Faults/sec", "Page Faults/sec", "Pages/sec", "Transition Faults/sec", "Pool Nonpaged Bytes", "Pool Paged Bytes", "Standby Cache Reserve Bytes", "Standby Cache Normal Priority Bytes", "Standby Cache Core Bytes", ] Instances = ["------"] # Use 6 x - to remove the Instance bit from the counterPath. Measurement = "win_mem" [[inputs.win_perf_counters.object]] # Example query where the Instance portion must be removed to get data back, # such as from the Paging File object. ObjectName = "Paging File" Counters = [ "% Usage", ] Instances = ["_Total"] Measurement = "win_swap"
We are good to go, as simple as from the PowerShell:
telegraf.exe --service start
Download and configure the veeam-enterprisemanager.sh script
We have almost everything ready, we have one last step, the script that will make all this work, we will download the latest version from the Github repository:
This shell script, can be downloaded and run from the telegraf server, or influxDB, or any other Linux. We will have to edit the configuration parameters:
## # Configurations ## # Endpoint URL for InfluxDB veeamInfluxDBURL="http://YOURINFLUXSERVERIP" #Your InfluxDB Server, http://FQDN or https://FQDN if using SSL veeamInfluxDBPort="8086" #Default Port veeamInfluxDB="telegraf" #Default Database veeamInfluxDBUser="USER" #User for Database veeamInfluxDBPassword="PASSWORD" #Password for Database # Endpoint URL for login action veeamUsername="YOUREMUSER" #Your username, if using domain based account, please add it like [email protected] (if you use domain\account it is not going to work!) veeamPassword="YOUREMPASSWORD" veeamAuth=$(echo -ne "$veeamUsername:$veeamPassword" | base64); veeamRestServer="YOUREMSERVERIP" veeamRestPort="9398" #Default Port
Once the changes are done, make the script executable with chmod:
chmod +x veeam_enterprisemanager.sh
Before you run it, make sure you have jq installed, for this use the next, or um install jq if RHEL:
apt-get install jq
We’re ready, let’s run the script:
./veeam_enterprisemanager.sh
The output of the command should be something like the next, without errors:
Writing veeam_em_overview_repositories to InfluxDB Writing veeam_em_overview_repositories to InfluxDB Writing veeam_em_overview_repositories to InfluxDB Writing veeam_em_nas_jobs to InfluxDB Writing veeam_em_nas_jobs to InfluxDB
If so, please now add this script to your crontab, like for example every 30 minutes:
*/30 * * * * /home/oper/veeam_enterprisemanager.sh >> /var/log/veeam_enterprisemanager.log 2>&1
We are ready to move to the next step.
Checking that we are ingesting information with Chronograf
The normal thing at this point, if we have done all the steps well, is that we are already sending information collected by the script to InfluxDB, if we perform a search using the wonderful InfluxDB web, we can check that we have information:
All the variables in this new Veeam script for Enterprise Manager are stored in veeam_em_* so it’s really easy to find them.
Grafana Dashboards
I created a Dashboard from scratch by selecting the best requests to the database, finishing off colors, thinking about graphics and how to display them, and everything is automated so that it fits our environment without any problem and without having to edit anything manually. The Dashboard can be found here, once imported, you can use the top drop-down menus to select between organizations, backups, repositories and proxies, VMs, etc.:
Import Grafana Dashboards easily
So that you don’t have to waste hours configuring a new Dashboard, and ingesting and debugging you want, I have already created four wonderful Dashboards with everything you need to monitor our environment in a very simple way, you will be like the image I showed you above. Select the name you want and enter the ID: 10349, which is the unique ID of the Dashboard, or the URL:
With the menus above you can display and adjust the Dashboard to your VBR, Repositories, Jobs, VMs, etc.:Please leave your feedback in the comments, or on GitHub.
I hope you like it, and I would like to leave you the complete series here, so you can start playing with the plugins that I have been telling you about all these years:
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part I (Installing InfluxDB, Telegraf, and Grafana on Ubuntu 20.04 LTS)
- 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 – (Monitorizando URL e IPS con Telegraf y Ping)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XII (Native Telegraf Plugin for vSphere)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIII (Veeam Backup for Microsoft Office 365 v4)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIV – Veeam Availability Console
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XV (IPMI Monitoring of our ESXi Hosts)
- Looking for Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XVI (Performance and Advanced Security of Veeam Backup for Microsoft Office 365)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XVII (Showing Dashboards on Two Monitors Using Raspberry Pi 4)
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XVIII – Monitorizar temperatura y estado de Raspberry Pi 4
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XIX (Monitoring Veeam with Enterprise Manager) Shell Script
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIV (Monitoring Veeam Backup for Microsoft Azure)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXV (Monitoring Power Consumption)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVI (Monitoring Veeam Backup for Nutanix)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVII (Monitoring ReFS and XFS (block-cloning and reflink)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXVIII (Monitoring HPE StoreOnce)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIX (Monitoring Pi-hole)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXIX (Monitoring Veeam Backup for AWS)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXI (Monitoring Unifi Protect)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXII (Monitoring Veeam ONE – experimental)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXIII (Monitoring NetApp ONTAP)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXIV (Monitoring Runecast)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXV (GPU Monitoring)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXVI (Monitoring Goldshell Miners – JSONv2)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XXXVII (Monitoring Veeam Backup for Google Cloud Platform)
- En Busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte XXXVIII (Monitorizando Temperatura y Humedad con Xiaomi Mijia)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XL (Veeam Backup for Microsoft 365 – Restore Audit)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLI (Veeam Backup for Salesforce)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLII (Veeam ONE v12 Audit Events)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLIII (Monitoring QNAP using SNMP v3)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLIV (Monitoring Veeam Backup & Replication API)
- Looking for the Perfect Dashboard: InfluxDB, Telegraf, and Grafana – Part XLV (Monitoring Synology using SNMP v3)
Freeks says
When I run the script, I get an errors:
[root@veeam-influxdb home]# sh veeam_enterprisemanager.sh
veeam_enterprisemanager.sh: line 37: jq: command not found
veeam_enterprisemanager.sh: line 47: jq: command not found
veeam_enterprisemanager.sh: line 48: jq: command not found
veeam_enterprisemanager.sh: line 49: jq: command not found
veeam_enterprisemanager.sh: line 50: jq: command not found
veeam_enterprisemanager.sh: line 51: jq: command not found
veeam_enterprisemanager.sh: line 52: jq: command not found
veeam_enterprisemanager.sh: line 53: jq: command not found
veeam_enterprisemanager.sh: line 54: jq: command not found
HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: a6c03a96-3da7-11ea-9cfe-005056bac63f
X-Influxdb-Build: OSS
X-Influxdb-Error: unable to parse ‘veeam_em_overview,host=vbem_ip_address veeamBackupServers=,veeamProxyServers=,veeamRepositoryServers=,veeamRunningJobs=,veeamScheduledJobs=,veeamSuccessfulVmLastestStates=,veeamWarningVmLastestStates=,veeamFailedVmLastestStates=’: missing field value
X-Influxdb-Version: 1.7.9
X-Request-Id: a6c03a96-3da7-11ea-9cfe-005056bac63f
Date: Thu, 23 Jan 2020 06:14:45 GMT
Content-Length: 284
jorgeuk says
Hello,
Please install jq first, apt-get install jq, or yum install jq. 🙂
Freeks says
I have installed jq-1.5-1.0.1.el6.x86_64 but:
[root@veeam-influxdb home]# sh veeam_enterprisemanager.sh
parse error: Invalid numeric literal at line 1, column 10
HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: 54c11662-3e5f-11ea-8066-005056bac63f
X-Influxdb-Build: OSS
X-Influxdb-Error: unable to parse ‘veeam_em_overview,host=vbem_ip_address veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number
X-Influxdb-Version: 1.7.9
X-Request-Id: 54c11662-3e5f-11ea-8066-005056bac63f
Date: Fri, 24 Jan 2020 04:09:35 GMT
Content-Length: 311
jorgeuk says
Hello, do not run it with sh, but with ./veeam_enterprisemanager.sh
Have you made it executable with chmod +x veeam_enterprisemanager.sh ?
Freeks says
Hi, Jorgeuk.
It makes no difference how to run a script:
[root@veeam-influxdb home]# ./veeam_enterprisemanager.sh
parse error: Invalid numeric literal at line 1, column 10
HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: 7afaeb0b-3e91-11ea-8944-005056bac63f
X-Influxdb-Build: OSS
X-Influxdb-Error: unable to parse ‘veeam_em_overview,host=vbem_ip_address veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number
X-Influxdb-Version: 1.7.9
X-Request-Id: 7afaeb0b-3e91-11ea-8944-005056bac63f
Date: Fri, 24 Jan 2020 10:08:34 GMT
Sure. Rights assigned:
-rwxr-xr-x 1 root root 26554 Jan 24 07:09 veeam_enterprisemanager.sh
jorgeuk says
Which OS are you using?
Freeks says
[root@veeam-influxdb home]# uname -a
Linux veeam-influxdb 4.1.12-94.5.7.el6uek.x86_64 #2 SMP Thu Jul 20 18:39:04 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@veeam-influxdb home]# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”6.9″
jorgeuk says
Okay, so a RHEL 6 at the end. Have you filled all your InfluxDB and EM settings, and you have all the components listening and all?
Freeks says
Yes, I edited the fields in the script veeam_enterprisemanager.sh and in the config file telegraf.conf
Freeks says
Hi, jorgeuk.
From :9399/web/#/api/reports/summary/job_statistics I get empty field:
<JobStatisticsReportFrame
…
…
output from script:
[root@localhost]# echo $veeamEMOJobUrl
{“RunningJobs”:0,”ScheduledJobs”:24,”ScheduledBackupJobs”:24,”ScheduledReplicaJobs”:0,”TotalJobRuns”:21,”SuccessfulJobRuns”:21,”WarningsJobRuns”:0,”FailedJobRuns”:0,”MaxJobDuration”:2760,”MaxBackupJobDuration”:2760,”MaxReplicaJobDuration”:0,”MaxDurationBackupJobName”:”VM-NAME”,”MaxDurationReplicaJobName”:””,”BackupJobStatusReportLink”:”Workspace/ViewReport.aspx?definition=7962844d-db6c-4d29-8b6e-4e0f7db0785f&ShowParams=1″}
and as result:
X-Influxdb-Error: unable to parse ‘veeam_em_overview_jobs,host=vbem_ip_address,veeamMaxDurationBackupJobName=VM-NAME,veeamMaxDurationReplicaJobName= veeamRunningJobs=0,veeamScheduledJobs=24,veeamScheduledBackupJobs=24,veeamScheduledReplicaJobs=0,veeamTotalJobRuns=21,veeamSuccessfulJobRuns=21,veeamWarningsJobRuns=0,veeamFailedJobRuns=0,veeamMaxJobDuration=2760,veeamMaxBackupJobDuration=2760,veeamMaxReplicaJobDuration=0’: missing tag value
jorgeuk says
Hello,
Do you have any Replica Job? Maybe that is the reason
Freeks says
No, there are no such tasks. I understand that this is the problem, but how to exclude from the request?
jorgeuk says
Let me add an exception for that use case then. Sorry about that
jorgeuk says
Can you please replace this on the Script:
veeamMaxDurationBackupJobName=$(echo "$veeamEMOJobUrl" | jq --raw-output ".MaxDurationBackupJobName" | awk '{gsub(/ /,"\\ ");print}')
veeamMaxDurationReplicaJobName=$(echo "$veeamEMOJobUrl" | jq --raw-output ".MaxDurationReplicaJobName" | awk '{gsub(/ /,"\\ ");print}')
For this:
veeamMaxDurationBackupJobName=$(echo "$veeamEMOJobUrl" | jq --raw-output ".MaxDurationBackupJobName" | awk '{gsub(/ /,"\\ ");print}')
[[ ! -z "$veeamMaxDurationBackupJobName" ]] || veeamMaxDurationBackupJobName="None"
veeamMaxDurationReplicaJobName=$(echo "$veeamEMOJobUrl" | jq --raw-output ".MaxDurationReplicaJobName" | awk '{gsub(/ /,"\\ ");print}')
[[ ! -z "$veeamMaxDurationReplicaJobName" ]] || veeamMaxDurationReplicaJobName="None"
Freeks says
jorgeuk, thanks for fixes. The last error remained:
jq: error (at : 1): Cannot iterate over null (null)
jorgeuk says
Can you share the full error? I guess it will be on the Replica loops I have
Freeks says
Hi, jorgeuk. This is the full error:
…
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 7bbf1501-43d6-11ea-a5aa-000c29ed7e64
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.9
X-Request-Id: 7bbf1501-43d6-11ea-a5aa-000c29ed7e64
Date: Fri, 31 Jan 2020 03:05:06 GMT
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)
[root@localhost]#
Freeks says
Hi, jorgeuk.
My mistake. veeam_enterprisemanager.sh works only with edition Veeam Enterprise Plus. It worked.
jorgeuk says
Yes, Enterprise Plus only. Does it works now?
Freeks says
Yes, now everything works. Thanks.
Matthias says
Hey! I have the same issue with :
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d92a6e8-4cbc-11ea-97da-0050528ea220
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.7.10
X-Request-Id: 5d92a6e8-4cbc-11ea-97da-0050528ea220
Date: Tue, 11 Feb 2020 10:50:49 GMT
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
Only the last step it will be and yes we have Replication Jobs
jorgeuk says
Hello,
Do you have Enterprise Plus Edition as well?
Best regards
Matthias says
Yes! all Enterprise PLUS
jorgeuk says
Weird, do you have all the configuration properly configured and all, with user and pass? Backups and Replicas I am assuming? And VBR added and all?
jorgeuk says
I have just tried on my lab, and all worked without an issue. I really need to add some debug into it 🙂
Let me know
jorgeuk says
Hello,
It might be an issue if you tried the user using domain\username, please try with [email protected] or whatever your domain is 🙂
GavinT says
Hi
I am getting the same error when running the script.
jq: error (at :1): Cannot iterate over null (null)
The rest comes back as it should but then shows this error 7-8 times at the end. I am using Enterprise and not Plus but this version still has Enterprise Manager and the Restful API so I think it should work.
Have double checked all the settings and all looks as it should be
jorgeuk says
Hello GavinT,
Enterprise Edition does not have RESTFul API, try to open the RESTful API on your browser and run some commands.
Let me know
GavinT says
Hi
So I get a successful response when I go to:
https://:9398/web/#/api/
When I go to say /backupServers I do get Message=”Identity was not authenticated.”. This is just in a web browser atm
Not sure how to test it properly as it’s not something I’ve used before but seems to be a logon sessions issue maybe?
jorgeuk says
Hello GavinT,
Are you trying your username and password like this domain\user or [email protected]?
GavinT says
Hi
Yes, using that syntax. I have just tried just adding the user/password into the veeamSessionId line and set the Rest URL to v=1_4.
Anyway this is what I get back and it does seem like it is creating a session
* Trying xxxxxx…
* TCP_NODELAY set
* Connected to xxxxxx (xxxxxxxx) port 9398 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [94 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [757 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [300 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [37 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
* subject: CN=xxxxxx
* start date: Jan 12 10:57:07 2018 GMT
* expire date: Jan 10 10:57:07 2028 GMT
* issuer: CN=xxxxxxx
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* Server auth using Basic with user ‘xxxxxx’
* Using Stream ID: 1 (easy handle 0x5629599b5700)
} [5 bytes data]
> POST /api/sessionMngr/?v=1_4 HTTP/2
> Host: xxxxxxx:9398
> Authorization: Basic dmNlbnRlckBldS5hZC5lYS5jb206Q2VudGVyNFZpcnR1YWw=
> User-Agent: curl/7.61.1
> Content-Length: 0
> Accept: application/json
>
{ [5 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
} [5 bytes data]
< HTTP/2 201
< content-length: 916
< content-type: application/json
< location: https://xxxxxxxx:9398/api/sessionMngr/0aab2187-b8d1-4783-a062-4c6349b44e56
< server: Microsoft-HTTPAPI/2.0
< x-restsvcsessionid: MGFhYjIxODctYjhkMS00NzgzLWEwNjItNGM2MzQ5YjQ0ZTU2
< set-cookie: X-RestSvcSessionId=MGFhYjIxODctYjhkMS00NzgzLWEwNjItNGM2MzQ5YjQ0ZTU2; Path=/api;
< date: Fri, 15 May 2020 14:29:46 GMT
<
{ [916 bytes data]
* Connection #0 to host xxxxxxxleft intact
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 86478926-96b8-11ea-b80d-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 86478926-96b8-11ea-b80d-005056954f6c
Date: Fri, 15 May 2020 14:29:45 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 86644e53-96b8-11ea-b80e-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 86644e53-96b8-11ea-b80e-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 86790332-96b8-11ea-b80f-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 86790332-96b8-11ea-b80f-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 86821fa9-96b8-11ea-b810-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 86821fa9-96b8-11ea-b810-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 8685c8a5-96b8-11ea-b811-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 8685c8a5-96b8-11ea-b811-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 8689710d-96b8-11ea-b812-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 8689710d-96b8-11ea-b812-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 86919ede-96b8-11ea-b813-005056954f6c
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 86919ede-96b8-11ea-b813-005056954f6c
Date: Fri, 15 May 2020 14:29:46 GMT
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)
GavinT says
Actually after a lot of Googling and Veeam forums it seems that the API is on Enterprise version but to access all of it you do need Plus so I presume I cannot return the info required with my version.
Thanks anyway 🙂
john (@siegson) says
Awesome script, was able set it up in minutes, but for some reason my results are inconsistent.
No data for a half of items… What to check?
jorgeuk says
Hello John,
Which elements does it show, and which ones doesn’t? Send me an screenshot to jorgedlcruzATgmailDOTcom
Romain says
Hi Jorge,
Great job for your script and dashboard.
But i have a problem, the script has no end (with no error), is that normal ?
jorgeuk says
Hello Romain,
What is the error?
Romain says
There is no error. Always the same result like :
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 53ee7045-30e1-11ea-8bf5-000000000000
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.6.3
X-Request-Id: 53ee7045-30e1-11ea-8bf5-000000000000
Date: Tue, 07 Jan 2020 00:04:52 GMT
jorgeuk says
That is a successful entry on InfluxDB 🙂
jorgeuk says
That will finish when the script has parsed all the results, you can see on your Grafana, or in chronograf the data
Romain says
Yes your script works well but it alwyas running so why put it in a crontab ? (i’m newbie on linux)
jorgeuk says
It is not always running, you run it once, then goes over all the sessions, then you do more backup jobs, etc, then you will need to trigger it again, for that reason a cron every day or so 🙂
Romain says
Well i’ll let it run and see.
Thanks for your beedback 🙂
Romain says
It finally finished.
Any advices for this errors at the end :
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)
?
jorgeuk says
Yes, please download the latest .sh script from the Github, it should work fine try it
jorgeuk says
Well, that is for NAS Backup Jobs, maybe you do not have any, need to add some extra steps to avoid things like this.
Romain says
Indeed.
Thanks for your help ^^
seile says
does not work for me
./veeam_enterprisemanager.sh
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d186c2b-bbb0-11ea-82c2-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d186c2b-bbb0-11ea-82c2-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:33 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d2253ae-bbb0-11ea-82c3-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d2253ae-bbb0-11ea-82c3-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:33 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d2f920b-bbb0-11ea-82c4-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d2f920b-bbb0-11ea-82c4-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:34 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d36ae6e-bbb0-11ea-82c5-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d36ae6e-bbb0-11ea-82c5-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:34 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d3aec8e-bbb0-11ea-82c6-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d3aec8e-bbb0-11ea-82c6-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:34 GMT
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 5d4200d1-bbb0-11ea-82c7-005056b2d4bf
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 5d4200d1-bbb0-11ea-82c7-005056b2d4bf
Date: Wed, 01 Jul 2020 15:34:34 GMT
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)
Script:
## LASTEDIT: 26/05/2020
## VERSION: 1.2
Rest-Api
JSON format
Response: 200 Success
what is wrong?
jorgeuk says
Hello,
That actually worked, I guess you do not have replicas, or agents, or NAs Backups? As they are the latest things to check
seile says
it only works halfway. I have no replications, agents are not needed vms. Backups and restore points are available.
screenshot
https://ibb.co/WKkr5CV
jorgeuk says
The image does not load, if you have some success, which you do, the rest can be omitted, I need to add some debugging to make it slicker. Thanks for the feedback.
christophe says
hello Jorge,
Thank’s for your great job. I’m using your powershell script and dashboard to monitor our 2 VBR servers since a few years.
Since we upgraded to v10, I wanted to use this dashboard as we have VEM and 2 VBR servers. But, we also have entreprise edition (without plus) 🙁
I tried to implement your script (latest version found on you git. It works until line 218, where I get a {“FirstChanceExceptionMessage”:null,”StackTrace”:null,”Message”:”Access denied.”,”StatusCode”:403,”Status”:”Forbidden”}
if I echo veeamEMUrl=”https://$veeamRestServer:$veeamRestPort/api/backupSessions?format=Entity”
Is there any chance I can use this script or not with our entreprise edition ?
Thank’s
Christophe
jorgeuk says
Hello Christophe,
This script works only with Enterprise Plus, as it is the only edition it has RESTFul API. I will improve the old one I have for PowerShell and let you know when ready.
Sorry 🙁
Olaf says
Thanks! v1.4 works perfect now. No more endless loops or weird data!
jorgeuk says
YASSSS!
Dennis Faucher says
This is beautiful. Thank you. Please remove one of the asterisks from the crontab entry. There should only be 4.
*/30 * * * * /home/oper/veeam_enterprisemanager.sh >> /var/log/veeam_enterprisemanager.log 2>&1
Venkatraman N says
Hi JorgeUK,
Can you please help me to configure this for Prometheus for monitoring veeam server.
We are having backup and replication console for Veeam Monitoring in the Veaam server.
Thanks,
Venkatraman N
jorgeuk says
Hello,
I do not use Prometheus, you have the bash shell script, and all the variables I take, from there on, send them somewhere else should be easy.
Best regards
Todd Eanes says
Hi Jorge, is this an API issue? (I’ve obscured the IP address, but it is correct.)
Writing veeam_em_overview to InfluxDB
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 –:–:– –:–:– –:–:– 0
100 502 100 277 100 225 135k 109k –:–:– –:–:– –:–:– 245k
HTTP/1.1 400 Bad Request
Content-Type: application/json
Request-Id: 3f595ab6-a2b2-11eb-8125-0050568e94c2
X-Influxdb-Build: OSS
X-Influxdb-Error: unable to parse ‘veeam_em_overview,host=192.x.x.x veeamBackupServers=,veeamProxyServers=,veeamRepositoryServers=,veeamRunningJobs=,veeamScheduledJobs=,veeamSuccessfulVmLastestStates=,veeamWarningVmLastestStates=,veeamFailedVmLastestStates=’: missing field value
X-Influxdb-Version: 1.8.4
X-Request-Id: 3f595ab6-a2b2-11eb-8125-0050568e94c2
Date: Wed, 21 Apr 2021 15:00:01 GMT
Content-Length: 277
Thanks
jorgeuk says
It seems that is not recollecting anything, do you have Enterprise Plus Edition?
Best regards
Todd Eanes says
Can’t upload a screen shot here, but I have VBR 10, part of the Veeam Availability Suite. I guess it’s not Enterprise Plus.
jorgeuk says
Yes, if that comes empty, it seems that you do not have Enterprise plus, which is required for this. I Will try to add a control on the script os it can tell you much clearer.
Try an Ent+ trial key if possible so you see the difference.
Best regards
tuncay says
hello,
I can not see job duration and replicated vm information “no data”. Other tabs showing fine. I just have replication job and veam version is 11.0.0.837. Is there anything I am missing ?
jorgeuk says
Hello,
ARe you running Veeam Enterprise Manager with Ent+ or VUL licensing right? No errors on the Script when running it?
Best regards
nof says
Hello!
Tell me, where am I making a mistake?
Writing veeam_em_overview to InfluxDB
HTTP/1.1 404 Not Found
tonyxavierj says
Hi, I am getting the following message
no metrics
Writing veeam_em_overview to InfluxDB
HTTP/1.1 204 No Content
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.3.0+SNAPSHOT.090f681737
Date: Thu, 07 Jul 2022 11:25:53 GMT
Writing veeam_em_overview_vms to InfluxDB
HTTP/1.1 204 No Content
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.3.0+SNAPSHOT.090f681737
Date: Thu, 07 Jul 2022 11:25:54 GMT
Writing veeam_em_overview_jobs to InfluxDB
HTTP/1.1 204 No Content
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.3.0+SNAPSHOT.090f681737
Date: Thu, 07 Jul 2022 11:25:56 GMT
There are not new veeam_em_job_sessions since 2022-07-06T11:25:53Z
There are not new veeam_em_job_sessionsvm since 2022-07-06T11:25:53Z
There are not new veeam_em_job_sessions since 2022-07-06T11:25:53Z
There are not new veeam_em_job_sessionsvm since 2022-07-06T11:25:53Z
There are not new veeam_em_nas_sessions since 2022-07-06T11:25:53Z
tuncay says
ı am also getting the last message after run the script and could not find any solution.
Writing veeam_em_job_sessionsvm to InfluxDB
HTTP/1.1 204 No Content
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
Date: Mon, 19 Sep 2022 17:03:52 GMT
There are not new veeam_em_job_sessions since 2022-09-18T20:03:47Z
There are not new veeam_em_job_sessionsvm since 2022-09-18T20:03:47Z
There are not new veeam_em_nas_sessions since 2022-09-18T20:03:47Z
jorgeuk says
Hello tuncay,
Was it working before? Has anything changed?
Shakhzod says
root@debiangrafana:/home/tsm-admin# ./veeam_enterprisemanager.sh
Writing veeam_em_overview to InfluxDB
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
X-Platform-Error-Code: invalid
Date: Fri, 23 Sep 2022 05:09:35 GMT
Content-Length: 321
{“code”:”invalid”,”message”:”unable to parse ‘veeam_em_overview,host=10.10.10.49 veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number”}Writing veeam_em_overview_vms to InfluxDB
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
X-Platform-Error-Code: invalid
Date: Fri, 23 Sep 2022 05:09:35 GMT
Content-Length: 356
{“code”:”invalid”,”message”:”unable to parse ‘veeam_em_overview_vms,host=10.10.10.49 veeamProtectedVms=null,veeamBackedUpVms=null,veeamReplicatedVms=null,veeamRestorePoints=null,veeamFullBackupPointsSize=null,veeamIncrementalBackupPointsSize=null,veeamReplicaRestorePointsSize=null,veeamSourceVmsSize=null,veeamSuccessBackupPercents=null’: invalid number”}Writing veeam_em_overview_jobs to InfluxDB
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
X-Platform-Error-Code: invalid
Date: Fri, 23 Sep 2022 05:09:35 GMT
Content-Length: 467
{“code”:”invalid”,”message”:”unable to parse ‘veeam_em_overview_jobs,host=10.10.10.49,veeamMaxDurationBackupJobName=None,veeamMaxDurationReplicaJobName=null veeamRunningJobs=null,veeamScheduledJobs=null,veeamScheduledBackupJobs=null,veeamScheduledReplicaJobs=null,veeamTotalJobRuns=null,veeamSuccessfulJobRuns=null,veeamWarningsJobRuns=null,veeamFailedJobRuns=null,veeamMaxJobDuration=null,veeamMaxBackupJobDuration=null,veeamMaxReplicaJobDuration=’: invalid number”}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)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
Hi jorgeuk. Can you help me fix this problem pls ?
Shakhzod says
Writing veeam_em_overview to InfluxDB
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
X-Platform-Error-Code: invalid
Date: Fri, 23 Sep 2022 05:36:49 GMT
Content-Length: 321
{“code”:”invalid”,”message”:”unable to parse ‘veeam_em_overview,host=10.10.10.49 veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number”}Writing veeam_em_overview_vms to InfluxDB
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
X-Influxdb-Build: OSS
X-Influxdb-Version: v2.4.0
X-Platform-Error-Code: invalid
Date: Fri, 23 Sep 2022 05:36:49 GMT
Content-Length: 356
jorgeuk says
Hello,
What version of Veeam licensing do you have? Are you pointing to an Enterprise Manager? User and pass all okay?
johnfelipe2018 says
influxdb 2.0?
johnfelipe2018 says
https://github.com/VeeamHub/grafana/issues/23#issuecomment-1312085660, pls help me for solve this one issue
jorgeuk says
This is already on InfluxDB v2.0, yes, on GitHub.
ondrej123654 says
Hello, i have just seen “Veeam Backup Performance” section and for CPU usage, RAM usage and Network usage are missing flux queries. Why?
gwenael says
I have same issue only CPU usage, RAM usage and Network.
When I run the script I have 5 error jq: error (at :1): Cannot iterate over null (null)
jorgeuk says
Hello,
I just updated the script to v12, and other improvements, give it a try and let me know.
Tony Joseph says
Hi, I am getting the following error.
version is enterprise plus
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview,host=********veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number
Writing veeam_em_overview_vms to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview_vms,host=**********veeamProtectedVms=null,veeamBackedUpVms=null,veeamReplicatedVms=null,veeamRestorePoints=null,veeamFullBackupPointsSize=null,veeamIncrementalBackupPointsSize=null,veeamReplicaRestorePointsSize=null,veeamSourceVmsSize=null,veeamSuccessBackupPercents=null’: invalid number
Writing veeam_em_overview_jobs to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview_jobs,host=********,veeamMaxDurationBackupJobName=null,veeamMaxDurationReplicaJobName=null veeamRunningJobs=null,veeamScheduledJobs=null,veeamScheduledBackupJobs=null,veeamScheduledReplicaJobs=null,veeamTotalJobRuns=null,veeamSuccessfulJobRuns=null,veeamWarningsJobRuns=null,veeamFailedJobRuns=null,veeamMaxJobDuration=null,veeamMaxBackupJobDuration=null,veeamMaxReplicaJobDuration=null’: invalid number
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)
jorgeuk says
Hello Tony,
Are youi using the last version of the script? Also checked that you can reach the Enterprise Manager URL, and that you have Enterprise Plus licensing?
Thanks!
haiph says
Hello jorgeuk
Thank for your sharing.
Can you help me check issue as below
[root@HA-Veeam-Monitor-01 setup]# ./veeam_enterprisemanager.sh
Writing veeam_em_overview to InfluxDB
./veeam_enterprisemanager.sh: line 65: influx: command not found
Writing veeam_em_overview_vms to InfluxDB
./veeam_enterprisemanager.sh: line 91: influx: command not found
Writing veeam_em_overview_jobs to InfluxDB
./veeam_enterprisemanager.sh: line 124: influx: command not found
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)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
haiph says
Hello jorgeuk
After install influx cli i can run scirpt but i see erros as below
[root@HA-Veeam-Monitor-01 setup]# ./veeam_enterprisemanager.sh
Writing veeam_em_overview to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview,host=10.253.132.46 veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number
Writing veeam_em_overview_vms to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview_vms,host=10.253.132.46 veeamProtectedVms=null,veeamBackedUpVms=null,veeamReplicatedVms=null,veeamRestorePoints=null,veeamFullBackupPointsSize=null,veeamIncrementalBackupPointsSize=null,veeamReplicaRestorePointsSize=null,veeamSourceVmsSize=null,veeamSuccessBackupPercents=null’: invalid number
Writing veeam_em_overview_jobs to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview_jobs,host=10.253.132.46,veeamMaxDurationBackupJobName=null,veeamMaxDurationReplicaJobName=null veeamRunningJobs=null,veeamScheduledJobs=null,veeamScheduledBackupJobs=null,veeamScheduledReplicaJobs=null,veeamTotalJobRuns=null,veeamSuccessfulJobRuns=null,veeamWarningsJobRuns=null,veeamFailedJobRuns=null,veeamMaxJobDuration=null,veeamMaxBackupJobDuration=null,veeamMaxReplicaJobDuration=null’: invalid number
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)
jq: error (at :1): Cannot iterate over null (null)
jq: error (at :1): Cannot iterate over null (null)
jorgeuk says
Hello haiph,
You will need to install influx client https://docs.influxdata.com/influxdb/cloud/tools/influx-cli/?t=Linux
Then give it a try.
haiph says
Hello jorgeuk
After install influx cli i can run scirpt but i see erros as below
[root@HA-Veeam-Monitor-01 setup]# ./veeam_enterprisemanager.sh
Writing veeam_em_overview to InfluxDB
Error: failed to write data: 400 Bad Request: unable to parse ‘veeam_em_overview,host=10.253.132.46 veeamBackupServers=null,veeamProxyServers=null,veeamRepositoryServers=null,veeamRunningJobs=null,veeamScheduledJobs=null,veeamSuccessfulVmLastestStates=null,veeamWarningVmLastestStates=null,veeamFailedVmLastestStates=null’: invalid number
jorgeuk says
What Veeam license do you have? Is it VUL, or Enterprise Plus?
Thank you
haiph says
Hello jorgeuk
Yes i using Veeam Enterprise Plus.
After create a new authentication token for the logon session on Veeam Enterprise Manager i deployed success
https://helpcenter.veeam.com/docs/backup/em_rest/http_authentication.html?ver=120
Thank you for sharing I found Dashboard really helpful .