DemoSim Admin
Instructions for using Demo Admin
Introduction to the Demo Admin
Demo Admin is an integrated development environment (IDE) for creating and editing scenarios, as well as configurations for customizing those scenarios to individual use cases.
Demo Admin is hosted at https://bpSalesEngineering.com as part of a larger strategy to serve BigPanda Sales Engineering utilities via a SaaS platform. Earlier in BigPanda's growth, DemoSim was only used by Sales Engineering for the purpose of New Business Meeting (NBM) demonstrations, but it soon took on a life of its own, being used in Proof of Value (POV) engagements to replay customer alert and change data and even used by Customer Success (CS) and Enablement to help employees (and even customers) learn BigPanda. Even our Marketing department uses DemoSim to create videos and self-guided demonstrations!
Demo Configs
A Demo Config is a set configuration that customizes how a DemoSim scenario is played out. It determines which BigPanda organization receives the scenario events, which integrations receive the alert or change events, what variables those events can use, and which scenarios are available for use.
When you first create a Demo Config, you are presented with the SETTINGS tab.
See the installation instructions for Create a New DemoSim Org to create a DemoSim Org.
The Demo Config Name is not the same thing as a BigPanda organization name. It is simply a name for this Demo configuration. There's no reason that you couldn't use the same name as your BigPanda organization, but you really should name it to indicate its purpose. For example, if this Demo Config's purpose is to demonstrate BigPanda to the Acme company, perhaps you would call the Org "Acme Inc NBM Demo". Don't worry about creating a lot of these orgs; they're easy to create, clone, and delete. Also, the Demo Config Selector dialog will filter as you type, so with a few characters its pretty easy to find the config you're looking for. BTW, the DemoSim extension uses this same Demo Config Selector.
The Demo Config is tied to a specific BigPanda organization via an API Key. When you change the API key, the BigPanda Org Name text box validates the API key by showing the associated BigPanda organization name. Changing the API key also changes the integration mapping.
Best Practice: Prefer cloning an Org to changing the API key
If you want to change the Demo Config to be directed to a different BigPanda organization, don't change the API Key; instead, clone the Org providing a new API Key (see below). Only change the API Key in-place if the new key belongs to the same BigPanda organization.
The SPOC (Single Point of Contact) Email field is there to help site administrators easily know who to contact regarding this configuration. For example, you may be creating the configuration for someone else (say, the Demo Config is owned by you but you want the other person to be the primary contact). In most cases, this would be you... but it's there just in case that's not the case... ;-)
The Demo Config Owners field is there so that you can share ownership of this Demo Config with someone else. For example, in a POV there may be more than one Sales Engineers using DemoSim to teach the customer how to configure BigPanda. In this case it is efficient for them to both use the same Demo Config (i.e. integration mappings, variables, and scenario choices).
bpSalesEngineering user account name format
BigPanda user accounts are authenticated by Okta; so your actual account name is your BigPanda email address prepended with "okta_". Demo Admin won't suggest or list other people's account names, nor will it reject an invalid name. So if you want to share your Demo Config with someone else, it's usually easiest to just ask the other person for their account name. You know you have it right if the other person can access your shared Org. :-)
Deleting a DemoSim Org will unlink any scenarios from the org and then remove its record. You'll first be prompted to verify that this is really what you want to do. There is no way to export or import Demo Configs, so make sure this is really what you want to do.
Creating an Demo Config Template
The CLONE DEMO CONFIG button will copy over the Integration Type primary_property and secondary property preferences as well as the variables. The original Org's API key and SPOC Email are populated into the dialog but you don't have to use these. In this way, the source org can be considered a template so that you don't have to recreate your preferences and only have to map the integration types to the BigPanda organization.
Integrations Mapping
Demo Config scenario events are mapped to an integration type. For alert events, this implies a few things:
The alert event schema includes specific primary and secondary tags
The target BigPanda org is configured to correlate events expecting certain tags (sometimes, specific to the integration.)
You have to decide between changing the scenario type's primary and secondary tag mapping or the tags used in the scenario. If you change it in the integration type, all scenarios (in this Demo Config) that use this type must have those tags and they must contain the correct data. This makes scenario sharing difficult (even simply reusing your own scenarios) if you don't stick to a standard set of primary/secondary tags for a given integration type. When we get to scenario development, later, we'll show you how to rename tags to conform to your chosen integration type preferences.
Best Practice: DemoSim alert and change events are intended for REST integrations
Note that you can map DemoSim integrations to both REST and Out-of-box integrations. However, it's up to you to know whether your target integration expects a flat object or a complex object structure. DemoSim will send flat object payloads (JSON), so some Out-of-box integrations cannot be used. Same with change integrations; choose REST unless you really know that the target integration can handle a flat payload.
The Integration Type editors provide information and choice for several aspects. Let's look at two examples, both with an integration named "AppDynamics" but one as a generic REST integration and the other as the OOTB AppDynamics integration:
The API Type and Default Tags fields show what type of integration the choice is. This is a good example of the complicated schema required for an OOTB integration versus the simple schema of a REST integration. Again, you can choose either but "your mileage may vary"!
Another thing to note is that the default primary and secondary tags for a REST integration are "host" and "check", respectively. This is why (as you'll see later in the discussion about the scenario alert event schema) primary and secondary property mapping is part of the integration mapping for each DemoSim Org configuration.
Variables
DemoSim scenarios use variables with a curly-brace format like so: ${rnd.app_code.s1}
The first part (e.g. "rnd") part indicates that the is a random variable.
The second part (e.g. "app_code") is the code as shown on the VARIABLES tab.
The third part is optional and is a seed value.
The seed value is used to repeat the value within the scenario. Each time the scenario is played, a random value is chosen from among the values you've populated in the DemoSim Admin Variables tab; however, that value is reused everywhere else that the code is found (that is, every alert and change event in the scenario). When the scenario is played again, a new random value is chosen and used for that seed. On the other hand, if you want randomization within the scenario, just don't use seeds.
There are 10 standard variable codes:
Code | Typical Use |
---|---|
app_code | Applications |
az_code | AWS Availability Zone |
city_code | City |
cloud_code | Cloud type (e.g. AWS, Azure, etc.) |
company | Company name |
db_code | Database type |
env_code | IT environment (e.g. dev, qa, uat, prod, etc.) |
geo_code | Geographical region (e.g. APJ, EMEA, US, etc.) |
tier_code | Logical IT tier |
urldomain | Company's domain address (e.g. acme.com) |
For anything else, you can use the variable classes: ip_octet, aws_id, a (alpha), d (digit), or h (hex).
For example, the code 192.168.${rnd.ip_octet.s1}${rnd.ip_octet.s2} would result in a random class C IP address from 192.168.0.0 to 192.168.255.255.
Or the code ${rnd.aaaa.s1}-${rnd.dddd.s1}-${rnd.hh.s1} would result in a value like "abcd-1234-fe".
This is done so that you can have internal consistency within the scenario. For example, in the first scenario that you created when you followed the integration instructions, the alert event's host tag is ${rnd.aws_id.s1}.${rnd.geo_code.s1}.${rnd.urldomain.s1}. This code is also used in the change event's summary and instance tags. This is why you get correlation of your one change event to your one alert event, out of box; you get the same hostname showing in all three tags. The next time you run the scenario it will be a different hostname, but will still be consistent among the three tags.
This gives a lot of flexibility for creating standard scenarios where, even though the details change, the story is the same.
Scenarios
The DemoSim Scenario is a distinct record in the DemoSim API that includes event and change records as well as some other metadata for identification and sharing. When the DemoSim Chrome Extension plays the scenario, changes are sent first and then alerts. Alerts are sent in batches, according to the individual integration type's App Key; so if the scenario has 5 "infra-mon" alerts and 8 "app-mon" alerts then you see two status messages saying that DemoSim posted 5 alerts and 8 alerts, respectively.
If the alert events include PAUSE records then the scenario is considered a multi-step scenario; that is, you can send the scenario alerts to BigPanda in stages.
Scenario Alert Timeline, Offsets, and Pauses
When you trigger the DemoSim Chrome Extension to start a scenario, DemoSim calculates all of the alert timestamps relative to the time that you clicked the mouse. So if the largest offset is 1800 seconds then the first scenario alert will have started 30 minutes before. This is done to keep the timing of the events consistent, regardless of how long you may pause in a multi-step scenario.
Let's say that you have a scenario with 5 alerts, followed by a pause, and then followed by another 8 alerts. Let's also say that the last event's offset is 300 seconds (five minutes). So if you were to play the entire scenario without a pause, in the BigPanda timeline it would show that the incident lasted 5 minutes. If you start the scenario and let that pause last for 15 minutes (while you explain the glories of BigPanda...), then you resume the scenario to play the last 8 alerts:
What time will BigPanda show that the first alert occurred?
What time will the last alert have occurred?
If you said it started 20 minutes ago and ended 15 minutes ago, you're right!
That's because all the offsets were calculated when you clicked the mouse, regardless of how many pauses or how long you pause.
If you need to play out several scenarios (for example, to create a "background" list of incidents") simply split your events into several scenarios. DemoSim Chrome Extension plays the scenarios asynchronously, so you don't have to wait for one scenario to finish before sending another. Click them all as fast as you can and leave the extension interface open to see the status (at the bottom); you'll see the feedback from all the scenarios play back. In that respect, the only limit is BigPanda's API throttle limits.
Playing large scenarios
If you need to post a large number of alert events, use the Sales Engineering SWAT utility called bpInjector
If you need to post a large number of change records, use bpChangePoster
The following tables show the schema for the Events and Changes.
For the Events schema, the following table shows the required fields. All other fields (last row) are alert tags that you are free to define as you wish. Note that the "status" tag is part of BigPanda Alerts api metadata but not the DemoSim Event schema metadata; this is why it's a tag for DemoSim.
For the Changes schema, the following table shows the required fields. All other fields (last row) belong to the tags array.
Field | Type | Purpose | Included in final payload |
---|---|---|---|
_offset | metadata | Determines the order and time of the change record relative to the start of the incident (i.e. the first alert event). | Converted to "start" tag |
integration_type | metadata | Maps the event schema to one of the Org's "change" Integration Types. | Converted to "app_key" |
identifier | tag | The change's unique identifier from its original change system, ie: "identifier": "CMD-001" | yes |
status | tag | Status of the change. Choose one: [Planned,In Progress,Done,Canceled], ie: "status": "In Progress" | yes |
summary | tag | Short summary/title of the change, ie: "summary": "some very important summary" | yes |
ticket_url | tag | The URL of the record in the change system, ie: "ticket_url": "https://yourjira.com/issue/CMD-001" | yes |
...all other fields | tag | Remaining fields are included in the change record's "tags" array. | yes (under tags array) |
Calculating change record start and end times
The change record start and end timestamps are calculated using the "_offset" field relative to the start and end of the scenario.
The start of the scenario is determined by the largest alert event offset relative to when the scenario was triggered. So if the largest alert offset is 1800 seconds (30 minutes) then the first event (the alert with the lowest offset) would be set to have occurred 30 minutes before you triggered the scenario.
The change record "start" is set as "_offset" seconds before the first alert event.
The change record "end" is set as "_offset" seconds after the last alert event.
So in this way, DemoSim ensures that the change record "wraps" the alert incident time window.
Scenario Editor
Your Demo Config's SCENARIOS tab lists the scenarios that you've added to the Org. Each scenario is presented in a collapsible Scenario Editor. When a Scenario Editor is collapsed, all you see is the scenario name on the left and an icon that points downward on the right. Clicking the scenario name will expand or collapse the Scenario Editor. Collapsing a Scenario Editor removes its data from your browser's memory; uncollapsing it will pull the data from the cloud and load into your browser. Depending on the size of your scenario, this can be up to about 1/2 Mb. There's really no limit to how many scenarios you can have in your Org but uncollapsing all of your Scenario Editors will definitely chew up RAM.
When a Scenario Editor is expanded, you will see a series of buttons on the top:
TEST SCENARIO - This will open the Scenario Tester dialog (see the Scenario Testing section below)
CLONE SCENARIO - This will create a duplicate of the scenario, which you will own, with a new name, description, and category.
DELETE SCENARIO - This does exactly what it says; permanently. This button will only be enabled if you own the scenario.
REMOVE FROM ORG - This is a quicker way to remove the scenario than searching through the Scenario Store. This only removes the scenario from the current Org; it does not delete the scenario or remove it from other Orgs.
POST SCENARIO UPDATES TO STORE | ABANDON UPDATES - These two buttons enable you to post scenario updates to the Scenario Store or to abandon your updates. If you own this scenario, this button set will be enabled when you make changes to the scenario; if you don't own the scenario, they won't be enabled.
Below the buttons are the scenario name, description, and background fields. After that are the fields for scenario sharing:
Groups Can Use - use this to give read-only access to the selected groups.
Scenario Owners - This starts with your own account name but you can other users to give them shared ownership of the scenario. Note: anyone in this list can remove you from the list also.
Scenario Users - This is a list of the accounts that have added your shared scenario to one or more of their own DemoSim Orgs.
The rest of the Scenario Editor contains the Events and Changes grid editors. A "Grid Editor" is a sort of "spreadsheet lite", allowing you to
Create, Copy, and Delete records (rows)
Create, Copy, and Delete columns (tags only, not metadata)
Filter, sort, and hide
Export the filtered data to a CSV file
Search and Replace tag values using regular expressions.
Mutating Records (rows)
The method for mutating records in the Grid Editors is through the buttons above the columns (EXPORT, SEARCH/REPLACE, NEW RECORD, COPY RECORD, DELETE RECORD).
Usually you'll use the Search/Replace, New, Copy, and Delete buttons to make small, targeted edits. However, in case you need to make huges changes and would rather use an external editor like Excel or Google Sheets, There's the EXPORT and REPLACE buttons. The REPLACE button is used to replace all the records from a CSV file. However, not just any CSV; the schema (column names and order) needs to be exactly the same! So best practice is to first use the EXPORT button to create the CSV file, modify the contents, then REPLACE the records with the new CSV file.
The Copy and Delete buttons are only enabled when you select one or more records. You can delete multiple records at a time.
The COPY RECORD button will present you with a dialog, where you can change the copied values before inserting the new record. However, you can only copy one record at a time; even if you make multiple selections, the COPY RECORD button will only copy the first record. The new record will be appended as the last row (you might have to change the "rows per page" or scroll to the last page to see it), however when you post your updates to the scenario store, it will be saved in the order according to its offset value.
Mutating Tags (columns)
All column headers have a vertical ellipsis which opens a column menu. They all include options to pin (right or left), filter, or hide the column. However, tag columns (i.e. not metadata) also have menu selections to "Delete Tag", "Insert Tag", or "Clone Tag". The "Delete Tag" item will immediately delete that column. The Insert and Clone options will present you with a dialog to enter the name of the new tag. The Clone option will copy the data from the old tag to the new.
Note that there is no "Rename Tag" menu option. To rename a tag, simply clone the column and then delete the old column.
Editing Events
In the Events grid editor, alert records (event_type=ALERT) become the alerts that you see in BigPanda. They are ordered according to the _offset field, which represents the number of seconds from the beginning of the scenario that the alert occurs. PAUSE records are used to control the flow of the scenario from the DemoSim Chrome Extension. For PAUSE records, the seconds field determines how long DemoSim will wait until it auto-resumes the next step of your scenario. The seconds field is rounded up to the nearest minute by DemoSim but a value of zero (0) will wait indefinitely until you trigger the next step. See the DemoSim Chrome Extension documentation for further explanation.
The integration_type field is a selector, which allows you to choose from one of your Org's Integration Types. Selecting an Integration Type will set the primary_property and secondary_property fields. The editor performs some validation on this selection; you cannot save changes unless your schema includes the tags specified by the primary_property and secondary_property fields. If these are missing, create a new column (or clone a column), providing the necessary tag name, then you can select the desired Integration Type.
A status tag is required for every ALERT Event
The editor will perform validation to ensure that you have a status tag and that it contains a valid BigPanda status value (critical, warning, unknown, ok).
Editing Changes
Scenario Testing
Things to explain: Scenario Tester use case Temporary data Refreshing Variables PAUSE events
[block:image] { "images": [ { "image": [ "https://files.readme.io/c098890-Screen_Shot_2022-03-15_at_11.06.07_AM.png", "Screen Shot 2022-03-15 at 11.06.07 AM.png", 2266 ], "caption": "The Scenario Tester" } ] } [/block]
Scenario Store
DemoSim scenarios are stored and shared through the Scenario Store. When you create a scenario, it is stored for you to use in any of your Demo Config configurations. You can also find scenarios that other people have shared. The quickest way to find a scenario is to use the Search dialog and search through the scenario names, descriptions, or owners. When you find a scenario that you want to add to your Org, simply click in the checkmark box and press SUBMIT.
There are three ways to create a new scenario:
Use the CREATE NEW SCENARIO button. This will create a new scenario from a template, which includes one event record and one change record. This is a great way to get started learning how to create your own scenarios, especially learning how to use the variables. This will automatically attach the new scenario to your Demo Config.
Use the IMPORT SCENARIO CSV button. If you've used an earlier version of DemoSim then you might have some favorite scenario event and change files in Comma Separated Value (CSV) format. Use the Import Scenario dialog to import these files (one scenario at a time) into the Scenario Store. This will also automatically attach the new scenario to your DemoSim Org.
From the Scenario Editor for a given scenario, click the CLONE SCENARIO button. This will create a duplicate of the original scenario with (preferably) new name, description, and category choices, which you own and have full access to edit. You can make changes to this new scenario, share it, even delete it. You cannot save changes to a shared scenario, so this is a great way to copy someone else's shared scenario and customize it for your own purposes. This will also automatically attach the new scenario to your DemoSim Org.
To remove a scenario from your Org, uncheck the scenario from the Scenario Store (or, from the Scenario Editor, click the REMOVE button.) To delete a scenario that you own, from the Scenario Editor simply select the DELETE SCENARIO button.
Deleting Shared Scenarios
Before you can delete a scenario, you must un-share it. Even when you've un-shared a scenario, you still need to wait until all other users are no longer using it in their own ORGs before you can delete it. You can see who is using your scenario in the Scenario Users list (in the Scenario Editor).
Demo Admin will automatically remove a shared scenario (from your ORG) for which you no longer have access. When you select an ORG that is using that scenario, you'll see a pop-up alert saying that the scenario has been removed from your Org.
So the trick to deleting a shared scenario is to first un-share it, then wait for the Scenario Users list to empty. Alternatively, you can contact [email protected]
and ask for the scenario to be forcibly removed, but this should be considered a last resort.
As you can see, deleting a shared scenario is a bit of a pain. It's better to edit your shared scenario than to delete it, as people probably depend on it being there for them to use.