Devco1
Home
Console
Upload
New File
New Folder
Tools
Info
About
/
lib64
/
nagios
/
plugins
/
Filename :
check_apachewebserver
back
Copy
#!/usr/bin/python3 import requests import re import sys import argparse import subprocess from collections import defaultdict def service_is_active(service): try: result = subprocess.run( ["systemctl", "-q", "is-active", service], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL ) return result.returncode == 0 except Exception: return False if service_is_active("lshttpd"): print("[OK] LiteSpeed is active, Apache check skipped") sys.exit(0) if not service_is_active("httpd"): print("[OK] Apache is not active") sys.exit(0) parser = argparse.ArgumentParser() parser.add_argument('-c', type=int, default=200, help='Threshold value for CRITICAL high traffic domains') parser.add_argument('-w', type=int, default=50, help='Threshold value for WARNING moderate traffic domains') args = parser.parse_args() try: response = requests.get( 'http://127.0.0.1/whm-server-status', headers={'User-Agent': 'A2 User Agent OPS TEAM/4147 Gecko/20190813'}, timeout=10 ) response.raise_for_status() content = response.text except Exception as e: print("[UNKNOWN] Failed to fetch Apache status page: {}".format(e)) sys.exit(3) domain_counts = defaultdict(int) for match in re.finditer(r'<td nowrap>([^<:]+)(?::\d+)?</td><td nowrap>', content): vhost = match.group(1).strip() if vhost: domain_counts[vhost] += 1 high_traffic_domains = [(domain, count) for domain, count in domain_counts.items() if count > args.c] moderate_traffic_domains = [(domain, count) for domain, count in domain_counts.items() if count > args.w and count <= args.c] if high_traffic_domains: output = "[CRITICAL] " + ", ".join( ["{} ({} req/s)".format(domain, count) for domain, count in sorted(high_traffic_domains, key=lambda x: x[1], reverse=True)] ) print(output) sys.exit(2) elif moderate_traffic_domains: output = "[WARNING] " + ", ".join( ["{} ({} req/s)".format(domain, count) for domain, count in sorted(moderate_traffic_domains, key=lambda x: x[1], reverse=True)] ) print(output) sys.exit(1) else: print("[OK] No high traffic Apache domains found") sys.exit(0)