Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(xo-server-perf-alert): don't compute RAM usage when no tools #7886

Merged
merged 15 commits into from
Sep 5, 2024

Conversation

MelissaFrncJrg
Copy link
Contributor

@MelissaFrncJrg MelissaFrncJrg commented Jul 31, 2024

See #7831

Screenshot

Fixes first part of https://kanban.vates.fr/b/jnfjuip4eBARBNuv9/xo-releases/jHtPoS4TKqZB7QL7Z
Capture d’écran de 2024-08-08 10-07-09

Description

No memory usage is collected without the guest tools. That means that the selected VMs won't be monitored by the xo-server-perf-alert plugin

Checklist

  • Commit
    • Title follows commit conventions
    • Reference the relevant issue (Fixes #007, See xoa-support#42, See https://...)
    • If bug fix, add Introduced by
  • Changelog
    • If visible by XOA users, add changelog entry
    • Update "Packages to release" in CHANGELOG.unreleased.md
  • PR
    • If UI changes, add screenshots
    • If not finished or not tested, open as Draft

@MelissaFrncJrg MelissaFrncJrg marked this pull request as ready for review July 31, 2024 07:47
@MelissaFrncJrg MelissaFrncJrg requested a review from MathieuRA July 31, 2024 07:47
CHANGELOG.unreleased.md Outdated Show resolved Hide resolved
CHANGELOG.unreleased.md Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Show resolved Hide resolved
@MelissaFrncJrg MelissaFrncJrg force-pushed the perfAlert/noGuestToolsWarning branch from 5c782e7 to 983f456 Compare July 31, 2024 10:29
@MelissaFrncJrg MelissaFrncJrg requested a review from MathieuRA July 31, 2024 10:34
CHANGELOG.unreleased.md Outdated Show resolved Hide resolved
@MathieuRA MathieuRA requested a review from b-Nollet August 8, 2024 08:21
Copy link
Contributor

@b-Nollet b-Nollet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if you agree with me @MathieuRA but I feel like it would be more clear to use the return statement of a function instead of defining this maybeUpdateListItem function, which essentially does "return value if no value was returned before" (if I understood well). It would also prevent some code to execute when it is not useful.

It could be something like this : (I did not test it)

const getListItem = () => {

  if (result.value === undefined) {
    return "**Can't read performance counters**"
  }

  if (lcObjectType === 'vm' && definition.variableName === 'memoryUsage') {
    const checkManagementAgent = (vm, guestMetrics) => {
      if ((vm.power_state !== 'Running' && vm.power_state !== 'Paused') || guestMetrics === undefined) {
        return
      }

      const { major, minor } = guestMetrics.PV_drivers_version
      const hasPvVersion = major !== undefined && minor !== undefined
      return hasPvVersion || guestMetrics.other['feature-static-ip-setting'] === '1'
    }

    const vm = result.object
    const guestMetrics = this._xo.getXapi(uuid).getObject(vm.guest_metrics)

    const managementAgentDetected = checkManagementAgent(vm, guestMetrics)

    if (managementAgentDetected === undefined) {
      return "**Can't read performance counters**"
    }
    if (managementAgentDetected === false) {
      return '**Guest tools must be installed**'
    }
  }

  return result.value?.toFixed(1) + typeFunction.unit

}

result.listItem = `  * ${result.objectLink}: ${getListItem()}\n`

@MelissaFrncJrg
Copy link
Contributor Author

MelissaFrncJrg commented Aug 8, 2024

@b-Nollet actually maybeUpdateListItem manages the link with ${result.objectLink} so imo it's better to keep is as it is ?
I tested with

if (managementAgentDetected === undefined) {
                    listItem = `  * ${result.objectLink}: **Can't read performance counters**\n`
                  }

and it seems to work but isn't Mathieu's version more readable ?

@b-Nollet
Copy link
Contributor

b-Nollet commented Aug 8, 2024

@b-Nollet actually maybeUpdateListItem manages the link with ${result.objectLink} so imo it's better to keep is as it is ? I tested with

if (managementAgentDetected === undefined) {
                    listItem = `  * ${result.objectLink}: **Can't read performance counters**\n`
                  }

and it seems to work but isn't Mathieu's version more readable ?

I may be misunderstanding something, but as result.objectLink is not modified or created in this part of the code, I don't think we particularly need to use it before assigning the value of result.listItem

@MathieuRA
Copy link
Member

@b-Nollet Yes, I think it would be better.

@MelissaFrncJrg MelissaFrncJrg requested review from b-Nollet and pdonias and removed request for b-Nollet August 12, 2024 07:55
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
@MelissaFrncJrg MelissaFrncJrg requested a review from pdonias August 14, 2024 08:49
Copy link
Member

@pdonias pdonias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also link to the other PR so we can easily edit both sides if needed.

packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
packages/xo-server-perf-alert/src/index.js Outdated Show resolved Hide resolved
@julien-f julien-f self-requested a review August 29, 2024 09:38
@julien-f julien-f requested review from pdonias and removed request for julien-f September 5, 2024 07:09
@pdonias pdonias changed the title feat(xo-server): display warning when monitoring VM memory feat(xo-server-perf-alert): don't compute RAM usage when no tools Sep 5, 2024
@pdonias pdonias merged commit 69ffac6 into master Sep 5, 2024
1 check passed
@pdonias pdonias deleted the perfAlert/noGuestToolsWarning branch September 5, 2024 07:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants