From 9390d7e453d67b43df92936aac28080431423ba0 Mon Sep 17 00:00:00 2001 From: Michael Insel Date: Thu, 4 Oct 2018 10:55:21 +0200 Subject: [PATCH] Add 'used' feature to check_swap This implements the _used_ feature to check_swap to print the used swap instead of the default available swap. --- plugins/check_swap.cpp | 53 ++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/plugins/check_swap.cpp b/plugins/check_swap.cpp index 51f8bde22..4c3a1deb0 100644 --- a/plugins/check_swap.cpp +++ b/plugins/check_swap.cpp @@ -36,6 +36,7 @@ struct printInfoStruct double aSwap; double percentFree; Bunit unit = BunitMB; + bool showUsed; }; struct pageFileInfo @@ -73,6 +74,7 @@ static int parseArguments(int ac, WCHAR **av, po::variables_map& vm, printInfoSt ("warning,w", po::wvalue(), "Warning threshold") ("critical,c", po::wvalue(), "Critical threshold") ("unit,u", po::wvalue(), "The unit to use for display (default MB)") + ("show-used,U", "Show used swap instead of the free swap") ; po::wcommand_line_parser parser(ac, av); @@ -167,6 +169,12 @@ static int parseArguments(int ac, WCHAR **av, po::variables_map& vm, printInfoSt } } + if (vm.count("show-used")) { + printInfo.showUsed = true; + printInfo.warn.legal = true; + printInfo.crit.legal = true; + } + return -1; } @@ -177,30 +185,35 @@ static int printOutput(printInfoStruct& printInfo) state state = OK; - if (printInfo.warn.rend(printInfo.aSwap, printInfo.tSwap)) - state = WARNING; + std::wcout << L"SWAP "; - if (printInfo.crit.rend(printInfo.aSwap, printInfo.tSwap)) - state = CRITICAL; + double currentValue; + + if (!printInfo.showUsed) + currentValue = printInfo.aSwap; + else + currentValue = printInfo.tSwap - printInfo.aSwap; - switch (state) { - case OK: - std::wcout << L"SWAP OK - " << printInfo.percentFree << L"% free | 'swap'=" << printInfo.aSwap << BunitStr(printInfo.unit) << L";" - << printInfo.warn.pString(printInfo.tSwap) << L";" << printInfo.crit.pString(printInfo.tSwap) - << L";0;" << printInfo.tSwap << '\n'; - break; - case WARNING: - std::wcout << L"SWAP WARNING - " << printInfo.percentFree << L"% free | 'swap'=" << printInfo.aSwap << BunitStr(printInfo.unit) << L";" - << printInfo.warn.pString(printInfo.tSwap) << L";" << printInfo.crit.pString(printInfo.tSwap) - << L";0;" << printInfo.tSwap << '\n'; - break; - case CRITICAL: - std::wcout << L"SWAP CRITICAL - " << printInfo.percentFree << L"% free | 'swap'=" << printInfo.aSwap << BunitStr(printInfo.unit) << L";" - << printInfo.warn.pString(printInfo.tSwap) << L";" << printInfo.crit.pString(printInfo.tSwap) - << L";0;" << printInfo.tSwap << '\n'; - break; + if (printInfo.warn.rend(currentValue, printInfo.tSwap)) { + state = WARNING; + std::wcout << L"WARNING - "; + } else if (printInfo.crit.rend(currentValue, printInfo.tSwap)) { + state = CRITICAL; + std::wcout << L"CRITICAL - "; + } else { + state = OK; + std::wcout << L"OK - "; } + if (!printInfo.showUsed) + std::wcout << printInfo.percentFree << L"% free "; + else + std::wcout << 100 - printInfo.percentFree << L"% used "; + + std::wcout << "| 'swap'=" << currentValue << BunitStr(printInfo.unit) << L";" + << printInfo.warn.pString(printInfo.tSwap) << L";" << printInfo.crit.pString(printInfo.tSwap) + << L";0;" << printInfo.tSwap << '\n'; + return state; } -- 2.40.0