一个网站故障排查的、代码更新的简便脚本

故障排错脚本

由于近来公司的服务器经常会出点小问题,基于各种原因要去排错。这里我用python写了一个脚本,主要四调用os模块操作。有一个是要统计mysql最大连接数的。因为好像python不支持"show processlist",所以自己写了一个模块mysqlconn.py。放在/python目录下。这个模块的作用主要是执行“sh /python/mysqlconn.sh”.这个脚本。然后脚本会生成一个叫mysqlconn.txt文件放到:/python/mysqlconn.txt下面。主要是统计当前连接数。和mysql默认允许的最大连接数。

最后一个要说的就是,我的代码更新目录是:/www/zhs/tool(测试环境)。更新之前上次到:/python目录,然后用for去统计文件。先备份到/tmp的目录下:下面是部分内容效果(代码比较简单,这里不做说明开始部分的登录账号是:xiaoluo.密码是:123456):

代码展示:(复制即可使用)

#!/usr/bin/env python
import os
import fileinput
import mysqlconn
while True:
        name=raw_input("please input name:").strip()
        if name !="xiaoluo":
                        print "please try agine:"
                        continue
        password=raw_input("please input your password:").strip()
        if password !="123456":
                        print "please try agine:"
                        continue
        break

while True:
        print "1.webserver:[1]"
        print "2.mysqlserver:[2]"
        print "3.update code:[3]"

choose=raw_input("your server is:")
        if choose=="1":
                user=os.getlogin()
                print user
                userlogin=os.system("w | grep 192|wc -l")
                userlogin=raw_input(‘check your free io:[y/n](60)‘) 
                if userlogin=="y":
                        io=os.system("iostat|awk ‘NR==4{print $NF}‘|cut -f 1 -d .|grep -v ^0$")
#               print io
                else:
                        pass
                cpu=raw_input("check your free cpu:[y/n]")
                if cpu=="y":
                        cpu_idle=os.system("top -b -n 1 | grep Cpu | awk ‘{print $5}‘ | cut -f 1 -d .")
                else:
                        pass
                swap=raw_input("check your free_swap:[y/n]")
                if swap=="y":
                        free_swap=os.system("/usr/bin/free -m|grep Mem|awk ‘{print $4}‘")
                else:
                        pass
                web_load=raw_input("check your load:[y/n](18)")
                if web_load=="y":
                        web_load=os.system("uptime|awk ‘{print $NF}‘|cut -f 1 -d .")
                else:
                        pass
                user_disk=raw_input("check your uses disk:[y/n]")
                if user_disk=="y":
                        user_load=os.system("df -H|sort -k5nr|grep -vE ‘Filesystem|tmpfs|cdrom‘|awk ‘{print $5 " " $1}‘")

else:
                        pass

tcp_connection=raw_input("check your tcp connection:[y/n]" )
                if tcp_connection=="y":
                        tcp_connection=os.system("netstat -nat |grep 80|awk ‘{print $6}‘|sort|uniq -c|sort -rn")
                else:
                        pass
                top_ip=raw_input("check yout top ip connection:[y/n]")
                if top_ip=="y":
                        top_ip=os.system("netstat -anlp|grep 80|grep tcp|awk ‘{print $5}‘|awk -F: ‘{print $1}‘|sort|uniq -c|sort -nr|head -n20")
                else:
                        pass
        if choose=="2":
                mysqluser=raw_input("please input mysql user:").strip()
                if len(mysqluser)==0:
                        print "empty mysqluser,try again"
                        continue
                else:
                        pass
                mysqlpassword=raw_input("please input mysql password:").strip()
                if len(mysqlpassword)==0:
                        print "empty mysqluser,try again"
                        continue
                else:
                        pass
                host=raw_input("please input mysql host:").strip()
                if len(host)==0:
                         print "empty mysqluser,try again"
                         continue
                else:
                         pass
                user=os.getlogin()
                print user
                userlogin=os.system("w | grep 192|wc -l")
                userlogin=raw_input(‘ check your io:[y/n]‘)
                if userlogin=="y":
                        io=os.system("iostat|awk ‘NR==4{print $NF}‘|cut -f 1 -d .|grep -v ^0$")
#               print io
                else:
                        pass
                cpu=raw_input("check your free cpu:[y/n]")
                if cpu=="y":
                        cpu_idle=os.system("top -b -n 1 | grep Cpu | awk ‘{print $5}‘ | cut -f 1 -d .")
                else:
                        pass
                swap=raw_input("check your free_swap:[y/n]")
                if swap=="y":
                        free_swap=os.system("/usr/bin/free -m|grep Mem|awk ‘{print $4}‘")
                else:
                        pass
                web_load=raw_input("check your load:[y/n]")
                if web_load=="y":
                        web_load=os.system("uptime|awk ‘{print $NF}‘|cut -f 1 -d .")
                else:
                        pass
                user_disk=raw_input("check your uses disk:[y/n]")
                if user_disk=="y":
                        user_load=os.system("df -H|sort -k5nr|grep -vE ‘Filesystem|tmpfs|cdrom‘|awk ‘{print $5 " " $1}‘")

else:
                        pass
                mysql_prolist=raw_input("check your mysql Curren connection:[y/n]")
                if mysql_prolist=="y":
                        f=open("/python/mysqlconn.txt")
                        u=f.readline()
                        print u
                mysql_MAX_prolist=raw_input("check your mysql max_connection:[y/n] ")
                if mysql_MAX_prolist=="y":
                        f1=open("/python/mysqlconn.txt")
                        u1=f.readlines()
                        for line in u1:
                                print line
        if choose=="3":
                name=raw_input("please input your well update package:(.tar)").strip()
                if len(name)==0:
                        print "empty mysqluser,try again"
                        continue
                else:
                        pass
#                       os.system("cd /python/%s" %(name))
                        w=os.listdir(‘/python/%s‘%(name))
                        print w
#                       for line in w:
                        backup=os.system("mkdir /tmp/`date +%Y%m%d`")
                        for line in w:
                                os.system("cp -r /www/zhs/%s/%s /tmp/%s" %(name,line,backup))
                                os.system("cp -rf /python/%s/* /www/zhs/%s/" %(name,name))

第二、mysqlconn.py模块代码:

#!/usr/bin/env python
#xiaoluo
import os
os.system("sh /python/mysqlconn.sh")

第三、mysqlconn.sh脚本用来收集信息:

#!/bin/bash
#xiaoluo
#18878774260
mysql -uroot -p123456 -h 192.168.38.131 -e "show processlist"|grep -v localhost|wc -l > /python/mysqlconn.txt
mysql -uroot -p123456 -h 192.168.38.131 -e "show variables like ‘max_connections‘"|grep max | awk ‘{print$2}‘ >>/python/mysqlconn.txt

时间: 2023-12-01 23:42:25

一个网站故障排查的、代码更新的简便脚本的相关文章

网站故障-排查步骤

作为一家中型网站的运维工程师,真实遇到网站GG了,寻求理想排查步骤,自己心得,附加网友观点 网站挂了, 1.ping我的网站主站IP,可能是禁ping,不通,可能是机房网络问题,那么就去ping机房的网关! 2.机房网络如果没问题的话,那我会去看访问是什么情况,服务器异常或者是nginx报错的话, 那我     会排查一下硬件,我的网站是用简单的nginx负载+对外防火墙的,那我就看看access.log, 统计一下这阶段可疑IP以及行为,如果有攻击,先拉黑可疑黑名单 3.tracert,我会看

网站故障排查几个简单步骤

1.top命令查看cpu消耗多少(id%的值和%cpu要是一直是几百就是问题了.%wa要是大于30%也是压力大了).还有看负载的3个值(和cpu线程是1比1关系.要是值大于线程书,那么也是压力过大.) top命令要是发现cpu消耗过多,可以知道是哪几个进程了. 2.查看硬盘使用情况.有时候监控不好可能会被日志文件撑死.df -h (即时清理无用的,否则一满什么问题都会出现) 3.查看内存使用情况.free -m 4. 查看12.6% wa IO等待所占用的CPU时间的百分比,高过30%时IO压力

linux 代码更新-打包-重启脚本

#! /bin/sh base=/home/project/myblog cd $base git pull if [ ! $? -eq 0 ] then echo "Error in git pull!!! Stop deployment!" exit 1 fi cd $base #查看服务器状态 HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "http://localhost"` echo

Jekyll自动检测代码更新

Jekyll自动检测代码更新 jekyll是一个静态博客生成软件, 我们把代码放在一个仓库里, 只要远程代码更新, 我们就从把它拉到自己的服务器, 然后重新启动jekyll. cd /root/blog git clone outproject 设置定时器 自动拉取代码重新部署jekyll: crontab -e */1 * * * * /root/blogpull.sh >> /root/cronblogpull.log /root/blogpull.sh如下: 脚本文件内容 #! /bin

小问题不简单,一个无线故障的排查过程

本文不是为了说明解决了多难的问题,而是提供了查找app连接服务端的问题的几种解决问题的思路和方法 研发人员反映有个手机app业务在3G网络下刷新不了,是连接的测试环境的服务,通过办公网和wifi正常. 研发认为可能是在3G网络或者是服务器所在IDC机房问题,问题出现有一段时间了. 真这么神奇?专治疑难杂症30年的我得查查- 找来一台andriod手机,root过的,安装ssh终端模拟器app,希望直接连接网络进行测试. 发现能ping ,说明网络是通的,不能telnet服务端口. 想通过curl

虚拟机性能监控与故障排查工具介绍

本文来读书籍<深入理解java虚拟机-JVM高级特性与最佳实践>的阅读笔记,并且对虚拟机性能监控与故障排查一节做了内容整理. 关于导图中的两部分内容还是希望大家能够亲自测试体验下,在网上也有不少的文章介绍,这里摘录几篇个人认为不错的文章,供参考: jstat/jinfo/jstack/jmap命令行工具使用详细介绍 VisualVM 官网介绍及使用说明 使用 VisualVM 进行性能分析及调优 使用VisualVm监控远程Linux服务器java进程 由于在 linux 服务器上面,使用远程

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)

51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程 第一课 Linux运维经验分享与思路 1.一般把主机名,写到hosts下    127.0.0.1    hostname,因为很多应用要解析到本地.oracle没有这个解析可能启动不了. 2.注释掉UUID以及MAC地址,需要绑定网卡的时候,这个可能会有影响. 3.磁盘满了无法启动,  var下木有空间,无法创创建PID等文件,导致文件无法启动,按e   进入single  然后b  重启进入单用户模式. 4.ssh登陆系

[linux]df 磁盘100%Used告警,du显示目录状态良好的故障排查

1.回顾: 某在线主机深夜连续接到告警系统的disk Used 超限告警. 登陆主机查看却遇到了困惑:在检查磁盘使用量 df –h 出来的磁盘使用量确实和告警信息一样,已经被100%占用,但是查看目录大小 du 时,却显示实际目录大小并非这样,而是有很大空闲空间. 如图:磁盘用量 df –h 结果为100%Used, 目录实际总大小 du –h –max-depth=1,显示总目录大小为60k,几乎可以忽略的使用比例. [知识准备] [linux] lsof 命令了解: lsof(list op

优化网站、网页、代码

网站优化做的就是细节,代码优化就是网站很重要的一个细节.许多seoer由于不懂代码放弃了优化网站代码,这对网站整体权重的提升是不利的,其实seo中的代码优化非常简单.今天我就为大家讲解一下如何进行网站代码seo优化. SEO优化,在网站优化过程中,可以说大家都沉淀在于外部优化上,很少人能把大部份时间花费在内部优化中,尤其是新手,接到网站后,站内优化吗,不就是改改标题.描述.写写Sitemap地图与HTML地图.Robost.txt.做做404错误页面.可以说把一些基本了解的常识处理完后,省下来的