大家好我是云计算磊哥从业20年的IT老鸟。IT架构师培训15年总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文手把手从安装软件讲起从linux系统管理shell脚本编程mysql运维架构备份核心技术Apache/nginx/tomcatWEB服务器管理ansible自动化运维redis集群哨兵LVM/HAproxy/keepalived集群架构rabbitMQ消息队列dockerK8S集群资源管理K8S自愈K8S自动扩容PYTHON编程基础PYTHON自动化运维从行业到产品从过去到未来从理论到操作从视频到文档工具100篇系列文章一站式发布。从零基础入门到30k运维开发工程师岗位诸多就业问题。多方位全方面的给你讲清楚云计算这个行业该如何做。关注我。后续AI大模型开发课程更精彩。Python自动化运维实战指南前言学完 Python 基础语法变量、循环、条件、函数、模块、文件操作、异常处理后自动化运维是最实战、最落地的核心场景。传统运维依靠人工敲命令、肉眼看日志、手动查服务器状态效率低、易出错、漏告警。利用 Python 可以编写轻量化巡检脚本实现服务器、数据库、各类中间件、容器服务的全自动监控、数据采集、异常判定替代 80% 重复性运维工作。本文档聚焦企业真实运维场景包含云服务器全指标巡检、MySQL数据库巡检、Docker/K8s/Redis/Nginx服务巡检一、自动化运维核心优势低门槛落地无需高深框架基础Python语法即可实现标准化巡检规避人工巡检漏检、错检、标准不统一问题全天候值守配合定时任务实现7×24小时自动监控异常可视化自动判定资源超标、服务宕机、数据库异常轻量化无依赖脚本体积小、运行快适配所有Linux云服务器二、前置环境准备2.1 依赖库安装本次所有巡检脚本依赖通用运维Python库执行一键安装pipinstallpsutil pymysqldockerkubernetes requestspsutil系统资源、进程、网卡流量监控核心库pymysqlMySQL数据库连接、数据查询docker操作Docker容器状态kubernetes简易获取K8s集群资源状态2.2 通用规则说明所有脚本内置资源阈值告警CPU/内存/磁盘超阈值自动告警统一输出结构化巡检报告区分【正常】【异常】兼容 CentOS / Ubuntu 主流云服务器系统所有代码可直接运行无需二次修改核心逻辑三、场景一云服务器全维度自动化巡检覆盖运维核心指标CPU使用率、内存使用率、磁盘使用率、系统进程、网卡流量是服务器日常运维最核心的巡检内容。3.1 完整巡检脚本importpsutilimporttimefromdatetimeimportdatetime# 巡检阈值配置 CPU_THRESHOLD80# CPU使用率阈值MEM_THRESHOLD85# 内存使用率阈值DISK_THRESHOLD90# 磁盘使用率阈值# defcheck_cpu():CPU使用率巡检# 采集1秒内CPU平均使用率cpu_percentpsutil.cpu_percent(interval1)status异常ifcpu_percentCPU_THRESHOLDelse正常returncpu_percent,statusdefcheck_memory():内存使用率巡检mempsutil.virtual_memory()mem_percentmem.percent usedf{mem.used/1024/1024/1024:.2f}GBtotalf{mem.total/1024/1024/1024:.2f}GBstatus异常ifmem_percentMEM_THRESHOLDelse正常returntotal,used,mem_percent,statusdefcheck_disk():磁盘使用率巡检根目录diskpsutil.disk_usage(/)disk_percentdisk.percent usedf{disk.used/1024/1024/1024:.2f}GBtotalf{disk.total/1024/1024/1024:.2f}GBstatus异常ifdisk_percentDISK_THRESHOLDelse正常returntotal,used,disk_percent,statusdefcheck_process(target_process):指定进程巡检判断进程是否存活process_list[]forpinpsutil.process_iter([name]):try:iftarget_processinp.info[name]:process_list.append(p.pid)except(psutil.NoSuchProcess,psutil.AccessDenied):continuereturnlen(process_list)0,process_listdefcheck_network_flow():网卡流量巡检实时收发总量netpsutil.net_io_counters()sendf{net.bytes_sent/1024/1024:.2f}MBrecvf{net.bytes_recv/1024/1024:.2f}MBreturnsend,recvdefserver_inspect():服务器综合巡检入口print(*70)print(f【云服务器全自动巡检报告】 巡检时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})print(*70)# CPU巡检cpu_pct,cpu_statuscheck_cpu()print(f\n[CPU资源] 使用率{cpu_pct}% 状态{cpu_status})# 内存巡检mem_total,mem_used,mem_pct,mem_statuscheck_memory()print(f[内存资源] 总量{mem_total}已用{mem_used}使用率{mem_pct}% 状态{mem_status})# 磁盘巡检disk_total,disk_used,disk_pct,disk_statuscheck_disk()print(f[磁盘资源] 总量{disk_total}已用{disk_used}使用率{disk_pct}% 状态{disk_status})# 核心进程巡检可自定义进程名nginx/docker/mysqlproc_list[nginx,docker,mysqld]print(\n[核心进程巡检])forprocinproc_list:is_run,pid_listcheck_process(proc)ifis_run:print(f{proc}运行中进程PID{pid_list})else:print(f{proc}未运行 ❌)# 网卡流量巡检send_flow,recv_flowcheck_network_flow()print(f\n[网卡流量] 累计发送{send_flow}累计接收{recv_flow})print(\n*70\n巡检完成\n*70)if__name____main__:server_inspect()3.2 脚本功能说明CPU巡检采集1秒瞬时使用率超80%触发异常告警内存巡检统计总内存、已用内存、使用率精准展示占用情况磁盘巡检检测服务器根目录磁盘占用预防磁盘爆满宕机进程巡检自动检测Nginx、Docker、MySQL核心进程是否存活网卡流量统计开机至今全网卡收发流量排查流量异常四、场景二MySQL数据库自动化巡检数据库连通性检测、当前连接数统计、慢查询日志查询覆盖日常DBA基础巡检场景。4.1 完整巡检脚本importpymysqlfromdatetimeimportdatetime# MySQL数据库配置 MYSQL_HOST127.0.0.1MYSQL_PORT3306MYSQL_USERrootMYSQL_PWD你的数据库密码# 连接数告警阈值CONN_THRESHOLD200# defget_mysql_conn():获取MySQL连接检测连通性try:connpymysql.connect(hostMYSQL_HOST,portMYSQL_PORT,userMYSQL_USER,passwordMYSQL_PWD,charsetutf8mb4)returnconn,TrueexceptExceptionase:print(fMySQL连接失败{str(e)})returnNone,Falsedefcheck_mysql_connection():1. 检测数据库连通性 当前连接数conn,is_okget_mysql_conn()ifnotis_ok:returnFalse,0cursorconn.cursor()# 查询当前活跃连接数cursor.execute(show global status like Threads_connected;)rescursor.fetchone()conn_countint(res[1])status异常 连接数过高ifconn_countCONN_THRESHOLDelse正常cursor.close()conn.close()returnTrue,conn_count,statusdefcheck_slow_query():2. 检测慢查询状态 慢查询总数conn,is_okget_mysql_conn()ifnotis_ok:return0,Falsecursorconn.cursor()# 查看慢查询开启状态cursor.execute(show variables like slow_query_log;)slow_statuscursor.fetchone()[1]# 查看慢查询总数cursor.execute(show global status like Slow_queries;)slow_numint(cursor.fetchone()[1])cursor.close()conn.close()returnslow_num,slow_statusONdefmysql_inspect():MySQL综合巡检入口print(*70)print(f【MySQL数据库巡检报告】 巡检时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})print(*70)# 1. 连通性连接数巡检conn_ok,conn_count,conn_statuscheck_mysql_connection()ifconn_ok:print(f\n[数据库连通性] 连接正常)print(f[当前活跃连接数]{conn_count}状态{conn_status})else:print(\n[数据库连通性] 连接失败)# 2. 慢查询巡检slow_num,slow_opencheck_slow_query()print(f\n[慢查询功能] 已开启{是ifslow_openelse否})print(f[累计慢查询数量]{slow_num}条)ifslow_num10:print( 警告存在大量慢查询需优化SQL语句)print(\n*70\n数据库巡检完成\n*70)if__name____main__:mysql_inspect()4.2 核心巡检能力说明连通性检测快速判断数据库是否宕机、账号密码是否失效连接数监控防止连接数打满导致数据库拒绝新业务请求慢查询统计定位低效SQL解决业务卡顿、接口超时问题五、场景三Docker / K8s / Redis / Nginx 服务巡检针对运维高频中间件、容器服务实现自动化状态检测无需手动输入 docker ps、kubectl、redis-cli、nginx status 命令。5.1 综合服务巡检脚本importdockerimportrequestsimportredisfromkubernetesimportclient,configfromdatetimeimportdatetime# 服务配置 REDIS_HOST127.0.0.1REDIS_PORT6379NGINX_STATUS_URLhttp://127.0.0.1/nginx-status# defcheck_docker():Docker服务巡检运行中容器数量、异常容器try:clientdocker.from_env()containersclient.containers.list(allTrue)run_countlen([cforcincontainersifc.statusrunning])stop_countlen(containers)-run_countprint(f[Docker巡检] 总容器数{len(containers)}运行中{run_count}已停止{stop_count})returnTrueexceptExceptionase:print(f[Docker巡检] 服务异常❌{str(e)})returnFalsedefcheck_k8s():K8s简易巡检节点状态、运行Pod数量try:# 加载K8s集群配置config.load_kube_config()v1client.CoreV1Api()# 统计正常节点nodesv1.list_node()ready_nodes0fornodeinnodes.items:forcondinnode.status.conditions:ifcond.typeReadyandcond.statusTrue:ready_nodes1break# 统计运行Podpodsv1.list_pod_for_all_namespaces()run_podlen([pforpinpods.itemsifp.status.phaseRunning])print(f[K8s巡检] 集群节点正常数{ready_nodes}/{len(nodes.items)}运行中Pod{run_pod})returnTrueexceptExceptionase:print(f[K8s巡检] 未配置集群/服务异常❌{str(e)})returnFalsedefcheck_redis():Redis连通性状态巡检try:rredis.Redis(hostREDIS_HOST,portREDIS_PORT,db0,socket_timeout3)r.ping()infor.info()print(f[Redis巡检] 连接正常✅ 在线客户端{info[connected_clients]}内存使用{info[used_memory_human]})returnTrueexceptExceptionase:print(f[Redis巡检] 连接失败❌{str(e)})returnFalsedefcheck_nginx():Nginx运行状态巡检try:resrequests.get(NGINX_STATUS_URL,timeout3)ifres.status_code200:print([Nginx巡检] 服务运行正常✅)returnTrueelse:print(f[Nginx巡检] 服务异常❌ 状态码{res.status_code})returnFalseexceptExceptionase:print(f[Nginx巡检] 访问失败❌{str(e)})returnFalsedefservice_inspect():综合服务巡检入口print(*70)print(f【中间件/容器服务巡检报告】 时间{datetime.now().strftime(%Y-%m-%d %H:%M:%S)})print(*70)check_docker()check_k8s()check_redis()check_nginx()print(\n*70\n服务巡检完成\n*70)if__name____main__:service_inspect()5.2 各服务巡检核心说明1. Docker 巡检自动统计全部容器、运行中容器、停止容器数量快速排查容器意外退出、服务挂掉问题替代手动docker ps -a命令。2. K8s 集群巡检自动检测集群正常节点数、运行中Pod数量快速判断集群健康状态适合小型集群日常巡检。无K8s环境不报错仅提示异常。3. Redis 巡检检测Redis连通性、在线客户端连接数、内存占用排查Redis宕机、连接爆满、内存溢出问题。4. Nginx 巡检通过Nginx状态页检测服务可用性判断反向代理、网关服务是否正常运行及时发现Nginx挂死、端口监听异常问题。六、自动化运维进阶拓展方案6.1 定时自动巡检配合Linux crontab定时任务实现每日/每小时自动巡检无需人工执行脚本# 每小时执行一次服务器巡检0* * * * /usr/bin/python3 /root/server_inspect.py6.2 告警升级可基于现有脚本二次开发实现异常自动推送钉钉机器人、企业微信、邮件告警实现故障秒级发现。6.3 日志持久化修改脚本将每次巡检结果写入日志文件实现运维数据留存方便故障回溯、趋势分析。