2020-12-16 17:25:24 +08:00

60 lines
2.4 KiB
Python

# coding: UTF-8
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
# http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ----------------------------------------------------------------------------
import os
from gspylib.inspection.common import SharedFuncs
from gspylib.inspection.common.CheckItem import BaseItem
from gspylib.inspection.common.CheckResult import ResultStatus
class CheckKeyProAdj(BaseItem):
def __init__(self):
super(CheckKeyProAdj, self).__init__(self.__class__.__name__)
def doCheck(self):
procadj = {}
result = ""
prolist = ['om_monitor', 'cm_agent', 'gaussdb', 'cm_server', 'gtm',
'etcd']
gausshome = self.cluster.appPath
gaussdbpath = os.path.join(gausshome, "bin/gaussdb")
for process in prolist:
if (process == 'gaussdb'):
getpidcmd = "ps ux| grep '%s'|grep -v 'grep'|awk '{print " \
"$2}'" \
% gaussdbpath
else:
getpidcmd = "ps ux| grep '%s'|grep -v 'grep'|awk '{print " \
"$2}'" \
% process
pids = SharedFuncs.runShellCmd(getpidcmd)
for pid in pids.splitlines():
getAdjcmd = "cat /proc/%s/oom_adj" % pid
adjValue = SharedFuncs.runShellCmd(getAdjcmd)
if (int(adjValue) < 0):
tmpkey = "%s_%s" % (process, pid)
procadj[tmpkey] = adjValue
if (procadj):
self.result.rst = ResultStatus.NG
for key, value in procadj.items():
result += "%s : %s \n" % (key, value)
self.result.val = "There are processes omm_adj value " \
"less than 0 \n%s" % (result)
else:
self.result.rst = ResultStatus.OK
self.result.val = "All key processes omm_adj value" \
" are not less than 0"