The notifications emails of a “planned” downtime is one of the annoying things of monitoring systems. You forget creating blackout and you start a maintenance work, and you get lots of notifications mails. Most of the time, the target which goes down, also affect other targets so it will multiple the number of unwanted notifications mails. Good thing is, it’s very easy to create blackouts on EM13c. We can do it through web console, emctl or emcli tools. A one-liner is enough for it:
emctl start blackout BlackOutName -nodeLevel  
The above code will create a blackout for the all targets on the server. We can achieve the same thing by EMCLI:
emcli create_blackout name=“BlackOutName” reason=“you know we need to do it” add_targets=
“myserver:host” propagate_targets schedule=“duration:-1” # indefinite
If we use emcli, we have more options such as creating repeating blackouts, entering a reason for blackout, enabling blackout for a group of targets (which resides on different hosts).
What if we need to create blackout for multiple targets. As I mentioned, EMCLI can be used to create blackout for groups. We can create groups on EM13c, and instead of passing names of all targets in a group, we can give the group name:
# Sample EMCLI script file to create blackout for multiple targets

# check number of arguments

if len(sys.argv) <> 2:
print “Usage to start a blackout: emcli targets.csv blackout_name”
print “Usage to stop a blackout: emcli stop blackout_name”

blackout_name = sys.argv[1].upper()

# login to OMS

login( username=”SYSMAN”, password=”yoursupersecretpassword” )

if sys.argv[0].lower() == “stop”:
stop_blackout( name= blackout_name )
# comment below line to keep old blackouts
delete_blackout( name = blackout_name )
print “%s blackout stopped and deleted.” % blackout_name

# open file for reading

f = open( sys.argv[0], ‘r’ )

# variable to keep all targets

alltargets = “”

# loop for each line of the file

for target in f:
# build alltargets string
alltargets += target.replace(“n”,””) + “;”

create_blackout( name = blackout_name, add_targets=alltargets, reason=blackout_name,

schedule=”duration:-1″ )

The script accepts two parameters. First parameter is the path of the file containing the targets, the second parameter is the name of the blackout. The targets file should be something like this:


After you create a blackout, you can stop (and delete) the blackout by running it again, but this time you need to enter “stop” as the file name:

./emcli /home/oracle/mytargets.txt TESTBLACKOUT   
./emcli stop TESTBLACKOUT 
I’m sharing a simple version so you can write your own (and better) script.

  • August 20, 2018 | 95 views
  • Comments