blog community

Welcome to blog community Sign in | Join | Help
in Search

SYSTEM OPERATIONS [Michel Kamp]

The challenge to ease system operations

HOWTO: bulk export / import MOM management packs

Hi,

As a MOM system administrator / consultant I have visited many customers that don't backup the MOM MPs. The say "why? I'm making a SQL onepoint backups , this should do it....” Personally I'm not a big pro on restoring the complete onepoint db if you lose or miss-change a MP. So the mom SDK has some tools to export / import MPs from the command line. The only problem is that this tool only processes 1 rule group at the time. I've written a c# program that solves this problem. This is a simple way to export (backup) your MPs. I use the tool for one reason more: I'm using the MOM to MOM product connector to forward alerts from a co hosting MOM locations to our main MOM location. This requires you to have the same MPs on both sites. My tool has a Import feature as well. So you can make a co-site export and import to the main site in one step.
So if you want to make only a export (for backup resons) you make the source and destination server parameters the same. The tool then only exports the MPs to the given directory. If you fill in a different destination server the tool will imports the exported MPs one by one on the specified server. The tool also export / imports all the RULES , VIEWS , TASKS.

Command line usage:
ExportImportMP.exe <source mom server> <dest mom server> <dest path>

requirements:
- Dot Net 1.1 framework installed
- MOM SDK installed
- must exists:\Program Files\Microsoft Operations Manager 2005\ManagementModuleUtil.exe
- execute on the MOM server.

I will share the code. This is a quick programming project , so do not except to much:
(You can download the project from the download section on this blog server)

It is build of 3 parts.
Part one reads out the command line arguments and is creating a MOM management object.

 System.Diagnostics.Process proc = new System.Diagnostics.Process();
     string arguments;
     string SourceSrv;
     string DestSrv;
     string DestDir;
     if (args.Length != 3)
        {
       Console.WriteLine("Error invalid arguments");
          Console.WriteLine("VERSION : 0.9");
          Console.WriteLine("Michel Kamp. 2006");
          Console.WriteLine("Usage: ExportImportMP <source mom server> <dest mom server> <dest path>");
          Console.WriteLine("Description: Export and import MOM MPs with the ManagementModuleUtil.exe");
          Console.WriteLine(@"Description: besure C:\Program Files\Microsoft Operations Manager 2005\ManagementModuleUtil.exe exsists");
          Console.WriteLine("HINT: If the Source and destionation is the same then no import will be done. This is usefull for making an backup. ");
       Environment.Exit(-1);
        }
     SourceSrv = args[0].ToString();
     DestSrv = args[1].ToString();
     DestDir = args[2].ToString();
     Console.WriteLine("ExportImportMP " + SourceSrv + " " + DestSrv + " " +DestDir );
     Administration admin = Administration.GetAdministrationObject();
     RuleGroupsCollection rgs = admin.GetRuleGroups();
    

Part 2 does the export

foreach (RuleGroup rg in rgs)
{
Console.WriteLine("Export RULES: " + rg.Name);
Console.WriteLine("DestDir: " + DestDir);
arguments = " -O " + SourceSrv + " {" + rg.Id.ToString().ToUpper()  + "} " + "\"" +  DestDir + @"\" + rg.Name + @".AKM" + "\"" +  " -W"; 
proc.EnableRaisingEvents=true;
proc.StartInfo.FileName=@"C:\Program Files\Microsoft Operations Manager 2005\ManagementModuleUtil.exe" ;
proc.StartInfo.Arguments=arguments;
Console.WriteLine("Processing :" + proc.StartInfo.FileName + " " + proc.StartInfo.Arguments);
proc.Start();
…….

 Part 3 does the import

if ( SourceSrv != DestSrv )
            {
            Console.WriteLine("IMPORT: " + rg.Name);
            arguments = " -I " + DestSrv + " \"" + DestDir + @"\" + rg.Name + ".AKM" + "\" -F"; 
            proc.EnableRaisingEvents=true;
            proc.StartInfo.FileName=@"C:\Program Files\Microsoft Operations Manager 2005\ManagementModuleUtil.exe" ;
proc.StartInfo.Arguments=arguments;
            Console.WriteLine("Processing :" + proc.StartInfo.FileName + " " + proc.StartInfo.Arguments);
            proc.Start();
            proc.WaitForExit();
            }

Hope you can use it. If not please let me know why and what’s missing.

You can download the project from the download section on this blog server

Michel Kamp    

 

 

Published Friday, September 01, 2006 6:02 AM by michel kamp
Anonymous comments are disabled
Powered by Community Server, by Telligent Systems