Nanbeige 4.1-3B 自动化运维脚本生成:基于Python的服务器监控与告警

news2026/4/16 4:29:55
Nanbeige 4.1-3B 自动化运维脚本生成基于Python的服务器监控与告警1. 引言想象一下这个场景凌晨三点你的手机突然响起刺耳的警报。你睡眼惺忪地打开一看是生产服务器的磁盘满了导致核心服务全部宕机。你一边手忙脚乱地登录服务器清理日志一边在心里发誓一定要写个监控脚本再也不让这种事情发生。但现实是运维工作千头万绪从监控CPU、内存、磁盘到检查服务状态、分析日志每一项都需要写代码。对于很多运维工程师来说写脚本不是最难的难的是在繁重的日常维护中还要抽出时间把想法变成可运行的代码。这就是我今天想跟你聊的。最近我在尝试用 Nanbeige 4.1-3B 这个模型来辅助生成运维脚本效果还挺让人惊喜的。你只需要用大白话告诉它你想干什么比如“帮我写个监控磁盘的脚本快满了就发邮件”它就能给你生成一个基本能用的Python代码框架。当然不是完全替代你写代码而是帮你快速搭好架子省去查文档和写基础结构的时间。这篇文章我就带你实际看看怎么用这个模型来搞定一个经典的运维需求用Python监控服务器磁盘使用率并在超过阈值时自动发送邮件告警。我们会从最简单的需求描述开始一步步生成、调整、完善代码最终得到一个可以直接上生产环境使用的脚本。2. 为什么需要自动化运维脚本在深入具体操作之前我们先聊聊为什么自动化脚本对运维这么重要。你可能已经深有体会手动检查服务器状态就像用算盘对账而自动化脚本则是上了财务软件。最直接的好处是解放人力。以前需要定时登录每台服务器运行df -h、top等命令现在一个脚本就能定时跑遍所有机器把结果汇总发给你。更重要的是它能做到7x24小时不间断监控人总要睡觉但脚本不用。当问题在深夜发生时自动告警能让你第一时间介入避免小问题滚雪球变成大事故。从成本角度看自动化脚本是性价比最高的运维投资之一。它不需要购买昂贵的商业监控软件利用服务器自带的Python环境和一些开源库就能搭建起来。一次编写长期受益随着服务器规模扩大它的价值会越发明显。当然我知道你可能会说这些道理都懂但写脚本本身就有门槛。你需要熟悉Python知道怎么用psutil获取系统信息用smtplib发邮件用schedule或crontab定时任务。这些知识点分散在不同的文档里整合起来就要花不少时间。而 Nanbeige 4.1-3B 这类模型的价值就在于它能帮你快速跨越这个“从想法到代码”的初始阶段。3. 准备工作环境与模型在开始让模型帮我们写代码之前我们需要先准备好“工作台”。这个过程很简单基本上就是安装Python和几个必要的库。首先确保你的服务器或本地环境有Python 3.6或以上版本。你可以打开终端输入python3 --version来确认。如果没有用系统的包管理器安装一下比如在Ubuntu上就是sudo apt install python3 python3-pip。接下来我们需要几个核心的Python库。打开终端用pip安装它们pip3 install psutilpsutilprocess and system utilities这个库是我们的核心武器。它用纯Python封装了跨平台的系统信息获取接口无论是Linux、Windows还是macOS都能用同一套代码获取CPU、内存、磁盘、网络等信息非常方便。至于邮件发送Python标准库里的smtplib和email就足够了不需要额外安装。它们可能没有第三方库那么花哨的功能但用来发个告警邮件是绰绰有余的。最后是 Nanbeige 4.1-3B 模型本身。根据你的使用习惯可以通过其提供的API接口调用或者在支持该模型的平台上直接使用。我们这篇文章的重点是展示如何与之交互来生成代码所以假设你已经有了一个可以输入自然语言、获取代码输出的对话界面。4. 从自然语言到可运行脚本好了环境准备就绪现在我们来试试模型的“翻译”能力。我们的目标是生成一个监控指定目录所在磁盘分区使用率的脚本并在使用率超过90%时发送邮件告警。4.1 提出你的第一个需求我们不用想得太复杂就像跟同事交代任务一样把需求说清楚就行。我打开对话窗口输入了这样一段话“写一个Python脚本监控/var/log目录所在磁盘分区的使用率。如果使用率超过90%就发送一封告警邮件到 adminexample.com。邮件要包含服务器主机名、磁盘路径和使用率百分比。”这里有几个关键点我说得很明确监控对象/var/log目录、触发条件使用率90%、告警动作发邮件、邮件内容主机名、路径、百分比。需求越具体模型生成的代码就越贴近你的预期。4.2 解读模型生成的代码框架很快模型给了我一段完整的Python代码。我们一起来看一下它生成的核心部分为了清晰我略去了一些次要代码import psutil import smtplib from email.mime.text import MIMEText from email.header import Header import socket def get_disk_usage(path): 获取指定路径的磁盘使用率 try: disk_usage psutil.disk_usage(path) return disk_usage.percent except Exception as e: print(f获取磁盘使用率失败: {e}) return None def send_alert_email(usage_percent, disk_path, recipient): 发送告警邮件 hostname socket.gethostname() subject f磁盘空间告警 - {hostname} body f 服务器 {hostname} 告警 监控路径{disk_path} 当前磁盘使用率{usage_percent:.1f}% 状态已超过90%阈值请及时处理 # 这里需要你配置自己的邮件服务器信息 sender your_emailexample.com smtp_server smtp.example.com smtp_port 587 username your_username password your_password msg MIMEText(body, plain, utf-8) msg[From] sender msg[To] recipient msg[Subject] Header(subject, utf-8) try: server smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 启用TLS加密 server.login(username, password) server.sendmail(sender, [recipient], msg.as_string()) server.quit() print(告警邮件发送成功) except Exception as e: print(f发送邮件失败: {e}) def main(): disk_path /var/log threshold 90.0 recipient_email adminexample.com usage get_disk_usage(disk_path) if usage is not None and usage threshold: print(f警告{disk_path} 使用率 {usage}% 超过阈值 {threshold}%) send_alert_email(usage, disk_path, recipient_email) else: print(f当前磁盘使用率: {usage}% (正常)) if __name__ __main__: main()第一次看到这段代码时我觉得模型的理解能力确实不错。它准确地抓住了需求的几个核心部分函数拆分合理把获取磁盘使用率和发送邮件这两个独立功能分成了两个函数结构清晰。使用了正确的库知道用psutil.disk_usage()来获取磁盘信息用smtplib来发邮件。包含了关键信息邮件主题和正文里都按我的要求加入了主机名、磁盘路径和使用率。有基本的错误处理在获取磁盘信息时用了try-except避免程序因为权限等问题直接崩溃。当然这只是一个起点一个可用的框架。它直接把邮件服务器的密码明文写在代码里这在实际生产环境中是绝对不允许的。另外它只运行一次就结束了而我们需要的显然是一个能定时执行的守护进程。但这些“不完美”恰恰给了我们发挥的空间接下来我们就来完善它。5. 完善脚本从原型到生产可用模型生成的代码解决了“从0到1”的问题而“从1到10”则需要我们根据实际运维经验来打磨。一个好的生产脚本必须考虑安全性、健壮性和可维护性。5.1 解决安全隐患移除明文密码把邮箱密码写在脚本里是大忌。一旦脚本泄露邮箱就失控了。常见的做法有两种使用环境变量或者使用配置文件。方法一使用环境变量推荐用于简单场景在服务器上设置环境变量脚本运行时读取它们。# 在 ~/.bashrc 或服务器配置文件中设置 export SMTP_USERNAMEyour_username export SMTP_PASSWORDyour_password然后在Python脚本中这样读取import os smtp_username os.environ.get(SMTP_USERNAME) smtp_password os.environ.get(SMTP_PASSWORD) if not smtp_username or not smtp_password: print(错误未找到邮件服务器配置环境变量) exit(1)方法二使用配置文件适合复杂配置创建一个独立的配置文件如config.ini或config.yaml脚本去读取它。记得把这个配置文件放在安全的位置并设置严格的访问权限如chmod 600 config.ini。5.2 增加核心功能实现定时监控一次性的检查没用我们需要脚本能周期性地运行。这里有两个主流选择选择A在脚本内部实现循环简单直接使用time.sleep()让脚本在检查一次后休眠一段时间然后继续。import time def main(): disk_path /var/log threshold 90.0 check_interval 300 # 每5分钟检查一次单位秒 while True: usage get_disk_usage(disk_path) # ... 检查并发送告警的逻辑 ... print(f本次检查完成{check_interval}秒后再次检查。) time.sleep(check_interval)选择B依赖系统定时任务更标准让脚本只执行一次检查然后通过系统的crontab来定时调用它。这是更经典、更解耦的做法。# 编辑crontabcrontab -e # 添加一行表示每5分钟运行一次脚本 */5 * * * * /usr/bin/python3 /path/to/your/disk_monitor.py我个人更推荐方法B。因为这样脚本的逻辑更单一只负责检查定时任务由专业的系统工具管理日志查看、任务启停都更规范。5.3 提升健壮性避免告警风暴想象一下磁盘使用率卡在91%一直下不去脚本每5分钟就发一封邮件你的邮箱很快就会被塞爆。这种“告警风暴”是运维自动化里要避免的。一个简单的改进思路是记录上次告警的时间如果短时间内已经告警过就抑制新的告警直到问题恢复后再重新开启告警。我们可以给脚本加一个小的状态记录功能import json import os import time ALERT_COOLDOWN_FILE /tmp/disk_alert_cooldown.json ALERT_COOLDOWN_SECONDS 3600 # 1小时内不重复告警 def should_send_alert(): 判断是否应该发送告警冷却期内不发送 if not os.path.exists(ALERT_COOLDOWN_FILE): return True try: with open(ALERT_COOLDOWN_FILE, r) as f: data json.load(f) last_alert_time data.get(last_alert_time, 0) # 如果距离上次告警超过冷却时间则再次发送 if time.time() - last_alert_time ALERT_COOLDOWN_SECONDS: return True else: print(处于告警冷却期内本次跳过邮件发送。) return False except: return True def record_alert_sent(): 记录本次告警发送时间 with open(ALERT_COOLDOWN_FILE, w) as f: json.dump({last_alert_time: time.time()}, f)然后在main函数里发送邮件前先调用should_send_alert()判断一下发送成功后调用record_alert_sent()做记录。这样同一个问题在1小时内最多只会轰炸你一次。6. 扩展思路不止于磁盘监控通过上面这个例子你应该能感受到用自然语言驱动脚本生成的效率了。一旦掌握了这个模式你就可以举一反三把同样的思路应用到运维的其他方面。你可以试着向模型提出更多样的需求监控CPU和内存“写个脚本如果CPU连续5分钟超过80%或者内存使用超过85%就发个钉钉/企业微信消息。”检查服务进程“写个脚本检查Nginx和MySQL进程是否在运行如果挂了就尝试重启重启失败再告警。”日志关键词监控“写个脚本实时监控某个应用日志文件出现‘ERROR’或‘OutOfMemory’关键词时立刻通知我。”批量服务器管理“写个脚本读取一个服务器IP列表逐个SSH连接上去检查磁盘使用率把结果生成一个HTML报告。”模型的价值在于快速生成符合你思维习惯的代码草稿。你不需要从空白文件开始也不需要去记忆psutil里是disk_usage还是disk_use你只需要关注业务逻辑“我要监控什么达到什么条件然后做什么”7. 总结回过头来看我们从一个简单的自然语言描述开始让 Nanbeige 4.1-3B 生成了一个可运行的Python脚本框架。然后我们基于运维的实际经验对这个框架进行了三次关键的“加固”用环境变量解决密码安全问题用crontab实现可靠定时用冷却机制避免告警轰炸。这个过程正是人机协作的完美体现——模型负责快速构建原型人类负责注入经验和判断。这种工作模式带来的效率提升是实实在在的。它把运维人员从重复性的基础编码中解放出来让你能更专注于架构设计、故障排查和性能优化这些更有价值的事情。脚本的初版可能只需要几分钟就能生成而你自己从头查文档、写代码、调试可能半小时就过去了。当然它目前还不是“银弹”。生成的代码需要你审阅和调整复杂的业务逻辑可能还需要你手动补充。但对于像监控、备份、日志清理这些常见的、模式固定的运维任务来说它已经是一个非常好用的“加速器”了。如果你也在为写各种运维脚本而烦恼不妨试试这个方法。从一个具体的小需求开始比如监控某个目录的磁盘空间感受一下从描述到代码的流畅感。你会发现把想法变成可执行方案的门槛真的降低了很多。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2514423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…