** Copyright (C) 2001-2025 Zabbix SIA
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
"golang.zabbix.com/agent2/pkg/win32"
"golang.zabbix.com/sdk/errs"
"golang.zabbix.com/sdk/plugin"
err := plugin.RegisterMetrics(&impl, "Swap",
"system.swap.size", "Returns Swap space size in bytes or in percentage from total.",
panic(errs.Wrap(err, "failed to register metrics"))
func getSwapSize() (uint64, uint64, error) {
m, err := win32.GlobalMemoryStatusEx()
if m.TotalPageFile > m.TotalPhys {
total = m.TotalPageFile - m.TotalPhys
if m.AvailPageFile > m.AvailPhys {
avail = m.AvailPageFile - m.AvailPhys
func getSwapStatsIn(string) (uint64, uint64, uint64, error) {
return 0, 0, 0, plugin.UnsupportedMetricError
func getSwapStatsOut(string) (uint64, uint64, uint64, error) {
return 0, 0, 0, plugin.UnsupportedMetricError