diff --git a/precise-alarm-query-time.patch b/precise-alarm-query-time.patch new file mode 100644 index 0000000000000000000000000000000000000000..f69a2d4c9ee3ea1d5fe679050580e4c49023f783 --- /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 d2ba6a219471ea84f8a14d547ad8eb630d5ad32a..5005ef7363cfd7ad18ff536629e8f56969e8c63d 100644 --- a/sysSentry.spec +++ b/sysSentry.spec @@ -4,7 +4,7 @@ Summary: System Inspection Framework Name: sysSentry Version: 1.0.2 -Release: 40 +Release: 41 License: Mulan PSL v2 Group: System Environment/Daemons Source0: https://gitee.com/openeuler/sysSentry/releases/download/v%{version}/%{name}-%{version}.tar.gz @@ -56,6 +56,7 @@ Patch43: fix-io_dump-for-collect-module.patch Patch44: add-root-cause-analysis.patch Patch45: update-collect-log.patch Patch46: modify-abnormal-stack-when-the-disk-field-is-not-con.patch +Patch47: precise-alarm-query-time.patch BuildRequires: cmake gcc-c++ BuildRequires: python3 python3-setuptools @@ -328,6 +329,12 @@ rm -rf %{buildroot} %attr(0550,root,root) %{python3_sitelib}/sentryCollector/__pycache__/collect_plugin* %changelog +* Mon Oct 14 2024 zhuofeng - 1.0.2-41 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:precise alarm query time.patch + * Sat Oct 12 2024 zhuofeng - 1.0.2-40 - Type:bugfix - CVE:NA