Real-time performance monitoring and troubleshooting
Post Reply
ChrisGundry
Veteran
Posts: 258
Liked: 40 times
Joined: Aug 26, 2015 2:56 pm
Full Name: Chris Gundry
Contact:

VeeamONE Monitor audio alerts

Post by ChrisGundry »

We are trying to get audio alerts to work within VeeamONE but doesn't seem to be possible in a usable way.

We, as most customers run a dashboard on a wall mounted screen so we can all see the status of the environment. We would like to have audio alerts on that PC/dashboard. We have 2 other products on our dashboard, both of which offer audio alerts, just VeeamONE does not it seems.

I have seen several posts saying this is possible, such as:
veeam-one-f28/veeam-one-vnext-feedback- ... 53-90.html
veeam-one-f28/custom-alerts-t12810.html#p58205

But we have several issues:
1. The script has to be on the central VeeamONE server, the script will only run if its on the central server. The audio would presumably play on the central server, which is a VM and doesn't have anyone listening...

2. The alarm action to run the script to play the sound then marks the alert as acknowledged. This effectively removes it from view in the VeeamONE dashboard, which is not helpful to engineers looking at the dashboard.

Has anyone else managed to get anything like this setup or is it not possible with VeeamONE?

Thanks
Shestakov
Veteran
Posts: 7328
Liked: 781 times
Joined: May 21, 2014 11:03 am
Full Name: Nikita Shestakov
Location: Prague
Contact:

Re: VeeamONE Monitor audio alerts

Post by Shestakov »

Hello Chris,
We, as most customers run a dashboard on a wall mounted screen so we can all see the status of the environment.
Do you mean the dashboards in Veeam ONE Reporter or alarms pane in Veeam ONE Monitor?
ChrisGundry
Veteran
Posts: 258
Liked: 40 times
Joined: Aug 26, 2015 2:56 pm
Full Name: Chris Gundry
Contact:

Re: VeeamONE Monitor audio alerts

Post by ChrisGundry »

Hi
I mean the alarms page on VeeamONE Monitor. The dashboards are not useful to us (I don't think) because we want to see live usage, not aggregate usage. If there is a way to see live usage/alarm status in there and get audio alerts then please let me know!

I was wrong about my point 2, at least in part. I was mistakenly clicking on the alarm action, not alarm notification tab, so hopefully that should stop the alarm being marked as acknowledged. I will do more testing on that but I am assuming we will still have issue 1 where the script is playing the audio on the central server, not the remote PC running the VeeamONE monitor.

If the alert is not acknowledged when using the notification script option then I guess there is possibly room for the central Veeam server to trigger a remote command on the dashboard PC to play audio. But we are then adding quite a lot of possible failure points which is not ideal.
Shestakov
Veteran
Posts: 7328
Liked: 781 times
Joined: May 21, 2014 11:03 am
Full Name: Nikita Shestakov
Location: Prague
Contact:

Re: VeeamONE Monitor audio alerts

Post by Shestakov »

Unfortunately there is no option or workaround to play audio alerts on Monitor Client. It works only on the server site. However, we will take it as a feature request for future product versions.
Thanks!
ChrisGundry
Veteran
Posts: 258
Liked: 40 times
Joined: Aug 26, 2015 2:56 pm
Full Name: Chris Gundry
Contact:

Re: VeeamONE Monitor audio alerts

Post by ChrisGundry » 1 person likes this post

Thought I would post back with an update for others looking to do this as well. We have achieved what we wanted to with some PowerShell work.

We have chosen to use a 'notification' action to run a PowerShell script which sends alarm variables to our wallboard PC and uses a synthesized voice module to produce audio alerts with the relevant information in them. Such as "Alert! Guest Disk Space alert on VM1".

So to do this we have installed a PowerShell module called 'Out-Speech' on the wallboard PC. This uses built in PowerShell speech synthesizer technology, but wraps it into a nicer CLI method for us to use. It enables you to give it a text string and output that as synthesized audio. The wallboard PC has a speaker hooked up to it that plays the audio when they are output from PS.

To get the required text to be spoken Veeam has several variables that can be used for scripts or email alerts etc.:
%1 - Alarm name ie: Guest Disk Space
%2 - Object name: VM1
%3 - Information: C:\ 10%
%4 - Date/time: 29/04/2019 09:26:57
%5 - Current alarm state: Error
%6 - Previous alarm state: Reset/resolved
%7 - Alarm ID: 4904

For our use case we have decided to use %1 to get the name of the alarm with a problem, then %5 to get the current state ie ERROR, then %2 to say what object has an ERROR.

These are entered into VeeamONE notification action like this:
powershell.exe "c:\Scripts\VeeamONE\Send-Speech.ps1" '%1' '%5' '%2'

If you don't quote the %1 etc then they separate out into separate works ie 'Guest' 'Disk' 'Space' and it breaks your scripting.

The Send-Speech.ps1 file is a PowerShell script on the Veeam server itself which runs an 'Invoke-Command' script block against the wallboard PC, which generates the audio locally on wallboard and plays it. The content of that script is:

Code: Select all

#Convert the paramatersgiven to PS via the VeeamONE notification action from arg 0,1,2
#(note not %1 etc, this is just the first 3 paramaters given to PS, if there were to be a 4th it would be missed). Convert to to variables with nice names for easier understanding
$AlarmName=$args[0]
$AlarmState=$args[1]
$ObjectName=$args[2]

#Invoke a remote PS command on the wallboard PC using the arguments that were given
Invoke-Command -ComputerName xxxxxx -ArgumentList $AlarmName,$AlarmState,$ObjectName {
#Because this is a remote PS session the arguments don't share the same variables so setup the right names again for clarity and use within this one time session
    $AlarmName=$args[0]
    $AlarmState=$args[1]
    $ObjectName=$args[2]
    #Setup a speech config the way we want, standard voice setting 'MS David' is too slow/robotic/quiet. Hazel is more english and a better voice.
    Enable-SpeechConfiguration -ConfigurationName "HazelLoud" -Rate 1 -Voice "Microsoft Hazel Desktop" -Volume 100    

    #Convert the variables into a sentence to be spoken out loud. Note we are combining the variables but also adding in the word 'on' and some pauses via commas to make it sound better
    $Text=$AlarmName + "," + $AlarmState + ", on, " + $ObjectName
    #Output the date and text being spoken to a file on wallboard PC for assistance when something doesn't sound right or work the way we wanted it too
    get-date | out-file c:\temp\Speech.txt -Append
    $Text | out-file c:\temp\Speech.txt -Append
    #Output audio 'alert' to get peoples attention, then output the actual alert info that is in the $text string generated earlier
    Out-Speech -ConfigurationName HazelLoud -inputobject "Alert" -SynchronousOutput
    Out-Speech -ConfigurationName HazelLoud -inputobject $Text -SynchronousOutput

}
It should be noted that this script will generate audio for the above 3 variables, in the order they are entered. So it will play "%1 %5 on %2". So if you change out any of the variables in the VeeamONE window or change the order the speech won't make sense. This can be easily adjusted in the Send-Speech.ps1 script and saved as another iteration, but at the moment this is the main variation/requirement we have.

When the script runs it will take a second or two then output the audio from the wallboard PC speakers. It will also save a file in C:\temp called speech.txt. This contains the date and the line of text that was spoken, which is useful for troubleshooting and provides a log of the audio output.

We also have a basic script for sending whatever audio you want, with no variables from VeeamONE itself:

Code: Select all

#Convert the paramatersgiven to PS via the VeeamONE notification action from arg 0,1,2
#(note not %1 etc, this is just the first 3 paramaters given to PS, if there were to be a 4th it would be missed). Convert to to variables with nice names for easier understanding
$Text=$args[0]

#Invoke a remote PS command on the wallboard PC using the arguments that were given
Invoke-Command -ComputerName xxxxxx -ArgumentList $Text {
#Because this is a remote PS session the arguments don't share the same variables so setup the right names again for clarity and use within this one time session
    $Text=$args[0]
    #Setup a speech config the way we want, standard voice setting 'MS David' is too slow/robotic/quiet. Hazel is more english and a better voice.
    Enable-SpeechConfiguration -ConfigurationName "HazelLoud" -Rate 1 -Voice "Microsoft Hazel Desktop" -Volume 100    

    #Output the date and text being spoken to a file on the wallboard PC for assistance when something doesn't sound right or work the way we wanted it too
    get-date | out-file c:\temp\Speech.txt -Append
    $Text | out-file c:\temp\Speech.txt -Append
    #Output audio 'alert' to get peoples attention, then output the actual alert info that is in the $text string generated earlier
    Out-Speech -ConfigurationName HazelLoud -inputobject "Alert" -SynchronousOutput
    Out-Speech -ConfigurationName HazelLoud -inputobject $Text -SynchronousOutput

}
You run this from VeeamONE like so:
powershell.exe "c:\Scripts\VeeamONE\Send-Speech-Manual.ps1" 'This is what we want the wallboard PC to say'

Lastly if you want to work out what VeeamONE outputs so you can forumlate your scripts correctly we use the following script on the Veeam server itself:

Code: Select all

$Arg0=$args[0]
$Arg1=$args[1]
$Arg2=$args[2]
$Arg3=$args[3]
$Arg4=$args[4]
$Arg5=$args[5]
$Arg6=$args[6]

"Argument 0" | out-file c:\temp\arguments.txt -Append
$Arg0 | out-file c:\temp\arguments.txt -Append
"Argument 1" | out-file c:\temp\arguments.txt -Append
$Arg1 | out-file c:\temp\arguments.txt -Append
"Argument 2" | out-file c:\temp\arguments.txt -Append
$Arg2 | out-file c:\temp\arguments.txt -Append
"Argument 3" | out-file c:\temp\arguments.txt -Append
$Arg3 | out-file c:\temp\arguments.txt -Append
"Argument 4" | out-file c:\temp\arguments.txt -Append
$Arg4 | out-file c:\temp\arguments.txt -Append
"Argument 5" | out-file c:\temp\arguments.txt -Append
$Arg5 | out-file c:\temp\arguments.txt -Append
"Argument 6" | out-file c:\temp\arguments.txt -Append
$Arg6 | out-file c:\temp\arguments.txt -Append
We call this in VeeamONE using a notification action like this:
powershell.exe "c:\Scripts\VeeamONE\Send-Speech2.ps1" '%1' '%2' '%3' '%4' '%5' '%6' '%7'

As you can see this generates a file on the Veeam server in c:\temp called arguments.txt. This file contains all the info that VeeamONE is spitting out. you can then use that to work out what info you want/need.

Hopefully this helps someone else do this more quickly/easily than we did.

Chris
Shestakov
Veteran
Posts: 7328
Liked: 781 times
Joined: May 21, 2014 11:03 am
Full Name: Nikita Shestakov
Location: Prague
Contact:

Re: VeeamONE Monitor audio alerts

Post by Shestakov »

Great job, Chris!
Thanks for sharing the workaround!
Post Reply

Who is online

Users browsing this forum: No registered users and 6 guests