diff --git a/add-log_utils-for-python.patch b/add-log_utils-for-python.patch new file mode 100644 index 0000000000000000000000000000000000000000..5b0b23cd0b6a826232dc2078c55ee123870818fe --- /dev/null +++ b/add-log_utils-for-python.patch @@ -0,0 +1,250 @@ +From 1d0d060856cb95cbf5ba7bc679855f89c20e7fb6 Mon Sep 17 00:00:00 2001 +From: shixuantong +Date: Fri, 27 Dec 2024 14:44:34 +0800 +Subject: [PATCH] add log_utils for python + +--- + src/python/syssentry/cpu_sentry.py | 16 +++--- + src/python/syssentry/log_utils.py | 81 +++++++++++++++++++++++++++ + src/python/syssentry/sentry_config.py | 28 --------- + src/python/syssentry/syssentry.py | 10 +--- + src/python/xalarm/xalarm_daemon.py | 7 +-- + 5 files changed, 94 insertions(+), 48 deletions(-) + create mode 100644 src/python/syssentry/log_utils.py + +diff --git a/src/python/syssentry/cpu_sentry.py b/src/python/syssentry/cpu_sentry.py +index 0c66fd2..99df8c3 100644 +--- a/src/python/syssentry/cpu_sentry.py ++++ b/src/python/syssentry/cpu_sentry.py +@@ -19,10 +19,10 @@ import os + + from syssentry.utils import run_cmd, run_popen, get_process_pid + from syssentry.result import ResultLevel, report_result +-from syssentry.sentry_config import CpuPluginsParamsConfig, get_log_level ++from syssentry.sentry_config import CpuPluginsParamsConfig ++from syssentry.log_utils import SyssentryType, init_logging_basic_config + + CPU_SENTRY_PARAM_CONFIG = "/etc/sysSentry/plugins/cpu_sentry.ini" +-CPU_SENTRY_LOG_FILE = "/var/log/sysSentry/cpu_sentry.log" + + # Inspection commands running at the bottom layer + LOW_LEVEL_INSPECT_CMD = "cat-cli" +@@ -102,6 +102,7 @@ class CpuSentry: + found_fault_cores_list = [] + error_msg_list = [] + for out_line_i in out_split: ++ logging.debug(out_line_i) + if "handle_patrol_result: Found fault cores" in out_line_i: + cores_number_tmp = out_line_i.split("Found fault cores:")[1] + cores_number_tmp = cores_number_tmp[1:-1] +@@ -168,12 +169,12 @@ def kill_process(signum, _f, cpu_sentry_obj): + + def main(): + """main function""" +- log_level = get_log_level(filename=CPU_SENTRY_PARAM_CONFIG) +- log_format = "%(asctime)s - %(levelname)7s - [%(filename)s:%(lineno)d] - %(message)s" +- logging.basicConfig(filename=CPU_SENTRY_LOG_FILE, level=log_level, format=log_format) +- os.chmod(CPU_SENTRY_LOG_FILE, 0o600) +- + cpu_sentry_task = CpuSentry() ++ ++ # set log level and format ++ init_logging_basic_config(cpu_sentry_task.TASK_NAME, SyssentryType.PLUGINS) ++ ++ # parse config for cat-cli + cpu_params_config_parser = CpuPluginsParamsConfig(CPU_SENTRY_PARAM_CONFIG, "args") + + signal.signal(signal.SIGINT, functools.partial(kill_process, cpu_sentry_obj=cpu_sentry_task)) +@@ -201,7 +202,6 @@ def main(): + + cpu_task_process_pipe = run_popen(cpu_sentry_task_cmd) + stdout, _ = cpu_task_process_pipe.communicate() +- logging.debug("task output is as follows: \n %s", stdout) + cpu_sentry_task.handle_cpu_output(stdout) + except (FileNotFoundError, IndexError, ValueError): + cpu_sentry_task.send_result["result"] = ResultLevel.FAIL +diff --git a/src/python/syssentry/log_utils.py b/src/python/syssentry/log_utils.py +new file mode 100644 +index 0000000..ee89294 +--- /dev/null ++++ b/src/python/syssentry/log_utils.py +@@ -0,0 +1,81 @@ ++# coding: utf-8 ++# Copyright (c) 2024 Huawei Technologies Co., Ltd. ++# sysSentry is licensed under the 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. ++ ++""" ++log utils ++""" ++import configparser ++import logging ++import os ++import sys ++ ++from enum import Enum ++ ++LOG_DIR = "/var/log/sysSentry/" ++SERVICE_CONF_DIR = "/etc/sysSentry/" ++PLUGINS_CONF_DIR = "/etc/sysSentry/plugins/" ++ ++CONF_LOG = 'log' ++CONF_LOG_LEVEL = 'level' ++LogLevel = { ++ "debug": logging.DEBUG, ++ "info": logging.INFO, ++ "warning": logging.WARNING, ++ "error": logging.ERROR, ++ "critical": logging.CRITICAL, ++} ++ ++class SyssentryType(Enum): ++ """syssentry type for log""" ++ SERVICE = 0 ++ PLUGINS = 1 ++ ++def get_log_level(config_file): ++ if not os.path.exists(config_file): ++ return logging.INFO ++ ++ try: ++ config = configparser.ConfigParser() ++ config.read(config_file) ++ if not config.has_option(CONF_LOG, CONF_LOG_LEVEL): ++ return logging.INFO ++ log_level = config.get(CONF_LOG, CONF_LOG_LEVEL) ++ ++ if log_level.lower() in LogLevel: ++ return LogLevel.get(log_level.lower()) ++ logging.warning("unknown log level in %s, use default level: logging.INFO", config_file) ++ return logging.INFO ++ except configparser.Error: ++ return logging.INFO ++ ++def init_logging_basic_config(caller_name: str, caller_type: SyssentryType): ++ if not isinstance(caller_name, str) or not isinstance(caller_type, SyssentryType): ++ logging.error("params type is wrong at init_logging_basic_config!") ++ sys.exit(-1) ++ ++ log_file = "" ++ config_file = "" ++ if caller_type == SyssentryType.PLUGINS: ++ log_file = None ++ config_file = PLUGINS_CONF_DIR + caller_name + ".ini" ++ else: ++ log_file = LOG_DIR + caller_name + ".log" ++ if caller_name == "sysSentry": ++ config_file = SERVICE_CONF_DIR + "inspect.conf" ++ else: ++ config_file =SERVICE_CONF_DIR + caller_name + ".conf" ++ ++ log_level = get_log_level(config_file) ++ log_format = ("%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s") ++ logging.basicConfig(filename=log_file, level=log_level, format=log_format) ++ ++ if log_file is not None: ++ os.chmod(log_file, 0o600) +diff --git a/src/python/syssentry/sentry_config.py b/src/python/syssentry/sentry_config.py +index 1169887..a0e7b79 100644 +--- a/src/python/syssentry/sentry_config.py ++++ b/src/python/syssentry/sentry_config.py +@@ -21,34 +21,6 @@ import sys + DEFAULT_INSPECT_DELAY = 3 + INSPECT_CONF_PATH = "/etc/sysSentry/inspect.conf" + +-CONF_LOG = 'log' +-CONF_LOG_LEVEL = 'level' +-LogLevel = { +- "debug": logging.DEBUG, +- "info": logging.INFO, +- "warning": logging.WARNING, +- "error": logging.ERROR, +- "critical": logging.CRITICAL +-} +- +- +-def get_log_level(filename=INSPECT_CONF_PATH): +- if not os.path.exists(filename): +- return logging.INFO +- +- try: +- config = configparser.ConfigParser() +- config.read(filename) +- if not config.has_option(CONF_LOG, CONF_LOG_LEVEL): +- return logging.INFO +- log_level = config.get(CONF_LOG, CONF_LOG_LEVEL) +- +- if log_level.lower() in LogLevel: +- return LogLevel.get(log_level.lower()) +- return logging.INFO +- except configparser.Error: +- return logging.INFO +- + + class SentryConfig: + """ +diff --git a/src/python/syssentry/syssentry.py b/src/python/syssentry/syssentry.py +index 0956e1e..884f887 100644 +--- a/src/python/syssentry/syssentry.py ++++ b/src/python/syssentry/syssentry.py +@@ -23,8 +23,8 @@ import fcntl + + import select + +-from .sentry_config import SentryConfig, get_log_level +- ++from .sentry_config import SentryConfig ++from .log_utils import SyssentryType, init_logging_basic_config + from .task_map import TasksMap + from .global_values import SENTRY_RUN_DIR, CTL_SOCKET_PATH, SENTRY_RUN_DIR_PERM + from .cron_process import period_tasks_handle +@@ -622,11 +622,7 @@ def main(): + os.mkdir(SENTRY_RUN_DIR) + os.chmod(SENTRY_RUN_DIR, mode=SENTRY_RUN_DIR_PERM) + +- log_level = get_log_level() +- log_format = "%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s" +- +- logging.basicConfig(filename=SYSSENTRY_LOG_FILE, level=log_level, format=log_format) +- os.chmod(SYSSENTRY_LOG_FILE, 0o600) ++ init_logging_basic_config("sysSentry", SyssentryType.SERVICE) + + if not chk_and_set_pidfile(): + logging.error("get pid file lock failed, exist") +diff --git a/src/python/xalarm/xalarm_daemon.py b/src/python/xalarm/xalarm_daemon.py +index 00e8886..6d15e75 100644 +--- a/src/python/xalarm/xalarm_daemon.py ++++ b/src/python/xalarm/xalarm_daemon.py +@@ -21,6 +21,7 @@ import signal + import fcntl + import socket + ++from syssentry.log_utils import SyssentryType, init_logging_basic_config + from .xalarm_config import config_init + from .xalarm_server import server_loop, SOCK_FILE + +@@ -120,14 +121,10 @@ def alarm_process_create(): + os.mkdir(ALARM_DIR) + os.chmod(ALARM_DIR, ALARM_DIR_PERMISSION) + +- +- logging.basicConfig(filename=ALARM_LOGFILE, level=logging.INFO, +- format='%(asctime)s|%(levelname)s| %(message)s') ++ init_logging_basic_config("xalarm", SyssentryType.SERVICE) + + signal.signal(signal.SIGTERM, signal_handler) + +- os.chmod(ALARM_LOGFILE, 0o600) +- + logging.info("xalarm daemon init") + + daemon_main() +-- +2.27.0 + diff --git a/set-log-format-for-cpu_sentry.patch b/set-log-format-for-cpu_sentry.patch new file mode 100644 index 0000000000000000000000000000000000000000..ddbde71a467fb6eff43d2b402801296cf1b3852b --- /dev/null +++ b/set-log-format-for-cpu_sentry.patch @@ -0,0 +1,52 @@ +From 5c84ef9e42f9fff505b7e28f18f0e9e4c1cb6dad Mon Sep 17 00:00:00 2001 +From: shixuantong +Date: Fri, 27 Dec 2024 14:35:41 +0800 +Subject: [PATCH 1/2] set log format for cpu_sentry + +--- + config/plugins/cpu_sentry.ini | 3 +++ + src/python/syssentry/cpu_sentry.py | 8 +++++++- + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/config/plugins/cpu_sentry.ini b/config/plugins/cpu_sentry.ini +index 52d6c04..9382563 100644 +--- a/config/plugins/cpu_sentry.ini ++++ b/config/plugins/cpu_sentry.ini +@@ -1,3 +1,6 @@ ++[log] ++level=info ++ + [args] + cpu_list = default + patrol_second = 60 +diff --git a/src/python/syssentry/cpu_sentry.py b/src/python/syssentry/cpu_sentry.py +index 2f18d14..0c66fd2 100644 +--- a/src/python/syssentry/cpu_sentry.py ++++ b/src/python/syssentry/cpu_sentry.py +@@ -19,9 +19,10 @@ import os + + from syssentry.utils import run_cmd, run_popen, get_process_pid + from syssentry.result import ResultLevel, report_result +-from syssentry.sentry_config import CpuPluginsParamsConfig ++from syssentry.sentry_config import CpuPluginsParamsConfig, get_log_level + + CPU_SENTRY_PARAM_CONFIG = "/etc/sysSentry/plugins/cpu_sentry.ini" ++CPU_SENTRY_LOG_FILE = "/var/log/sysSentry/cpu_sentry.log" + + # Inspection commands running at the bottom layer + LOW_LEVEL_INSPECT_CMD = "cat-cli" +@@ -167,6 +168,11 @@ def kill_process(signum, _f, cpu_sentry_obj): + + def main(): + """main function""" ++ log_level = get_log_level(filename=CPU_SENTRY_PARAM_CONFIG) ++ log_format = "%(asctime)s - %(levelname)7s - [%(filename)s:%(lineno)d] - %(message)s" ++ logging.basicConfig(filename=CPU_SENTRY_LOG_FILE, level=log_level, format=log_format) ++ os.chmod(CPU_SENTRY_LOG_FILE, 0o600) ++ + cpu_sentry_task = CpuSentry() + cpu_params_config_parser = CpuPluginsParamsConfig(CPU_SENTRY_PARAM_CONFIG, "args") + +-- +2.27.0 + diff --git a/sysSentry.spec b/sysSentry.spec index 516170247e7cce3b13354b866ab80923f7378fd2..d37de4e53389e770698f61806ca8ec59b373e1b1 100644 --- a/sysSentry.spec +++ b/sysSentry.spec @@ -4,7 +4,7 @@ Summary: System Inspection Framework Name: sysSentry Version: 1.0.2 -Release: 25 +Release: 26 License: Mulan PSL v2 Group: System Environment/Daemons Source0: https://gitee.com/openeuler/sysSentry/releases/download/v%{version}/%{name}-%{version}.tar.gz @@ -36,6 +36,8 @@ Patch23: fix-xalarm-not-reject-alarm-msg-exceeds-max-length.patch Patch24: change-status-of-period-task-and-sort-mod-file.patch Patch25: set-logrotate.patch Patch26: hbm_online_repair-add-unload-driver.patch +Patch27: set-log-format-for-cpu_sentry.patch +Patch28: add-log_utils-for-python.patch BuildRequires: cmake gcc-c++ BuildRequires: python3 python3-setuptools @@ -237,6 +239,13 @@ rm -rf %{buildroot} %attr(0550,root,root) %{python3_sitelib}/syssentry/bmc_alarm.py %changelog +* Fri Dec 27 2024 shixuantong - 1.0.2-26 +- Type:enhancement +- CVE:NA +- SUG:NA +- DESC:add log_utils for python + set log level and format for cpu_sentry + * Wed Dec 18 2024 luckky - 1.0.2-25 - Type:bugfix - CVE:NA