Skip to content

Commit eef9e3e

Browse files
add NetAppStorageVms
1 parent af6f8d5 commit eef9e3e

File tree

3 files changed

+42
-6
lines changed

3 files changed

+42
-6
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ These inventory options are enabled via the multi-select in the input configurat
9696
| Licensing | [license/LicenseInfos][23] | cisco:intersight:licenseLicenseInfos
9797
| NetApp | [storage/NetAppClusters][11] | cisco:intersight:storageNetAppClusters |
9898
| NetApp | [storage/NetAppNodes][12] | cisco:intersight:storageNetAppNodes |
99+
| NetApp | [storage/NetAppStorageVms][25] | cisco:intersight:storageNetAppStorageVms |
99100
| NetApp | [storage/NetAppVolumes][17] | cisco:intersight:storageNetAppVolumes |
100101
| NetApp | [convergedinfra/Pods][13] | cisco:intersight:convergedinfraPods |
101102
| Network | [network/ElementSummaries][6] | cisco:intersight:networkElementSummaries |
@@ -128,6 +129,7 @@ These inventory options are enabled via the multi-select in the input configurat
128129
[22]: https://intersight.com/apidocs/apirefs/api/v1/license/AccountLicenseData/model/
129130
[23]: https://intersight.com/apidocs/apirefs/api/v1/license/LicenseInfos/model/
130131
[24]: https://intersight.com/apidocs/apirefs/api/v1/hyperflex/Licenses/model/
132+
[25]: https://intersight.com/apidocs/apirefs/api/v1/storage/NetAppStorageVms/model/
131133

132134

133135
All of the data from this Add-on can be queried in Splunk using the following [SPL](https://docs.splunk.com/Splexicon:SPL):
@@ -172,6 +174,7 @@ One for each sourcetype...
172174
| cisco: intersight:storageHitachiVolumes | `index=* sourcetype=cisco:intersight:storageHitachiVolumes \| dedup Moid \| eval SizeTB = round(Size/1024/1024/1024/1024, 2) \| table Name, RaidLevel, RaidType, SizeTB` |
173175
| cisco:intersight:storageNetAppClusters | `index=* sourcetype=cisco:intersight:storageNetAppClusters \| dedup Moid \| rename RegisteredDevice.ConnectionStatus as ConnectionStatus \| eval StorageUtilization.Total=round('StorageUtilization.Total'/1024/1024/1024/1024, 1) \| eval StorageUtilization.Used=round('StorageUtilization.Used'/1024/1024/1024/1024, 1) \| table source, Name, ConnectionStatus, Model, Version, ClusterHealthStatus, StorageUtilization.Used, StorageUtilization.Total, StorageUtilization.CapacityUtilization, ClusterEfficiency.Ratio` |
174176
| cisco:intersight:storageNetAppNodes | `index=* sourcetype=cisco:intersight:storageNetAppNodes \| dedup Moid \| table source, Name, Model, Version, AvgPerformanceMetrics.*` |
177+
| cisco:intersight:storageNetAppStorageVms | `sourcetype=cisco:intersight:storageNetAppStorageVms \| table Name, State, Subtype, *Enabled`
175178
| cisco:intersight:storageNetAppVolumes | `index=* sourcetype=cisco:intersight:storageNetAppVolumes \| dedup Moid \| table Array.Moid, Name, State, Type, StorageUtilization.CapacityUtilization, AvgPerformanceMetrics.Latency`
176179
| cisco:intersight:convergedinfraPods | `index=* sourcetype=cisco:intersight:convergedinfraPods \| dedup Moid \| eval CapacityTB=(round('Summary.StorageCapacity'/1024/1024/1024/1024, 1)) \| table source, Name, Type, CapacityTB, Summary.StorageUtilization` |
177180
| cisco:intersight:networkElementSummaries | `index=* sourcetype=cisco:intersight:networkElementSummaries \| dedup Moid \| rename AlarmSummary.Critical as Criticals \| rename AlarmSummary.Warning as Warnings \| table source, Name, Model, Serial, Version, ManagementMode, Criticals, Warnings` |
@@ -214,6 +217,12 @@ Here is an example where we get a basic inventory of our FlexPod...
214217
index=* sourcetype=cisco:intersight:convergedinfraPods Type=FlexPod | dedup Moid | eval CapacityTB=(round('Summary.StorageCapacity'/1024/1024/1024/1024, 1)) | rename ServiceItemInstance.Moid as flexpod | join Tags.cisco.meta.solution.flexpod [search index=* sourcetype=cisco:intersight:* | rex field=sourcetype mode=sed "s/cisco:intersight://" | `intersight_tags` | rename Tags.cisco.meta.solution.flexpod as flexpod | chart count by flexpod, sourcetype] | table Name, Type, Summary.StorageUtilization, computePhysicalSummaries, storage*, networkElementSummaries
215218
```
216219

220+
Here is an example where we bring together NetApp Cluster, StorageVM, and Volumes for an expanded view of NetApp Volumes.
221+
222+
```SPL
223+
index=* sourcetype=cisco:intersight:storageNetAppVolumes | dedup Moid | rename Array.Moid as array | rename Tenant.Moid as vm | rename Name as VolumeName | eval SizeTB=round('StorageUtilization.Total'/1024/1024/1024/1024, 2) | eval UsedTB=round('StorageUtilization.Used'/1024/1024/1024/1024, 2) | join array [search index=* sourcetype=cisco:intersight:storageNetAppClusters | dedup Moid | rename Moid as array | rename Name as ArrayName | rename Model as ArrayModel | table array, ArrayName, ArrayModel] | join vm [search index=* sourcetype=cisco:intersight:storageNetAppStorageVms | dedup Moid | rename Moid as vm | rename Name as VmName] | table source, ArrayName, ArrayModel, VmName, VolumeName, UsedTB, SizeTB, Type | sort source, ArrayName, VmName, VolumeName
224+
```
225+
217226
## Tags
218227

219228
Tags from Intersight are actually quite challenging in Splunk. The default Splunk [spath](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Spath) decode of the JSON from Intersight will naturally create two multivalue fields... a `Tags{}.Key` field will have all of the keys and a `Tags{}.Value` field will have all of the values. For example...

input_module_intersight.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -657,13 +657,38 @@ def write_splunk(index, source, sourcetype, data):
657657
f"{endpoint}?$top={results_per_page}&$skip={str(i)}")
658658
for data in RESPONSE.json()['Results']:
659659
data = pop(['Ancestors', 'DomainGroupMoid', 'DiskPool', 'ClassId', 'Events', 'Key',
660-
'Owners', 'Parent', 'ObjectType', 'PermissionResources', 'SharedScope', 'SnapshotPolicyUuid', 'Tenant', 'Uuid'], data)
661-
for x in ['Array', 'AvgPerformanceMetrics', 'StorageUtilization']:
660+
'Owners', 'Parent', 'ObjectType', 'PermissionResources', 'SharedScope', 'SnapshotPolicyUuid', 'Uuid'], data)
661+
for x in ['AvgPerformanceMetrics', 'StorageUtilization']:
662662
data[x] = pop(['ClassId', 'ObjectType'], data[x])
663-
data['Array'] = pop(['link'], data['Array'])
663+
for x in ['Array', 'Tenant']:
664+
data[x] = pop(['ClassId', 'ObjectType', 'link'], data[x])
664665
write_splunk(index, account_name,
665666
'cisco:intersight:storageNetAppVolumes', data)
666667

668+
# NetApp Storage VMs
669+
endpoint = "storage/NetAppStorageVms"
670+
if 'netapp' in opt_inventory and doInventory:
671+
helper.log_debug(f"{s} | Retrieving NetApp Storage VM Inventory Records")
672+
doNetAppStorageVms = check_intersight(endpoint)
673+
674+
if 'netapp' in opt_inventory and doInventory and doNetAppStorageVms:
675+
RESPONSE = r_intersight(f"{endpoint}?$count=True")
676+
count = RESPONSE.json()['Count']
677+
helper.log_info(
678+
f"{s} | Found {str(count)} NetApp storage vm records to retrieve")
679+
results_per_page = 10 # adjust the number of results we pull per API call
680+
for i in range(0, count, results_per_page):
681+
RESPONSE = r_intersight(
682+
f"{endpoint}?$top={results_per_page}&$skip={str(i)}")
683+
for data in RESPONSE.json()['Results']:
684+
data = pop(['Ancestors', 'DomainGroupMoid', 'ClassId', 'Events', 'Key', 'DiskPool',
685+
'Owners', 'Parent', 'ObjectType', 'PermissionResources', 'SharedScope', 'Uuid'], data)
686+
for x in ['Array', 'AvgPerformanceMetrics']:
687+
data[x] = pop(['ClassId', 'ObjectType'], data[x])
688+
data['Array'] = pop(['link'], data['Array'])
689+
write_splunk(index, account_name,
690+
'cisco:intersight:storageNetAppStorageVms', data)
691+
667692
# Converged Infra Pods
668693
endpoint = "convergedinfra/Pods"
669694
if 'netapp' in opt_inventory and doInventory:

splunkbase/details.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ The Add-on leverages the [Cisco Intersight RESTful API](https://intersight.com/a
44

55
>New Inventory types are not automatically added to existing configurations. Please review your input configurations after upgrading to enable the new options.
66
7-
| Options | Intersight API | Splunk sourcetype |
7+
| Option | Intersight API | Splunk sourcetype |
88
| --- | --- | --- |
9-
| Enable AAA Audit Records | [aaa/AuditRecords][1] | cisco:intersight:aaaAuditRecords |
10-
| Enable Alarms | [cond/Alarms][2] | cisco:intersight:condAlarms |
9+
| AAA Audit Records | [aaa/AuditRecords][1] | cisco:intersight:aaaAuditRecords |
10+
| Alarms | [cond/Alarms][2] | cisco:intersight:condAlarms |
1111
| Advisories | [tam/AdvisoryInstances][3] | cisco:intersight:tamAdvisoryInstances |
1212
| Compute | [compute/PhysicalSummaries][4] | cisco:intersight:computePhysicalSummaries |
1313
| Compute | [cond/HclStatuses][9] | cisco:intersight:condHclStatuses |
@@ -23,6 +23,7 @@ The Add-on leverages the [Cisco Intersight RESTful API](https://intersight.com/a
2323
| Licensing | [license/LicenseInfos][23] | cisco:intersight:licenseLicenseInfos
2424
| NetApp | [storage/NetAppClusters][11] | cisco:intersight:storageNetAppClusters |
2525
| NetApp | [storage/NetAppNodes][12] | cisco:intersight:storageNetAppNodes |
26+
| NetApp | [storage/NetAppStorageVms][25] | cisco:intersight:storageNetAppStorageVms |
2627
| NetApp | [storage/NetAppVolumes][17] | cisco:intersight:storageNetAppVolumes |
2728
| NetApp | [convergedinfra/Pods][13] | cisco:intersight:convergedinfraPods |
2829
| Network | [network/ElementSummaries][6] | cisco:intersight:networkElementSummaries |
@@ -55,6 +56,7 @@ The Add-on leverages the [Cisco Intersight RESTful API](https://intersight.com/a
5556
[22]: https://intersight.com/apidocs/apirefs/api/v1/license/AccountLicenseData/model/
5657
[23]: https://intersight.com/apidocs/apirefs/api/v1/license/LicenseInfos/model/
5758
[24]: https://intersight.com/apidocs/apirefs/api/v1/hyperflex/Licenses/model/
59+
[25]: https://intersight.com/apidocs/apirefs/api/v1/storage/NetAppStorageVms/model/
5860

5961
Further documentation, sample searches, and known issues are all available at [the Github repository](https://github.com/jerewill-cisco/intersight-splunk-addon).
6062

0 commit comments

Comments
 (0)