本文目录导读:

进程监控(基础版)
Windows (Batch/PowerShell)
@echo off
:check
tasklist | find /i "notepad.exe" >nul
if errorlevel 1 (
echo Notepad is not running! Starting...
start notepad.exe
) else (
echo Notepad is running normally
)
timeout /t 5 /nobreak
goto check
Linux (Shell)
#!/bin/bash
PROCESS_NAME="nginx"
while true; do
if pgrep -x "$PROCESS_NAME" > /dev/null; then
echo "$(date): $PROCESS_NAME is running"
else
echo "$(date): $PROCESS_NAME is not running! Restarting..."
systemctl start $PROCESS_NAME
fi
sleep 5
done
服务监控(进阶版)
Python 通用脚本
import psutil
import time
import subprocess
import logging
# 配置日志
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
def check_process_status(process_name):
"""检查进程是否存在"""
for proc in psutil.process_iter(['name', 'pid', 'status']):
if proc.info['name'] == process_name:
return True
return False
def monitor_process(process_name, restart_command):
"""监控进程并自动重启"""
while True:
if check_process_status(process_name):
logging.info(f"{process_name} is running normally")
else:
logging.warning(f"{process_name} is down! Attempting restart...")
try:
subprocess.run(restart_command, shell=True, check=True)
logging.info(f"{process_name} restarted successfully")
except Exception as e:
logging.error(f"Failed to restart {process_name}: {e}")
time.sleep(10)
# 使用示例
if __name__ == "__main__":
monitor_process("chrome.exe", "start chrome.exe")
HTTP服务监控
import requests
import time
import smtplib
from email.mime.text import MIMEText
def check_http_service(url, timeout=10):
"""检查HTTP服务是否正常"""
try:
response = requests.get(url, timeout=timeout)
if response.status_code == 200:
return True, f"Service is UP (Status: {response.status_code})"
else:
return False, f"Service is responding but status: {response.status_code}"
except requests.exceptions.RequestException as e:
return False, f"Service is DOWN: {str(e)}"
def send_alert(subject, body):
"""发送告警通知(示例使用邮件)"""
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
# 配置你的邮件服务器
# with smtplib.SMTP('smtp.gmail.com', 587) as server:
# server.login('user', 'password')
# server.send_message(msg)
if __name__ == "__main__":
while True:
status, message = check_http_service("https://your-service.com")
print(f"{time.ctime()}: {message}")
if not status:
send_alert("Service Alert", message)
time.sleep(30)
综合监控脚本(带日志和告警)
#!/usr/bin/env python3
import os
import sys
import time
import json
import logging
import subprocess
from datetime import datetime
from typing import Dict, Any
class ServiceMonitor:
def __init__(self, config_file='monitor_config.json'):
self.config = self.load_config(config_file)
self.setup_logging()
def load_config(self, config_file):
"""加载配置文件"""
default_config = {
"services": [
{
"name": "nginx",
"type": "process",
"check_command": "pgrep nginx",
"restart_command": "systemctl restart nginx",
"interval": 10
},
{
"name": "web-app",
"type": "http",
"url": "http://localhost:8080/health",
"expected_status": 200,
"interval": 30
}
],
"alert": {
"method": "log",
"email": "[email protected]"
}
}
if os.path.exists(config_file):
with open(config_file, 'r') as f:
return json.load(f)
return default_config
def setup_logging(self):
"""设置日志"""
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('monitor.log'),
logging.StreamHandler()
]
)
self.logger = logging.getLogger('ServiceMonitor')
def check_process(self, service: Dict[str, Any]) -> bool:
"""检查进程状态"""
try:
result = subprocess.run(
service['check_command'],
shell=True,
capture_output=True,
timeout=5
)
return result.returncode == 0
except Exception as e:
self.logger.error(f"Process check failed: {e}")
return False
def check_http(self, service: Dict[str, Any]) -> bool:
"""检查HTTP服务"""
import requests
try:
response = requests.get(
service['url'],
timeout=service.get('timeout', 10)
)
return response.status_code == service.get('expected_status', 200)
except Exception as e:
self.logger.error(f"HTTP check failed: {e}")
return False
def restart_service(self, service: Dict[str, Any]) -> bool:
"""重启服务"""
try:
result = subprocess.run(
service['restart_command'],
shell=True,
capture_output=True,
timeout=30
)
if result.returncode == 0:
self.logger.info(f"Service {service['name']} restarted successfully")
return True
else:
self.logger.error(f"Service restart failed: {result.stderr.decode()}")
return False
except Exception as e:
self.logger.error(f"Service restart error: {e}")
return False
def send_alert(self, service_name: str, status: str):
"""发送告警通知"""
alert_method = self.config['alert']['method']
message = f"Alert: Service {service_name} is {status}"
if alert_method == 'log':
self.logger.warning(message)
elif alert_method == 'email':
# 邮件发送代码
pass
elif alert_method == 'webhook':
# Webhook发送代码
pass
def monitor_service(self, service: Dict[str, Any]):
"""监控单个服务"""
if service['type'] == 'process':
status = self.check_process(service)
elif service['type'] == 'http':
status = self.check_http(service)
else:
self.logger.error(f"Unknown service type: {service['type']}")
return
if not status:
self.logger.warning(f"Service {service['name']} is DOWN")
self.send_alert(service['name'], "down")
# 自动重启
if 'restart_command' in service:
if self.restart_service(service):
self.send_alert(service['name'], "restarted")
else:
self.send_alert(service['name'], "restart_failed")
else:
self.logger.info(f"Service {service['name']} is UP")
def run(self):
"""运行主监控循环"""
self.logger.info("Service Monitor started")
while True:
for service in self.config['services']:
try:
self.monitor_service(service)
time.sleep(service.get('interval', 10))
except Exception as e:
self.logger.error(f"Monitor error for {service['name']}: {e}")
time.sleep(1)
if __name__ == "__main__":
monitor = ServiceMonitor()
monitor.run()
系统资源监控(扩展)
import psutil
import time
def monitor_system():
"""监控系统资源"""
while True:
# CPU使用率
cpu_percent = psutil.cpu_percent(interval=1)
# 内存使用率
memory = psutil.virtual_memory()
memory_percent = memory.percent
# 磁盘使用率
disk = psutil.disk_usage('/')
disk_percent = disk.percent
# 网络IO
net_io = psutil.net_io_counters()
print(f"CPU: {cpu_percent}% | Memory: {memory_percent}% | Disk: {disk_percent}%")
# 阈值告警
if cpu_percent > 90:
print("⚠️ CPU usage critical!")
if memory_percent > 90:
print("⚠️ Memory usage critical!")
if disk_percent > 90:
print("⚠️ Disk usage critical!")
time.sleep(5)
if __name__ == "__main__":
monitor_system()
使用建议
-
选择合适的监控方式:
- 简单应用:进程监控即可
- Web服务:HTTP监控更准确
- 关键服务:组合多种监控方式
-
配置合理的检查间隔:
- 重要服务:10-30秒
- 普通服务:1-5分钟
- 避免过于频繁导致资源浪费
-
设置完善的告警机制:
- 邮件、短信、钉钉/企业微信通知
- 分级告警(警告/严重/紧急)
- 设置告警抑制,避免重复通知
-
日志管理:
- 记录所有检查结果
- 设置日志轮转,避免占用过多磁盘
- 定期分析日志,发现潜在问题
这些脚本可以根据你的具体需求进行修改和扩展,需要我帮你针对特定场景进行优化吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播