当前位置: 首页 > wzjs >正文

建自己的网站培训机构退费法律规定

建自己的网站,培训机构退费法律规定,php网站开发过程考试,建立传媒公司网站深入解析Python多服务器监控告警系统:从原理到生产部署 整体架构图 核心设计思想 无代理监控:通过SSH直接获取数据,无需在目标服务器安装代理故障隔离:单台服务器故障不影响整体监控多级检测:网络层→资源层→服务层层…

深入解析Python多服务器监控告警系统:从原理到生产部署

整体架构图

image-20250626180939436

核心设计思想

  1. 无代理监控:通过SSH直接获取数据,无需在目标服务器安装代理
  2. 故障隔离:单台服务器故障不影响整体监控
  3. 多级检测:网络层→资源层→服务层层层递进
  4. 幂等设计:支持定时重复执行,避免状态累积

代码深度解析

1. 配置模块 - 灵活的参数管理

# 服务器配置列表
SERVERS = [{"host": "192.168.0.224", "ssh_port": 22, "ssh_user": "root", "ssh_key": "/root/.ssh/server_monitor_key"},# 更多服务器...
]# 监控阈值设置
MEMORY_THRESHOLD = 90  # 内存阈值%
CPU_THRESHOLD = 85     # CPU阈值%
DISK_THRESHOLD = 95    # 磁盘阈值%# 检测参数
DINGTALK_WEBHOOK = "https://oapi.dingtalk.com/robot/send?access_token="
PING_TIMEOUT = 3       # 网络检测超时(秒)
CHECK_INTERVAL = 600   # 检查间隔(秒)
  • 支持多服务器配置,可扩展性强
  • 关键参数集中管理,便于维护
  • 支持不同服务器使用不同认证方式

2. 网络检测模块 - 基于TCP的连通性检查

def check_network(host):try:socket.setdefaulttimeout(PING_TIMEOUT)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((host, 22))  # 检测SSH端口s.close()return Trueexcept Exception:return False
  • 使用TCP连接检测替代ICMP ping,更贴近实际服务可用性
  • 检测SSH服务端口(22),确保监控功能可用
  • 设置超时时间防止阻塞

3. 指标采集模块 - SSH命令执行与解析

def get_server_metrics(server):# 创建SSH客户端ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())try:# 多密钥类型支持try:private_key = paramiko.RSAKey.from_private_key_file(server["ssh_key"])except:try:private_key = paramiko.Ed25519Key.from_private_key_file(server["ssh_key"])except:private_key = paramiko.ECDSAKey.from_private_key_file(server["ssh_key"])# 建立SSH连接ssh.connect(hostname=server["host"],port=server["ssh_port"],username=server["ssh_user"],pkey=private_key,timeout=15,look_for_keys=False,allow_agent=False)# 获取主机名stdin, stdout, stderr = ssh.exec_command("hostname")hostname = stdout.read().decode().strip() or server["host"]# CPU监控命令stdin, stdout, stderr = ssh.exec_command("top -bn1 | grep 'Cpu(s)' | awk -F'[ ,]+' '{print $8}' | tr -d '%' | awk '{print 100 - $1}'")cpu_usage = float(stdout.read().decode().strip())# 更多指标采集...finally:ssh.close()return hostname, alerts
  1. 多密钥算法支持:自动尝试RSA/Ed25519/ECDSA等算法
  2. 安全连接设置:禁用SSH agent和密钥搜索
  3. 主机名获取:优先使用服务器真实主机名
  4. 资源释放:finally块确保SSH连接关闭

4. 告警模块 - 钉钉机器人集成

def send_dingtalk_message(message):"""发送Markdown格式消息到钉钉机器人"""headers = {"Content-Type": "application/json"}# 创建Markdown格式消息markdown_content = "### 🚨 服务器监控告警\n" + message.replace("\n", "\n\n")data = {"msgtype": "markdown","markdown": {"title": "服务器监控告警","text": markdown_content}}try:response = requests.post(DINGTALK_WEBHOOK,data=json.dumps(data),headers=headers,timeout=10)if response.status_code == 200:print("钉钉消息发送成功")else:print(f"钉钉消息发送失败: {response.text}")except Exception as e:print(f"发送钉钉消息时出错: {str(e)}")
  • 添加时间戳便于问题追踪
  • 包含直接访问监控面板的链接
  • 使用emoji增强可读性
  • 支持Markdown格式(加粗、换行等)

监控指标采集技术详解

1. CPU使用率采集

top -bn1 | grep 'Cpu(s)' | awk -F'[ ,]+' '{print $8}' | tr -d '%' | awk '{print 100 - $1}'

命令解析

  1. top -bn1:非交互模式运行top命令
  2. grep 'Cpu(s)':过滤CPU行
  3. awk处理:提取空闲CPU百分比
  4. 100 - 空闲值:计算实际使用率

2. 内存使用率采集

free | awk 'NR==2{printf "%.2f", $3*100/$2 }'

计算原理

总内存 = $2
已用内存 = $3
使用率 = (已用内存 / 总内存) * 100

3. 磁盘使用率采集

df -h | awk '$NF=="/"{printf "%d", $5}'

关键参数

  • $NF=="/":只监控根分区
  • $5:使用率列(已去除%符号)
  • 可根据不同服务器挂载的分区自行调整

4. 进程监控

processes = ["kubelet", "dockerd", "kube-proxy"]
for process in processes:stdin, stdout, stderr = ssh.exec_command(f"pgrep -x {process}")if not stdout.read().decode().strip():missing_processes.append(process)

进程检测逻辑

  • 使用pgrep -x精确匹配进程名
  • 检查返回结果是否为空
  • 支持扩展添加关键进程

生产环境部署指南

系统架构建议

image-20250626181927407

部署步骤

  1. 环境准备

    # 创建专用用户
    sudo useradd -m -s /bin/bash monitor
    sudo passwd monitor# 安装依赖
    sudo apt-get update
    sudo apt-get install python3-pip
    sudo -u monitor pip install paramiko requests
    
  2. SSH密钥配置

    # 生成监控专用密钥
    sudo -u monitor ssh-keygen -t ed25519 -f /home/monitor/.ssh/server_monitor_key# 分发公钥到目标服务器
    for server in ${SERVERS[@]}; dosudo -u monitor ssh-copy-id -i /home/monitor/.ssh/server_monitor_key.pub ${server}
    done
    
  3. 配置文件调整

    # 修改服务器配置
    SERVERS = [{"host": "10.0.1.101", "ssh_port": 22, "ssh_user": "monitor",  # 使用专用账户"ssh_key": "/home/monitor/.ssh/server_monitor_key"  # 正确路径},# 更多服务器...
    ]
    
  4. 系统服务化

    bash

    # 创建systemd服务文件
    sudo tee /etc/systemd/system/server-monitor.service <<EOF
    [Unit]
    Description=Server Monitoring Service
    After=network.target[Service]
    User=monitor
    ExecStart=/usr/bin/python3 /opt/monitor/new_server_monitor.py
    Restart=always
    RestartSec=30[Install]
    WantedBy=multi-user.target
    EOF# 启动服务
    sudo systemctl daemon-reload
    sudo systemctl enable server-monitor
    sudo systemctl start server-monitor
    

日志管理方案

# 查看实时日志
journalctl -u server-monitor -f# 日志轮转配置
sudo tee /etc/logrotate.d/server-monitor <<EOF
/var/log/server-monitor.log {dailymissingokrotate 30compressdelaycompressnotifemptycreate 640 monitor admsharedscriptspostrotatesystemctl restart server-monitor > /dev/nullendscript
}
EOF
http://www.dtcms.com/wzjs/15517.html

相关文章:

  • 爱战网关键词查询网站怎么做网站赚钱
  • 把做的网站放到互联网上产品如何做线上推广
  • 免费正版高清图片素材库网站seo关键词设置
  • 网站开发所需费用明细百度网址大全 官网
  • 成考做那个网站的题比较好神马搜索seo优化排名
  • wordpress 清除cookie厦门百度快速优化排名
  • 做学科竞赛的网站优化排名推广技术网站
  • 网站301跳转有坏处吗个人如何在百度上做广告
  • 网站开发的背景与环境重庆百度推广电话
  • wordpress邮件发送功能无法开启优化网站推广排名
  • 做外贸的国际网站有哪些最新nba排名
  • 网站建设教程出售用苏州久远网络淄博网站营销与推广
  • 童装网站建设日程表广州软文推广公司
  • jsp网站入门什么是营销型网站?
  • 领地网建的网站怎么做网络销售
  • 网站公安备案增加开办主体seo关键词优化外包公司
  • 美丽乡村 村级网站建设企业软文营销
  • 网站做服装那个平台好一点推广优化排名
  • 购物网站的建设毕业论文关键词排名查询
  • 公司的网站做备案我是网站负责人如果离职以后要不要负法律责任网络营销策划的目的
  • 重庆网站建设公司多少钱女生做sem专员的工作难吗
  • h网站开发百度关键词排名突然下降很多
  • 做演示的网站指数基金有哪些
  • 网站上做地图手机上显示深圳全网营销型网站
  • 合江网站建设网络市场调研的五个步骤
  • 西安建设和住房保障局网站济南seo排名优化推广
  • 山东网站建设工作室软文代写平台
  • java和php哪个更有发展前景seo快速排名软件价格
  • 中国工程网亿美关键词优化公司哪家强
  • 专业代做简历网站百度地图推广