From 509603843be857e65d846530ae2b38c20efdea3e Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Mon, 26 Jan 2026 11:03:55 -0500 Subject: [PATCH] changed osd down events to be cluster wide and deduplcated --- __pycache__/hwmonDaemon.cpython-311.pyc | Bin 0 -> 161003 bytes hwmonDaemon.py | 24 +++++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 __pycache__/hwmonDaemon.cpython-311.pyc diff --git a/__pycache__/hwmonDaemon.cpython-311.pyc b/__pycache__/hwmonDaemon.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4f0ae9ddeef6d0907c7b90966f86475c8a1a618 GIT binary patch literal 161003 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%0DY%DIu))Ek3KH|z^&m!JOv6C9%8eyKW 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%0D^rmHxf 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 literal 0 HcmV?d00001 diff --git a/hwmonDaemon.py b/hwmonDaemon.py index 0263ad1..174f85a 100644 --- a/hwmonDaemon.py +++ b/hwmonDaemon.py @@ -119,6 +119,8 @@ class SystemHealthMonitor: 'CEPH_TICKET_NODE': None, # Hostname of node designated to create cluster-wide Ceph tickets 'CEPH_USAGE_WARNING': 70, # Ceph cluster usage warning threshold % 'CEPH_USAGE_CRITICAL': 85, # Ceph cluster usage critical threshold % + # Cluster identification for tickets + 'CLUSTER_NAME': 'proxmox-cluster', # Name used in cluster-wide ticket titles instead of hostname # Prometheus metrics settings 'PROMETHEUS_ENABLED': False, # Enable Prometheus metrics export 'PROMETHEUS_PORT': 9101, # Port for Prometheus metrics HTTP server @@ -176,6 +178,10 @@ class SystemHealthMonitor: elif key == 'PROMETHEUS_TEXTFILE_PATH': cls.CONFIG['PROMETHEUS_TEXTFILE_PATH'] = value if value else None logger.info(f"✓ Loaded PROMETHEUS_TEXTFILE_PATH: {value}") + # Cluster identification + elif key == 'CLUSTER_NAME': + cls.CONFIG['CLUSTER_NAME'] = value if value else 'proxmox-cluster' + logger.info(f"✓ Loaded CLUSTER_NAME: {value}") except Exception as e: logger.error(f"Failed to load .env file: {e}") @@ -1582,8 +1588,14 @@ class SystemHealthMonitor: # Build ticket title with proper categorization # Add space after issue_tag if drive_size is empty (for non-drive issues) issue_separator = drive_size if drive_size else " " + + # Use cluster name for cluster-wide issues instead of individual hostname + # This ensures all nodes generate the same ticket title for deduplication + cluster_name = self.CONFIG.get('CLUSTER_NAME', 'proxmox-cluster') + ticket_source = f"[{cluster_name}]" if is_cluster_wide else f"[{hostname}]" + ticket_title = ( - f"[{hostname}]" + f"{ticket_source}" f"{action_type['AUTO']}" f"{issue_tag}" f"{issue_separator}" @@ -2950,12 +2962,14 @@ class SystemHealthMonitor: # Simplified: just track all OSDs for now ceph_health['osd_status'].append(osd_info) - # Check for down OSDs + # Check for down OSDs - this is a cluster-wide issue + # All nodes see the same OSD down, so treat as cluster-wide if node.get('status') == 'down': ceph_health['status'] = 'CRITICAL' - # Node-specific issue (will include hostname in hash) - ceph_health['issues'].append( - f"Ceph OSD {node.get('name')} is DOWN on {hostname}" + # Cluster-wide issue - OSD down affects entire cluster + # Do NOT include detecting hostname in message to enable deduplication + ceph_health['cluster_wide_issues'].append( + f"Ceph OSD {node.get('name')} is DOWN" ) except json.JSONDecodeError as e: logger.warning(f"Failed to parse ceph osd tree JSON: {e}")