From 039410b619953ba0b75d4bcd5fa933f611ed6478 Mon Sep 17 00:00:00 2001 From: jinsaihang Date: Wed, 16 Oct 2024 16:35:52 +0800 Subject: [PATCH] optimize log printing Signed-off-by: jinsaihang --- fix-word-error.patch | 53 ++++++++++++++ optimize-log-printing.patch | 125 +++++++++++++++++++++++++++++++++ precise-alarm-query-time.patch | 91 ++++++++++++++++++++++++ sysSentry.spec | 11 ++- 4 files changed, 279 insertions(+), 1 deletion(-) create mode 100644 fix-word-error.patch create mode 100644 optimize-log-printing.patch create mode 100644 precise-alarm-query-time.patch diff --git a/fix-word-error.patch b/fix-word-error.patch new file mode 100644 index 0000000..1e7de89 --- /dev/null +++ b/fix-word-error.patch @@ -0,0 +1,53 @@ +From 5be0d121c6fde185d323dc4bcf3026e2c3ee8757 Mon Sep 17 00:00:00 2001 +From: jinsaihang +Date: Mon, 14 Oct 2024 11:30:58 +0800 +Subject: [PATCH] fix word error + +Signed-off-by: jinsaihang +--- + sysSentry-1.0.2/src/python/syssentry/alarm.py | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/python/syssentry/alarm.py b/src/python/syssentry/alarm.py +index d012901..bff527c 100644 +--- a/src/python/syssentry/alarm.py ++++ b/src/python/syssentry/alarm.py +@@ -49,7 +49,7 @@ MAX_ALARM_ID = (MIN_ALARM_ID + MAX_NUM_OF_ALARM_ID - 1) + def update_alarm_list(alarm_info: Xalarm): + alarm_id = xalarm_getid(alarm_info) + if alarm_id < MIN_ALARM_ID or alarm_id > MAX_ALARM_ID: +- logging.warnning(f"Invalid alarm_id {alarm_id}") ++ logging.warning(f"Invalid alarm_id {alarm_id}") + return + timestamp = xalarm_gettime(alarm_info) + if not timestamp: +@@ -97,14 +97,14 @@ def alarm_register(): + task = TasksMap.tasks_dict[task_type][task_name] + alarm_id = task.alarm_id + if not check_alarm_id_if_number(alarm_id): +- logging.warnning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") ++ logging.warning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") + continue + if alarm_id < MIN_ALARM_ID or alarm_id > MAX_ALARM_ID: +- logging.warnning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") ++ logging.warning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") + continue + alarm_clear_time = task.alarm_clear_time + if not check_alarm_clear_time_if_positive_integer(alarm_clear_time): +- logging.warnning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") ++ logging.warning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") + continue + try: + alarm_clear_time = int(alarm_clear_time) +@@ -113,7 +113,7 @@ def alarm_register(): + if alarm_clear_time > sys.maxsize: + raise ValueError("Exceeds maximum value for int") + except (ValueError, OverflowError, TypeError) as e: +- logging.warnning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") ++ logging.warning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") + continue + alarm_list_dict[alarm_id] = [] + task_alarm_id_dict[task_name] = alarm_id +-- +2.27.0 + diff --git a/optimize-log-printing.patch b/optimize-log-printing.patch new file mode 100644 index 0000000..591ae9f --- /dev/null +++ b/optimize-log-printing.patch @@ -0,0 +1,125 @@ +From 91c37cec1639c79b2b5ddcd6b173b4d7aa0ce9db Mon Sep 17 00:00:00 2001 +From: jinsaihang +Date: Wed, 16 Oct 2024 14:51:24 +0800 +Subject: [PATCH] optimize log printing + +Signed-off-by: jinsaihang +--- + src/python/syssentry/alarm.py | 53 ++++++++++++++++--------------- + src/python/syssentry/load_mods.py | 15 +++++---- + 2 files changed, 35 insertions(+), 33 deletions(-) + +diff --git a/src/python/syssentry/alarm.py b/src/python/syssentry/alarm.py +index bff527c..c3f2ee1 100644 +--- a/src/python/syssentry/alarm.py ++++ b/src/python/syssentry/alarm.py +@@ -76,16 +76,26 @@ def update_alarm_list(alarm_info: Xalarm): + finally: + alarm_list_lock.release() + +-def check_alarm_id_if_number(alarm_id): +- if isinstance(alarm_id, int): +- return True +- else: ++def validate_alarm_id(alarm_id): ++ if alarm_id is None: ++ return False ++ try: ++ alarm_id = int(alarm_id) ++ if MIN_ALARM_ID <= alarm_id <= MAX_ALARM_ID: ++ return True ++ else: ++ return False ++ except ValueError: + return False + +-def check_alarm_clear_time_if_positive_integer(alarm_clear_time): +- if isinstance(alarm_clear_time, int) and alarm_clear_time > 0: +- return True +- else: ++def validate_alarm_clear_time(alarm_clear_time): ++ try: ++ alarm_clear_time = int(alarm_clear_time) ++ if alarm_clear_time > 0 and alarm_clear_time <= sys.maxsize: ++ return True ++ else: ++ return False ++ except ValueError: + return False + + def alarm_register(): +@@ -93,34 +103,25 @@ def alarm_register(): + # 初始化告警ID映射字典、告警老化时间字典 + for task_type in TasksMap.tasks_dict: + for task_name in TasksMap.tasks_dict[task_type]: +- logging.info(f"alarm_register: {task_name} is registered") + task = TasksMap.tasks_dict[task_type][task_name] +- alarm_id = task.alarm_id +- if not check_alarm_id_if_number(alarm_id): +- logging.warning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") ++ if not validate_alarm_id(task.alarm_id): ++ logging.warning(f"Invalid alarm_id {task.alarm_id}: ignore {task_name} alarm") + continue +- if alarm_id < MIN_ALARM_ID or alarm_id > MAX_ALARM_ID: +- logging.warning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") ++ if not validate_alarm_clear_time(task.alarm_clear_time): ++ logging.warning(f"Invalid alarm_clear_time {task.alarm_clear_time}: ignore {task_name} alarm") + continue ++ task.alarm_id = int(task.alarm_id) ++ task.alarm_clear_time = int(task.alarm_clear_time) ++ alarm_id = task.alarm_id + alarm_clear_time = task.alarm_clear_time +- if not check_alarm_clear_time_if_positive_integer(alarm_clear_time): +- logging.warning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") +- continue +- try: +- alarm_clear_time = int(alarm_clear_time) +- if alarm_clear_time <= 0: +- raise ValueError("Not a positive integer") +- if alarm_clear_time > sys.maxsize: +- raise ValueError("Exceeds maximum value for int") +- except (ValueError, OverflowError, TypeError) as e: +- logging.warning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") +- continue ++ + alarm_list_dict[alarm_id] = [] + task_alarm_id_dict[task_name] = alarm_id + if alarm_id not in alarm_id_clear_time_dict: + alarm_id_clear_time_dict[alarm_id] = alarm_clear_time + else: + alarm_id_clear_time_dict[alarm_id] = max(alarm_clear_time, alarm_id_clear_time_dict[alarm_id]) ++ logging.info(f"alarm_register: {task_name} is registered") + # 注册告警回调 + id_filter = [True] * 128 + clientId = xalarm_register(update_alarm_list, id_filter) +diff --git a/src/python/syssentry/load_mods.py b/src/python/syssentry/load_mods.py +index f74f165..78db446 100644 +--- a/src/python/syssentry/load_mods.py ++++ b/src/python/syssentry/load_mods.py +@@ -198,15 +198,16 @@ def parse_mod_conf(mod_name, mod_conf): + task.load_enabled = is_enabled + + try: +- task.alarm_id = int(mod_conf.get(CONF_TASK, CONF_ALARM_ID)) +- task.alarm_clear_time = int(mod_conf.get(CONF_TASK, CONF_ALARM_CLEAR_TIME)) +- if not (MIN_ALARM_ID <= task.alarm_id <= MAX_ALARM_ID): +- raise ValueError("Invalid alarm_id") +- except ValueError: + task.alarm_id = mod_conf.get(CONF_TASK, CONF_ALARM_ID) +- task.alarm_clear_time = mod_conf.get(CONF_TASK, CONF_ALARM_CLEAR_TIME) + except configparser.NoOptionError: +- logging.warning("Unset alarm_clear_time, use 15s as default") ++ task.alarm_id = None ++ logging.warning(f"{mod_name} alarm_id not set, alarm_id is None") ++ ++ if task.alarm_id is not None: ++ try: ++ task.alarm_clear_time = mod_conf.get(CONF_TASK, CONF_ALARM_CLEAR_TIME) ++ except configparser.NoOptionError: ++ logging.warning(f"{mod_name} not set alarm_clear_time, use 15s as default") + + if CONF_ONSTART in mod_conf.options(CONF_TASK): + is_onstart = (mod_conf.get(CONF_TASK, CONF_ONSTART) == 'yes') +-- +2.27.0 + diff --git a/precise-alarm-query-time.patch b/precise-alarm-query-time.patch new file mode 100644 index 0000000..f69a2d4 --- /dev/null +++ b/precise-alarm-query-time.patch @@ -0,0 +1,91 @@ +From 7fa9e80531bb3d4fa587e5fb7a99e3af59feda7e Mon Sep 17 00:00:00 2001 +From: jinsaihang +Date: Sat, 12 Oct 2024 16:51:37 +0800 +Subject: [PATCH] precise alarm query time + +Signed-off-by: jinsaihang +--- + sysSentry-1.0.2/src/python/syssentry/alarm.py | 25 +++++++++++++++++-- + .../src/python/syssentry/load_mods.py | 3 ++- + 2 files changed, 25 insertions(+), 3 deletions(-) + +diff --git a/src/python/syssentry/alarm.py b/src/python/syssentry/alarm.py +index 43c1065..d012901 100644 +--- a/src/python/syssentry/alarm.py ++++ b/src/python/syssentry/alarm.py +@@ -76,6 +76,18 @@ def update_alarm_list(alarm_info: Xalarm): + finally: + alarm_list_lock.release() + ++def check_alarm_id_if_number(alarm_id): ++ if isinstance(alarm_id, int): ++ return True ++ else: ++ return False ++ ++def check_alarm_clear_time_if_positive_integer(alarm_clear_time): ++ if isinstance(alarm_clear_time, int) and alarm_clear_time > 0: ++ return True ++ else: ++ return False ++ + def alarm_register(): + logging.debug(f"alarm_register: enter") + # 初始化告警ID映射字典、告警老化时间字典 +@@ -84,10 +96,16 @@ def alarm_register(): + logging.info(f"alarm_register: {task_name} is registered") + task = TasksMap.tasks_dict[task_type][task_name] + alarm_id = task.alarm_id ++ if not check_alarm_id_if_number(alarm_id): ++ logging.warnning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") ++ continue + if alarm_id < MIN_ALARM_ID or alarm_id > MAX_ALARM_ID: + logging.warnning(f"Invalid alarm_id {alarm_id}: ignore {task_name} alarm") + continue + alarm_clear_time = task.alarm_clear_time ++ if not check_alarm_clear_time_if_positive_integer(alarm_clear_time): ++ logging.warnning(f"Invalid alarm_clear_time {alarm_clear_time}: ignore {task_name} alarm") ++ continue + try: + alarm_clear_time = int(alarm_clear_time) + if alarm_clear_time <= 0: +@@ -119,6 +137,9 @@ def get_alarm_result(task_name: str, time_range: int, detailed: bool) -> List[Di + logging.debug("task_name does not exist") + return [] + alarm_id = task_alarm_id_dict[task_name] ++ clear_time = alarm_id_clear_time_dict[alarm_id] ++ if clear_time < int(time_range): ++ return [] + if alarm_id not in alarm_list_dict: + logging.debug("alarm_id does not exist") + return [] +@@ -126,10 +147,10 @@ def get_alarm_result(task_name: str, time_range: int, detailed: bool) -> List[Di + logging.debug(f"get_alarm_result: alarm_list of {alarm_id} has {len(alarm_list)} elements") + # clear alarm_info older than clear time threshold + stop_index = -1 +- timestamp = int(datetime.now().timestamp()) ++ timestamp = datetime.now().timestamp() + for i in range(len(alarm_list)): + logging.debug(f"timestamp, alarm_list[{i}].timestamp: {timestamp}, {xalarm_gettime(alarm_list[i])}") +- if timestamp - (xalarm_gettime(alarm_list[i])) / MILLISECONDS_UNIT_SECONDS > int(time_range): ++ if timestamp - (xalarm_gettime(alarm_list[i])) / MILLISECONDS_UNIT_SECONDS > time_range: + stop_index = i + break + if stop_index >= 0: +diff --git a/src/python/syssentry/load_mods.py b/src/python/syssentry/load_mods.py +index 7daf17d..f74f165 100644 +--- a/src/python/syssentry/load_mods.py ++++ b/src/python/syssentry/load_mods.py +@@ -203,7 +203,8 @@ def parse_mod_conf(mod_name, mod_conf): + if not (MIN_ALARM_ID <= task.alarm_id <= MAX_ALARM_ID): + raise ValueError("Invalid alarm_id") + except ValueError: +- logging.warning("Invalid alarm_id") ++ task.alarm_id = mod_conf.get(CONF_TASK, CONF_ALARM_ID) ++ task.alarm_clear_time = mod_conf.get(CONF_TASK, CONF_ALARM_CLEAR_TIME) + except configparser.NoOptionError: + logging.warning("Unset alarm_clear_time, use 15s as default") + +-- +2.27.0 + diff --git a/sysSentry.spec b/sysSentry.spec index 3be6aa9..3321d12 100644 --- a/sysSentry.spec +++ b/sysSentry.spec @@ -4,7 +4,7 @@ Summary: System Inspection Framework Name: sysSentry Version: 1.0.2 -Release: 41 +Release: 42 License: Mulan PSL v2 Group: System Environment/Daemons Source0: https://gitee.com/openeuler/sysSentry/releases/download/v%{version}/%{name}-%{version}.tar.gz @@ -60,6 +60,9 @@ Patch47: refactor-config.py-and-bugfix-uncorrect-slow-io-repo.patch Patch48: get_io_data-failed-wont-stop-avg_block_io-and-del-di.patch Patch49: fix-ai_block_io-root-cause-bug.patch Patch50: listen-thread-of-collect-module-exits-occasionally.patch +Patch51: precise-alarm-query-time.patch +Patch52: fix-word-error.patch +Patch53: optimize-log-printing.patch BuildRequires: cmake gcc-c++ BuildRequires: python3 python3-setuptools @@ -322,6 +325,12 @@ rm -rf %{buildroot} %attr(0550,root,root) %{python3_sitelib}/sentryCollector/__pycache__/collect_plugin* %changelog +* Wed Oct 16 2024 jinsaihang - 1.0.2-42 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:optimize log printing + * Wed Oct 16 2024 zhuofeng - 1.0.2-41 - Type:bugfix - CVE:NA -- Gitee