Skip to content

Commit

Permalink
Fix crash on vsphere module (#19078) (#19096)
Browse files Browse the repository at this point in the history
Host information is not always available, when it is not, some structures
are nil references. Avoid using them to retrieve additional information.

(cherry picked from commit 827f25a)
  • Loading branch information
jsoriano committed Jun 11, 2020
1 parent 5fa9630 commit 4a7bf61
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ field. You can revert this change by configuring tags for the module and omittin
- Fix getting gcp compute instance metadata with partial zone/region in config. {pull}18757[18757]
- Add missing network.sent_packets_count metric into compute metricset in googlecloud module. {pull}18802[18802]
- Fix compute and pubsub dashboard for googlecloud module. {issue}18962[18962] {pull}18980[18980]
- Fix crash on vsphere module when Host information is not available. {issue}18996[18996] {pull}19078[19078]

*Packetbeat*

Expand Down
16 changes: 8 additions & 8 deletions metricbeat/module/vsphere/virtualmachine/virtualmachine.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,20 +164,20 @@ func (m *MetricSet) Fetch(ctx context.Context, reporter mb.ReporterV2) error {
},
}

if vm.Summary.Runtime.Host != nil {
event["host.id"] = vm.Summary.Runtime.Host.Value
if host := vm.Summary.Runtime.Host; host != nil {
event["host.id"] = host.Value
hostSystem, err := getHostSystem(ctx, c, host.Reference())
if err == nil {
event["host.hostname"] = hostSystem.Summary.Config.Name
} else {
m.Logger().Debug(err.Error())
}
} else {
m.Logger().Debug("'Host', 'Runtime' or 'Summary' data not found. This is either a parsing error " +
"from vsphere library, an error trying to reach host/guest or incomplete information returned " +
"from host/guest")
}

hostSystem, err := getHostSystem(ctx, c, vm.Summary.Runtime.Host.Reference())
if err != nil {
m.Logger().Debug(err.Error())
} else {
event["host.hostname"] = hostSystem.Summary.Config.Name
}
// Get custom fields (attributes) values if get_custom_fields is true.
if m.GetCustomFields && vm.Summary.CustomValue != nil {
customFields := getCustomFields(vm.Summary.CustomValue, customFieldsMap)
Expand Down

0 comments on commit 4a7bf61

Please sign in to comment.