Rubrik : Generate Executive Summary



Background

It happens quite often that my management is asking for details about our Rubrik usage. Not only a single cluster, all clusters ! This is time consuming (boring too) to go on each clusters, collects the details, compute total usage, protection status, storage savings ratio .... I think you know me now, I'm fan of automating boring things. This task does not escape to the rule ;)

What to report ?

This is the starting point, what is important to report to the top management, what they want to know ? The goal of such report is : when do I need to invest further, and how much do we need. What is important is how efficient is the platform in terms of retention, in terms of storage optimization and how far in the past can I recover. All this can bet obtained by querying the API stack.

Rubrik Reporting

You should then ask yourself : "Shall I use the Rubrik Reporting module for that ?" Yes and no. "Yes", because it helps to get a lot of information and "No" because I cannot get all details in one single report.

On the other hand, what I'm reporting is probably close to what your management is asking but could certainly differ in some points. This script is a starting point and you can still change the way you want to report the figures and the layout can also be different. I'm reporting numbers, up to you to present them nicely.

How does it work ?

So, of course, I'm not going to redo the wheel, this is not the point. As mentioned above, you can already get a lot from the internal reporting module. I'm actually using it. I'm generating a temporary report (which is deleted when not needed anymore) to fetch the snapshots details and a lot of other API calls to get details about hardware, IPs, node status, total storage, etc ...

The script is running on each clusters you have specified in a configuration variable and I'm reporting per cluster and aggregated figures at the end.

With that, you can report to your management a lot of interesting data about a single cluster or every clusters in your environment. To date, I'm not able to get that on a simple way with the Rubrik reporting module. But again, this is all a matter of requests from your top management.

Step 1 : configure the script to define what cluster(s) to analyze (from 1 to .... 100 if you want).

The variable works the same way as it is defined in my Rubrik Central project, with the password obfuscated by a bin2hex / hex2bin function to hide it from easy-ready-over-the-shoulder

$clusterConnect=array(
0 => array(
"cluster" => "cluster1",
"username" => "username",
"password" => "70617373776f7264",
"ip" => "192.168.1.1"
),
1 => array(
"cluster" => "cluster2",
"username" => "username",
"password" => "70617373776f7264",
"ip" => "192.168.1.2"
));
Step 2 : run the script !

The script will then run a collection of API calls to both the above defined clusters, reports individual figures and a summary of some specific numbers like the total storage, total objects protected, ....

Let see it in action on 2 virtual clusters : 


$ php rkExecSum.php

__________        ___.            .__  __
\______   \ __ __ \_ |__  _______ |__||  | __
 |       _/|  |  \ | __ \ \_  __ \|  ||  |/ /
 |    |   \|  |  / | \_\ \ |  | \/|  ||    <
 |____|_  /|____/  |___  / |__|   |__||__|_ \
\/             \/          \/
+--------------------------------------------------+
|    Rubrik Cluster Executive Summary Generator    |
+--------------------------------------------------+
  (c) 2021 - Frederic Lhoest

This script is collecting data from specified Rubrik clusters, summarizes details and reports
aggregated numbers for each clusters.

It requires the PhP Rubrik Framework available here : https://github.com/flhoest/Rubrik.

(i) DEBUG -- Gettings initial cluster details for Cluster1
/!\ DEBUG -- Report does not exist, creating...
(i) DEBUG -- Report Created : 201
(i) DEBUG -- Generating object details : ................................
(i) DEBUG -- Data generated!, displaying results...
(i) DEBUG -- Data have been generated on 2021-07-25 08:17:06+0000
(i) DEBUG -- Deleting temporary report from cluster...

{Cluster1} +---------------------------------------------
{Cluster1} | Cluster Identity
{Cluster1} +---------------------------------------------------------
{Cluster1} | Cluster name : Cluster1
{Cluster1} | Cluster location : Belgium
{Cluster1} | Number of nodes : 1 - Running : 6.0.0-p1-12566
{Cluster1} +-----------------------------------------------------------------
{Cluster1} \-------+ Node 1
{Cluster1}    | IP address : 192.168.1.1
{Cluster1}    | Node serial number : VRAxxxxxx4669
{Cluster1}    | Node status : OK

{Cluster1} +---------------------------------------------
{Cluster1} | Storage
{Cluster1} +---------------------------------------------------------
{Cluster1} | Total Storage : 2.14 TB
{Cluster1} | Available Storage : 1.76 TB
{Cluster1} | Snapshots : 1556
{Cluster1} | Data Ingested : 855.86 GB
{Cluster1} | Data Stored : 315.79 GB
{Cluster1} | Runway : 1826 day(s)
{Cluster1} | Storage optimization Ratio is : 2.7:1
{Cluster1} +----------------------------------------------------------

{Cluster1} +---------------------------------------------
{Cluster1} | Storage Breakdown per SLA (with percentage of total)
{Cluster1} +---------------------------------------------------------
{Cluster1} | 30 Days with Archival to Glacier : ... 7.61 GB (0.36 %)
{Cluster1} | AWS-2 days : ......................... 75.11 GB (3.51 %)
{Cluster1} | Bronze : ............................. 0.00 B
{Cluster1} | Bronze (Managed by Polaris) : ........ 0.00 B
{Cluster1} | BusinessUnit_SLA : ................... 0.00 B
{Cluster1} | Daily with AWS Archival : ............ 24.37 GB (1.14 %)
{Cluster1} | Daily with GCP Archival : ............ 143.63 GB (6.72 %)
{Cluster1} | Default Policy - CDP : ............... 0.00 B
{Cluster1} | GCP SLA (Managed by Polaris) : ....... 0.00 B
{Cluster1} | Gold : ............................... 0.00 B
{Cluster1} | Gold (Managed by Polaris) : .......... 0.00 B
{Cluster1} | MS-SQL Quick : ....................... 19.06 MB (0 %)
{Cluster1} | Silver : ............................. 0.00 B
{Cluster1} | Silver (Managed by Polaris) : ........ 0.00 B
{Cluster1} | Test : ............................... 42.30 GB (1.98 %)
{Cluster1} | Test w Replication : ................. 0.00 B
+-----------------------------------------------------------

(i) DEBUG -- Gettings initial cluster details for Cluster2
/!\ DEBUG -- Report does not exist, creating...
(i) DEBUG -- Report Created : 201
(i) DEBUG -- Generating object details : ..............................
(i) DEBUG -- Data generated!, displaying results...
(i) DEBUG -- Data have been generated on 2021-07-25 08:11:05+0000
(i) DEBUG -- Deleting temporary report from cluster...

{Cluster2} +---------------------------------------------
{Cluster2} | Cluster Identity
{Cluster2} +---------------------------------------------------------
{Cluster2} | Cluster name : Cluster2
{Cluster2} | Cluster location : Belgium
{Cluster2} | Number of nodes : 1 - Running : 5.3.2-p3-19174
{Cluster2} +-----------------------------------------------------------------
{Cluster2} \-------+ Node 1
{Cluster2}    | IP address : 192.168.1.2
{Cluster2}    | Node serial number : VRVxxxxxxF64F
{Cluster2}    | Node status : OK

{Cluster2} +---------------------------------------------
{Cluster2} | Storage
{Cluster2} +---------------------------------------------------------
{Cluster2} | Total Storage : 10.83 TB
{Cluster2} | Available Storage : 8.11 TB
{Cluster2} | Snapshots : 391
{Cluster2} | Data Ingested : 15.20 TB
{Cluster2} | Data Stored : 2.46 TB
{Cluster2} | Runway : 326 day(s)
{Cluster2} | Storage optimization Ratio is : 6.2:1
{Cluster2} +----------------------------------------------------------

{Cluster2} +---------------------------------------------
{Cluster2} | Storage Breakdown per SLA (with percentage of total)
{Cluster2} +---------------------------------------------------------
{Cluster2} | API_Created_SLA : .................... 0.00 B
{Cluster2} | Backup to GCP : ...................... 1.51 GB (0.01 %)
{Cluster2} | Bronze : ............................. 33.36 GB (0.31 %)
{Cluster2} | Bronze (Managed by Polaris) : ........ 0.00 B
{Cluster2} | Business_Unit_1 : .................... 0.00 B
{Cluster2} | Denver NAS : ......................... 0.00 B
{Cluster2} | GCP SLA (Managed by Polaris) : ....... 0.00 B
{Cluster2} | Gold : ............................... 0.00 B
{Cluster2} | Gold (Managed by Polaris) : .......... 0.00 B
{Cluster2} | Mobility : ........................... 1.80 TB (16.63 %)
{Cluster2} | Not Important : ...................... 75.55 GB (0.7 %)
{Cluster2} | Nutanix CE : ......................... 265.28 GB (2.45 %)
{Cluster2} | Quick Rotation : ..................... 0.00 B
{Cluster2} | Silver : ............................. 0.00 B
{Cluster2} | Silver (Managed by Polaris) : ........ 0.00 B
{Cluster2} | Splunk PoV : ......................... 43.18 GB (0.4 %)
{Cluster2} | Telarix Backup : ..................... 0.00 B
{Cluster2} | Telarix Backup with Archive : ........ 0.00 B
{Cluster2} | test : ............................... 0.00 B
{Cluster2} | Test EDGE : .......................... 0.00 B
{Cluster2} | vmWare View - VDI : .................. 194.24 GB (1.79 %)
{Cluster2} | vmWare View - VDI - Weekly : ......... 0.00 B
+-----------------------------------------------------------

+--------------------------------------------------
| Summary for all Clusters
+--------------------------------------------------
| Total storage in all clusters : 12.97 TB
| Available storage in all clusters : 9.86 TB
| All snapshots : 1947
| Total data ingested : 16.05 TB
| Total data stored : 2.77 TB
| Storage optimization Ratio is : 5.8:1
+-----------------------------------------------------------
You can find the script on my GitHub Repo here. With this, you can have pretty decent data to present to your hierarchy. Oh, you will see some nice colors as well if you run it on your own shell.

Once again, I hope this helps ! ;)




Comments

What's hot ?

ShredOS : HDD degaussing with style

ThingSpeak : Create some useful formulas

Nutanix : CVM stuck into Phoenix