I recently learned about a really cool capability that is part of the NSX Easy Install feature that was initially introduced back in vSphere 7.0 Update 3, allowing administrators to easily deploy, configure and manage NSX directly from vCenter Server using the vSphere UI.
Here is a demo of this feature in action by fellow VMware colleague Vladimir Velikov, one of the Engineers who worked on the initial integration:
While reviewing the latest NSX 4.0.1.1 release notes, which adds support for vSphere 8 and DPU-based offloading, I found this little nugget at the very end of the What's New section under NSX vSphere UI Integration which states:
NSX Events Integrated in vCenter
🤩 whoa, the possibilities of this integration is immense, especially from an automation and event-driven standpoint ... In fact, this is something VMware Event Broker Appliance (VEBA) users have been asking for, a way to tap into the rich Alarms and Events provided by NSX, similiar to what vCenter Server provides out of the box with over 2000+ events.
Today, NSX has over 200+ pre-defined alarms across the different NSX components and services, with more details in the NSX Event Catalog documentation. As part of the NSX integration with vSphere 8, a new vSphere Alarm is created in vCenter Server that is associated with the respective NSX Alarm. Once an NSX Alarm is triggered, it will be shown in both the NSX UI but also in the vSphere UI. In addition to the UI notification, it also generates a specific vCenter Server Event that can then be consumed by users and automation platforms like VEBA.
As mentioned in the NSX 4 documentation, a new vCenter Server Event type will be created and it will be prefixed with com.vmware.nsx.management.nsxt and appended with the name of the specific NSX Alarm. This means that users can subscribe to specific NSX Alarms within vCenter Server and perform event-driven automation based on the events that you are interested in monitoring or alerting. The event-driven use cases and possibilities are truly endless when using VEBA!
Here are the high level steps for setting this up:
Pre-Requites:
- vSphere 8.0
- NSX 4.0.1.1 (NSX Manager with vCenter Plugin)
- License key for NSX 4.0.1.1
- Self-Managed vCenter Server (e.g. Management vSphere Cluster that manages another vCenter Server is not supported)
Step 1 - Download latest NSX 4.0.1.1 OVA (ensure it is the NSX Manager with vCenter Plugin version or the deployment will not be successful)
Step 2 - Navigate to the NSX plugin in the vSphere UI and click on Install NSX to begin. When prompted for the NSX OVA, locate the NSX OVA that you had downloaded from Step 1.
Once you have filled out the basic deployment OVF properties, you will be prompted in the wizard to select the self-managed vCenter Server to associate with the NSX deployment for the integration.
Once NSX has been successfully deployed and configured, you will see new vCenter Server Alarms that map to the exact same alarms defined in NSX Manager as shown in the screenshot below.
Note: It is important to understand this feature is currently a one-way integration from NSX to vCenter Server. This means if you want to acknowledge or reset the alarm, it needs to be done using the NSX UI, rather than the vCenter Server UI.
Unlike a traditional vSphere Alarm today, which only emits a single event type called AlarmStatusChangedEvent, for the NSX integration, vCenter Server will emit a unique Event for each NSX Alarm. How many NSX Events exists today, well as of writing this blog post there are currently 258 with NSX 4.0.1.1 release.
So, how would you go about discovering all the different NSX Events in vCenter Server? That was my first question as well and I came up with the following PowerCLI snippet, which uses the vSphere API to extract all the event IDs and their respective descriptions.
$nsxAlarms = $alarms | where {$_.ExtensionData.Info.LastModifiedUser -eq "com.vmware.nsx.management.nsxt"} $results = @() foreach ($event in $nsxAlarms) { $tmp = [PSCustomObject] @{ EventId = $event.ExtensionData.Info.Expression.Expression[0].EventTypeId EventDescription = $event.Description; } $results += $tmp } $results
Since I already maintain a Github repo of all the different vCenter Events across vSphere and VMware Cloud on AWS releases, I figure I might as well append to that repo and include the NSX specific events in vCenter Server. Here is the complete list for NSX 4.0.1.1 Events in vSphere 8.0 IA.
I think this new vCenter Server integration can bring a lot of benefits and visibility to administrators and I hope to see this capability get extended to the other NSX deployment model, which is still most common within our user base. I also hope to see a bi-directional integration where acknowledgment of NSX alarms within vCenter Server will also reflect in the NSX UI, so that you do not have to context switch between the two clients 🙂
Thanks for the comment!