本文目录导读:

我来为您提供几种常见的主机状态监控脚本,涵盖不同的监控需求:
基础系统资源监控脚本
#!/bin/bash
# 系统资源监控脚本
# 监控CPU、内存、磁盘、网络等基本信息
echo "========== 主机状态监控报告 =========="
echo "监控时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "主机名: $(hostname)"
echo "----------------------------------------"
# CPU使用率
echo "CPU使用率:"
top -bn1 | grep "Cpu(s)" | awk '{print " 用户态: "$2"% 系统态: "$4"% 空闲: "$8"%"}'
# 内存使用情况
echo -e "\n内存使用情况:"
free -h | grep -E "^Mem|^内存" | awk '{print " 总计: "$2" 已用: "$3" 可用: "$4" 使用率: "$3/$2}'
# 磁盘使用情况
echo -e "\n磁盘使用情况:"
df -h | grep -E "^/dev/" | awk '{print " "$1": 总计"$2" 已用"$3" 可用"$4" 使用率"$5}'
# 网络连接状态
echo -e "\n网络连接状态:"
echo " 活动连接数: $(ss -t | wc -l)"
echo " IP地址: $(ip addr show | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}')"
# 系统负载
echo -e "\n系统负载:"
uptime | awk -F'load average:' '{print " "$2}'
# 进程数
echo -e "\n运行进程数:"
ps aux | wc -l
高级监控脚本(带报警功能)
#!/bin/bash
# 高级主机监控脚本
# 支持阈值告警,可配置监控项
# 配置阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=90
UPTIME_THRESHOLD=30 # 天
# 日志文件
LOG_FILE="/var/log/host_monitor.log"
# 告警函数
alert() {
local level=$1
local message=$2
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message" >> $LOG_FILE
# 可选:发送邮件或消息通知
# mail -s "主机告警" admin@example.com <<< "$message"
}
# CPU监控
check_cpu() {
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'.' -f1)
if [ "$CPU_USAGE" -gt "$CPU_THRESHOLD" ]; then
alert "WARNING" "CPU使用率过高: ${CPU_USAGE}% (阈值: ${CPU_THRESHOLD}%)"
return 1
fi
return 0
}
# 内存监控
check_memory() {
MEM_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM_USAGE" -gt "$MEM_THRESHOLD" ]; then
alert "WARNING" "内存使用率过高: ${MEM_USAGE}% (阈值: ${MEM_THRESHOLD}%)"
return 1
fi
return 0
}
# 磁盘监控
check_disk() {
df -h | grep -E "^/dev/" | while read line; do
DISK_USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
DISK_NAME=$(echo $line | awk '{print $1}')
if [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ]; then
alert "WARNING" "磁盘 ${DISK_NAME} 使用率过高: ${DISK_USAGE}% (阈值: ${DISK_THRESHOLD}%)"
fi
done
}
# 系统运行时间监控
check_uptime() {
UPTIME_DAYS=$(uptime | awk '{print $3}' | cut -d',' -f1)
if [ "$UPTIME_DAYS" -gt "$UPTIME_THRESHOLD" ]; then
alert "INFO" "系统已运行 ${UPTIME_DAYS} 天,建议重启"
fi
}
# 主函数
main() {
echo "开始监控主机状态..."
check_cpu
check_memory
check_disk
check_uptime
echo "监控完成,详细信息在 $LOG_FILE"
}
main
实时监控脚本(带图表输出)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import psutil
import time
import sys
from datetime import datetime
class HostMonitor:
def __init__(self):
self.cpu_history = []
self.mem_history = []
def get_cpu_usage(self):
return psutil.cpu_percent(interval=1)
def get_memory_usage(self):
mem = psutil.virtual_memory()
return mem.percent
def get_disk_usage(self):
"""返回磁盘使用率超过80%的分区"""
alerts = []
for partition in psutil.disk_partitions():
try:
usage = psutil.disk_usage(partition.mountpoint)
if usage.percent > 80:
alerts.append(f"{partition.device}: {usage.percent}%")
except:
continue
return alerts
def get_network_stats(self):
net = psutil.net_io_counters()
return {
'bytes_sent': net.bytes_sent,
'bytes_recv': net.bytes_recv,
'packets_sent': net.packets_sent,
'packets_recv': net.packets_recv
}
def get_process_count(self):
return len(psutil.pids())
def display_status(self):
cpu = self.get_cpu_usage()
mem = self.get_memory_usage()
disk_alerts = self.get_disk_usage()
processes = self.get_process_count()
# 清屏
print("\033[2J\033[H")
print(f"=== 主机监控面板 - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} ===")
# CPU使用率显示
cpu_bar = '█' * int(cpu/10) + '░' * (10 - int(cpu/10))
print(f"\nCPU使用率: [{cpu_bar}] {cpu:.1f}%")
# 内存使用率显示
mem_bar = '█' * int(mem/10) + '░' * (10 - int(mem/10))
print(f"内存使用率: [{mem_bar}] {mem:.1f}%")
# 磁盘告警
if disk_alerts:
print("\n磁盘告警:")
for alert in disk_alerts:
print(f" ⚠ {alert}")
# 进程数
print(f"\n运行进程数: {processes}")
# 网络统计
net = self.get_network_stats()
print(f"网络流量: 发送 {self.format_bytes(net['bytes_sent'])} | 接收 {self.format_bytes(net['bytes_recv'])}")
def format_bytes(self, bytes):
for unit in ['B', 'KB', 'MB', 'GB']:
if bytes < 1024:
return f"{bytes:.2f}{unit}"
bytes /= 1024
return f"{bytes:.2f}TB"
def main():
# pip install psutil
monitor = HostMonitor()
try:
while True:
monitor.display_status()
time.sleep(2)
except KeyboardInterrupt:
print("\n监控已停止")
if __name__ == "__main__":
main()
使用方式
安装依赖
# Python版本需要安装psutil pip install psutil # 或使用pip3 pip3 install psutil
设置定时任务
# 每分钟运行一次监控 */1 * * * * /path/to/monitor.sh # 每5分钟运行一次 */5 * * * * /path/to/monitor.sh
赋予执行权限
chmod +x monitor.sh chmod +x monitor.py
监控指标说明
| 监控项 | 说明 | 告警阈值建议 |
|---|---|---|
| CPU使用率 | 当前CPU占用百分比 | >80% |
| 内存使用率 | 物理内存使用率 | >80% |
| 磁盘使用率 | 各分区使用情况 | >90% |
| 网络连接 | 活动连接数 | 根据业务确定 |
| 系统负载 | 过去1/5/15分钟负载 | 小于CPU核数 |
| 运行时间 | 系统已运行天数 | >30天 |
这些脚本可以根据您的具体需求进行修改和扩展,建议先在实际环境中测试,确认无误后再部署到生产环境。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播