posted

2 Comments

Virtual SAN Observer

The VMware Virtual SAN Observer is currently the best monitoring and troubleshooting tool for Virtual SAN that is available today. The tool is utilized for monitoring performance statistics for Virtual SAN live or offline.The Virtual SAN Observer UI depends on a couple of JavaScript and CSS libraries (JQuery, d3, angular, bootstrap, font-awesome) in order successfully display the performance statistics and their information.

These library files are access and loaded during runtime when the Virtual SAN Observer page is rendered. The tool requires access to the libraries mentioned above in order to work correctly. This means that the vCenter Server requires access to the internet. This requirement can potentially present a challenge in secured environments where applications with access to the internet is not be a practical form of operation and its not allowed.

Many vSphere admins have encountered this issue. In particular, those supporting secured environments. In order to overcome this issue, the vCenter Server Appliance can be modified so that it can access the required files and library locally.

Note: it is a recommended practice to always deploy an out of band vCenter Server Appliance for the purpose of using Virtual SAN Observer.

In order to configure the Virtual SAN Observer to work without internet connectivity (offline mode) the files listed below need to be modified. The html files are located under the vCenter Server appliance “/opt/vmware/rvc/lib/rvc/observer/” directory.

  • stats.erb.html
  • graphs.html
  • history.erb.html
  • login.erb.html

JavaScript and CSS Files Modifications

Locate the graphs.html, stats.erb.html, history.erb.html and login.erb.html files located under “/opt/vmware/rvc/lib/rvc/observer/” and download the exact versions of the JavaScript, CSS, and font libraries mentioned in those files.

The list of JavaScript, CSS, and font files need to be downloaded on to a local system. The EXACT versions are required for this to work (refer the source page from a web browser for exact versions). Create a folder structure under the “/opt/vmware/rvc/lib/rvc/observer/” directory as presented below and place the respective library files within each directory.

Folder Structure

Top folder – externallibs

  • Sub folders – js, css, font

Sub folder – js

  • angular.min.js
  • bootstrap-datepicker.min.js
  • bootstrap.min.js
  • d3.v3.min.js
  • jquery-1.9.1.min.js
  • jquery-1.9.1.min.map
  • jquery-ui.min.js
  • jquery.js

Sub folder – css

  • bootstrap-combined.no-icons.min.css
  • datapicker.min.css
  • font-awesome.css

Sub folder – font

  • fontawesome-webfont.eot
  • fontawesome-webfont.svg
  • fontawesome-webfont.ttf
  • fontawesome-webfont.woff
  • FontAwesome.otf

HTML Files Modifications

Modify the content within <script></script>, <link> tags and replace them with just the file name instead of the http link.

stats.erb.html (before modifications)

<script src=”https://code.jquery.com/jquery-1.9.1.min.js”></script>
<script src=”https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js”></script><script src=”https://code.jquery.com/ui/1.9.1/jquery-ui.min.js”></script>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js”></script>
<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js”>
</script><link href=”https://netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css” rel=”stylesheet”>
<link href=”https://cdnjs.cloudflare.com/ajax/libs/bootstrapdatepicker/1.3.0/css/datepicker.min.css” rel=”stylesheet”><script src=”https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/js/bootstrap-datepicker.min.js”></script>

stats.erb.html (after modifications)

<script src=”/externallibs/js/jquery-1.9.1.min.js”></script>
<script src=”/externallibs/js/bootstrap.min.js”></script>
<script src=”/externallibs/js/jquery-ui.min.js”></script>
<script src=”/externallibs/js/d3.v3.min.js”></script>
<script src=”/externallibs/js/angular.min.js”></script>
<link href=”/externallibs/css/font-awesome.css” rel=”stylesheet”>
<link href=”/externallibs/css/datepicker.min.css” rel=”stylesheet”>
<script src=”/externallibs/js/bootstrap-datepicker.min.js”></script>

graphs.html (before modification)

<script src=”https://code.jquery.com/jquery-1.9.1.min.js”></script>
<script src=”https://code.jquery.com/ui/1.9.1/jquery-ui.min.js”></script>
<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js”></script>
<link href=”https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.no-icons.min.css” rel=”stylesheet”>
<link href=”https://netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css” rel=”stylesheet”>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js”></script>

graphs.html (after modifications)

<script src=”/externallibs/js/jquery-1.9.1.min.js”></script>
<script src=”/externallibs/js/jquery-ui.min.js”></script>
<script src=”/externallibs/js/angular.min.js”></script>
<link href=”/externallibs/css/bootstrap-combined.no-icons.min.css” rel=”stylesheet”>
<link href=”/externallibs/css/font-awesome.css” rel=”stylesheet”>
<script src=”/externallibs/js/d3.v3.min.js”></script>

history.erb.html (before modifications)

<script src=”https://code.jquery.com/jquery.js”></script>
<script src=”https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js”></script>
<script src=”https://code.jquery.com/jquery-1.9.1.min.js”></script>
<script src=”https://code.jquery.com/ui/1.9.1/jquery-ui.min.js”></script>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js”></script>
<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js”></script>
<link href=”https://netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css” rel=”stylesheet”>

history.erb.html (after modifications)

<script src=”/externallibs/js/jquery.js”></script>
<script src=”/externallibs/js/bootstrap.min.js”></script>
<script src=”/externallibs/js/jquery-1.9.1.min.js”></script>
<script src=”/externallibs/js/jquery-ui.min.js”></script>
<script src=”/externallibs/js/d3.v3.min.js”></script>
<script src=”/externallibs/js/angular.min.js”></script>
<link href=”/externallibs/css/font-awesome.css” rel=”stylesheet”>

login.erb.html (before modifications)

<script src=”https://code.jquery.com/jquery.js”></script>
<script src=”https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js”></script>
<script src=”https://code.jquery.com/jquery-1.9.1.min.js”></script>
<script src=”https://code.jquery.com/ui/1.9.1/jquery-ui.min.js”></script>
<script src=”https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js”></script>
<script src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js”></script>
<link href=”https://netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css” rel=”stylesheet”>

login.erb.html (after modifications)

<script src=”/externallibs/js/jquery.js”></script>
<script src=”/externallibs/js/bootstrap.min.js”></script>
<script src=”/externallibs/js/jquery-1.9.1.min.js”></script>
<script src=”/externallibs/js/jquery-ui.min.js”></script>
<script src=”/externallibs/js/d3.v3.min.js”></script>
<script src=”/externallibs/js/angular.min.js”></script>
<link href=”/externallibs/css/font-awesome.css” rel=”stylesheet”>

Once all the changes have been made, connect to the vCenter Server Appliance with RVC and perform a reload by typing “reload” in the CLI before starting the Virtual SAN Observer. To start Virtual SAN observer from the RVC command line interface use the command listed below, then access the Virtual SAN Observer web page by pointing to the vCenter Server appliance address on port 8010 (http://vcsaIP/fqdn:8010).

“vsan.observer computers/Cluster/ –run-webserver –force “

Note: The file and modifications covered in this article are compatible with the latest release of vCenter Server Update 2. This will not work with vCenter Server Update 1.

For more information on Virtual SAN Observer download the white paper Monitoring VMware Virtual SAN with Virtual SAN Observer.

Special thanks to our awesome engineers Mousumi Mullick and Christian Dickmann for helping out with all of the Virtual SAN Observer greatness!!

– Enjoy

For future updates on Virtual SAN (VSAN), Virtual Volumes (VVols), and other Software-defined Storage technologies as well as vSphere + OpenStack be sure to follow me on Twitter: @PunchingClouds

 

About the Author

Rawlinson Rivera

Rawlinson is a Principal Architect working in the Office of CTO for the Storage and Availability Business Unit at VMware. Focus on defining and communicating VMware’s product vision and strategy, and an active advisor for VMware's product roadmap and portfolio. Responsibilities revolved around connecting VMware's R&D organizations with customers and partners in the field. He specializes in enterprise architectures (private and public clouds), Hyper-converged Infrastructures, business continuity / disaster recovery technologies and solutions including Virtual SAN, vSphere Virtual Volumes, as well as other storage technologies and solutions for OpenStack and Cloud-Native Applications. Rawlinson is a VMware Certified Design Experts (VCDX#86) and main author of the blog punchingclouds.com.