1 2 3 Previous Next 35 Replies Latest reply on Jan 2, 2020 9:10 AM by Bob Anderson

    Generic Application Modeling pattern help

    Nirmal Sharma
      Share This:

      Hi Experts,

       

      I just want to have a discussion with the community if anyone of you have come across the scenario which I have here. Also would love to have ideas around it if any.

       

      Requirement: My customer has built a tool(They name it StackOps) which monitors the applications' life status. That means they have application names and its members listed into it's dashboard. Now my customer wants to automate the process of application modelling basis the data retrieved from their home-grown tool.

       

      They want me to research for a solution where a generic pattern would be developed in ADDM which will utilize the information gathered from StackOps and will create application models in ADDM.

       

      I have thought a lot over this and I think it sounds really difficult for me considering the rules/triggers for the pattern and as well as the performance of ADDM. Some of these applications are having 1000s of instances(These instances are in form of Environment:App:Software:Instance:Node) and all of these instances are inferred as SIs in ADDM by writing a pattern.

       

      Suggestions.

       

      Thanks in advance.

        • 1. Re: Generic Application Modeling pattern help
          Brice-Emmanuel Loiseaux

          It's unclear /  you provide few details about

          - how to manually use the information of the StackOps tool to create a model (on a paper) and how it should look like

          - if the elements that will be part of such a model are already discovered by Discovery

          - how to extract information from StackOps and what is the format

          • 2. Re: Generic Application Modeling pattern help
            Lisa Keeler

            Thousands of SI's in a pattern-generated model sounds like a be a big performance hit.  So, yes, that is a concern.

             

            Then, the trigger. What is the trigger?  How would we know when a model changed ... to know when to run the pattern again to build a new model?

            Would the pattern always regenerate every model from StackOps?

             

            Performance may be terrible.

             

            I would do a trial by hand-writing a few different patterns (for the largest models), to see if performance is terrible.

            1 of 1 people found this helpful
            • 3. Re: Generic Application Modeling pattern help
              Bob Anderson

              Nirmal,

               

              Sounds like you may have a way to get a list of applications and the servers supporting the applications by querying the home-grown monitoring tool. 

              NOTE:  If you could get the underlying Software on each of the servers involved, that would be extremely helpful.

               

              This may be a good candidate for using the 'StaticApp:' manual group feature of the product.  What is needed is a bit of tpl that will parse through your list of applications and build a ManualGroup with the type 'StaticApp:' for each of the applications

               

              NOTE: Though this is not the preferred way of modeling, it could be a good start and it will allow you to get all these model definitions from Discovery into the CMDB.

               

              NOTE: Using this kind of model definition (application with servers) is a very poor choice when modeling with SAAM.

               

              Please reach out if you are interested in doing this.

              1 of 1 people found this helpful
              • 4. Re: Generic Application Modeling pattern help
                Nirmal Sharma

                Thanks Bob for your inputs here.

                 

                Yes we have the instances information as well in stackops. Actually client has different way of representing the Software Instances(These instances are in form of Environment:App:Software:Instance:Node) and information about them is there in StackOps which can be used to search for the Software Instances in ADDM. For example they say act_web that actually means is act:web and if I search for Software instance matching act:web then I get 35 SIs for it. See below.

                 

                Query: search SoftwareInstance where name matches 'act:web' and type = 'INSTANCE'

                Results:

                 

                I am very much interested in doing this. Please advice how it can be achieved.

                 

                StackOps URL http://x.x.x.x:8080/apps  gives json something like this. // I have taken snippet for only 1 application from its output just to explain it. This json produced by the mentioned URL represents data for 400+ applications.

                 

                {"id":6,"cmdb_id":1014,"cmdb_name":"Actimize","name":"Actimize","description":"Provides enterprise technology solutions for Anti-Money-Laundering (AML), Brokerage Trading Surveillance, Associate Registration, and Fraud prevention.","rto":"15","status":"Deployed","kind":"Applications","run_book":"confluence.corp.etradegrp.com/display/RUNBOOKS/Actimize+Operational+Runbook","owned_by":"abc","supported_by":"xyz","developed_by":"Both","hosted_by":"Internal","created_at":"2019-11-22T19:49:41.638Z","updated_at":"2019-11-22T19:49:47.838Z","components":[{"id":1,"name":"act_app","description":null,"created_at":"2019-11-22T19:49:47.860Z","updated_at":"2019-11-22T19:49:47.860Z"},{"id":2,"name":"act_chart","description":null,"created_at":"2019-11-22T19:49:47.875Z","updated_at":"2019-11-22T19:49:47.875Z"},{"id":3,"name":"act_ipsearch","description":null,"created_at":"2019-11-22T19:49:47.889Z","updated_at":"2019-11-22T19:49:47.889Z"},{"id":4,"name":"act_web","description":null,"created_at":"2019-11-22T19:49:47.902Z","updated_at":"2019-11-22T19:49:47.902Z"},{"id":5,"name":"actimize","description":null,"created_at":"2019-11-22T19:49:47.914Z","updated_at":"2019-11-22T19:49:47.914Z"}]}

                 

                 

                Please advise.

                • 5. Re: Generic Application Modeling pattern help
                  Nirmal Sharma

                  Yes, Lisa Keeler expectation is that it will always re/generate the model from data collected from StackOps if there is an update to it.

                  • 6. Re: Generic Application Modeling pattern help
                    Nirmal Sharma

                    Brice-Emmanuel Loiseaux I hope my replies to Bob Anderson answers your questions. Please advise.

                    • 7. Re: Generic Application Modeling pattern help
                      Lisa Keeler

                      Bob Anderson 's idea is probably the best.

                      Just build StaticApp models from a TPL.

                      You can look at a CAM-generated TPL for ideas. 

                       

                      I guess a statement like this builds a "manual group":  

                       

                      197   bai := model.Group(

                      198   key := text.hash('StaticApp: appname'),

                      199   type := 'StaticApp: appname',

                      200   name := 'StaticApp: appname'

                      201   );

                       

                      Bob is the expert. 

                      • 8. Re: Generic Application Modeling pattern help
                        Duncan Grisby

                        No, don't create manual groups from TPL. Manual groups are called manual groups for a good reason -- they should only be created manually by a user in the UI.

                         

                        If you are writing a pattern that creates a node that represents an application, create a BusinessApplicationInstance node. That's what the node kind means!

                        1 of 1 people found this helpful
                        • 9. Re: Generic Application Modeling pattern help
                          Bob Anderson

                          Duncan,

                           

                          Thank you for the suggestion.

                           

                          Depending on the data coming back, and the search complexities, I'll do my best to demonstrate doing BAIs. 

                           

                          However, it may be easier, as a first step, to create ManualGroup with 'StaticApp:' prefaced to the name and let syncmapping handle creating the Application in the CMDB, even though there is no BAI in Discovery.

                           

                          Then progress this simpler process into one that generates BAIs

                           

                          Bob

                          • 10. Re: Generic Application Modeling pattern help
                            Duncan Grisby

                            In what way is creating a Group node simpler than creating a BusinessApplicationInstance node?  In TPL, you just replace your model.Group call with model.BusinessApplicationInstance. The CMDB mappings for BAI will create the BMC_Application CI in the CMDB.

                             

                            Please don't misuse manual groups by automatically creating them.

                            1 of 1 people found this helpful
                            • 11. Re: Generic Application Modeling pattern help
                              Nirmal Sharma

                              Duncan Grisby @Bob_Anderson Now I have managed to create a file which is having applications and it member instances in below format.

                               

                              Application_name -> [instance1, instance2];

                               

                              Here is the actual content of this file.

                               

                              Active Directory -> ['active_directory:nt:nt', 'active_directory:nt:nt'];

                              Archer -> ['archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt', 'archer:nt:nt'];

                               

                              Please note all of these instances are discovered in ADDM already.

                               

                              Now from here I am unable to get on any idea to build and application model. Please advise.

                              • 12. Re: Generic Application Modeling pattern help
                                Nirmal Sharma

                                I am trying to achieve this with "StaticApp:" and following below community discussion.

                                See: Re: ADDM Application Mapping - Creating Groups via import

                                 

                                However in my case I am grouping the SIs in the Application and it is failing as below. Please assist.

                                 

                                 

                                I am using something like below.

                                  

                                name#ContainedItem:Containment:Container:Group.name
                                pplt:controlm:agt:ctmagent on ppltdb207w76m7.etrade.comStaticApp: NirmalTest
                                adm:etadm:san:admin on ppltdb207w76m7.etrade.comStaticApp: NirmalTest
                                pplt:ollcp:dbs:RR1CSGC on ppltdb207w76m7.etrade.comStaticApp: SharmaTest
                                pplt:ollcp:dbs:RR1ESPDB on ppltdb207w76m7.etrade.comStaticApp: SharmaTest
                                pplt:ollcp:dbs:RR2ESPDB on ppltdb207w76m7.etrade.comStaticApp: NirmalTest
                                pplt:ollcp:rac:RR1CSGC2 on ppltdb207w76m7.etrade.comStaticApp: NirmalTest
                                • 13. Re: Generic Application Modeling pattern help
                                  Lisa Keeler

                                  It seems that #ContainedItem:Containment:Container:Group.name is an Unknown Role for a SoftwareInstance.

                                  You can use the traversal in a query, but the traversal is missing from the "Customize" button, and it is not in the Taxonomy for an SI.

                                  But, it is in the taxonomy for a Host, and it is also in the Customize for a Host.

                                   

                                  I you look at an SI page that belongs to a Group, and turn on advanced debug, you see this:

                                  The ContainedItem:Containment:Container:Group is listed as an Unknown Role

                                  Even though there is a relationship shown for ContainedItem:Containment:Container:Group and the link is "new" ("new" is the name of the Group that the SI belongs to).

                                   

                                   

                                  I suggest you do what Duncan advised, and use the BAI instead of Group.

                                  • 14. Re: Generic Application Modeling pattern help
                                    Nirmal Sharma

                                    Thankyou Lisa for these inputs and insights. After several failed attempts now I seem to be good with CSV import. I have created BAI nodes using this and below is the output.

                                     

                                     

                                    However I would like to know if this model can be further improved in order to have similar or close to similar of CAM generate application models as shown below.

                                     

                                     

                                    Also wanted to know if this will populated the BAI relationship with the Computer_system class in CMDB if I go by 1st picture.

                                    1 2 3 Previous Next