python批量检查网站可用性

前几天某站2个小时无法访问,最后终于触发了XX业务部门的人工报警,然后就悲剧了,领导大怒,问:怎么回事?答:公司站点太多,有些小站点访问访问量比较小也不重要,关注度下降,所以。。。,讨论最后领导下指示要尽快加所有站点的监控,不管站点大小,如果不可访问立刻要进行报警,绝对不能再次触发人工报警,不能让这种不专业的事再次发生,所以就有了今天的这个脚本,脚本如下:

脚本逻辑就是获取站点HEAD,如果正常就返回up,有问题就返回down,getattr()是python内置函数,接收一个对象,可以根据对象的属性返回对象的值,比较有意思[……]

继续阅读

python获取操作系统信息

获取操作系统信息应该是运维的基础工作了,我认为作为一个运维人员,对自己所管理的机器配置应该是很清楚的,因为这对我们快速处理问题很有帮助,比如随着业务增长,突然某些机器负载上涨的厉害,这时候要排查原因,除了从应用程序、架构上分析外,当前硬件性能的分析应该是必不可少的一环,之前我写过一篇用第三方模块psutil来获得系统信息,但有个问题就是每台就机器都要安装这个模块,否则运行会报错,那今天我们就来个清爽版的,不用第三方模块,用python自带模块和系统提供的运行信息来获取我们需要的信息,这个脚本除了硬件外,还抓取了当前系统进程数和网卡流量功能,所以这个版本实现的功能基本对应了之前psutil实现的[……]

继续阅读

Python实时监控文件方法

在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控nginx的$request_time和$upstream_response_time时间,分析出最耗时的请求,然后去改进代码,这时就要对日志进行实时分析了,发现时间长的语句就要报警出来,提醒开发人员要关注,当然这是其中一个应用场景,通过这种监控方式还可以应用到任何需要判断或分析文件的地方,所以今天我们就来看看如何用python实现实时监控文件,我给三个方法实例::

第一种:

这个是最简单的和容易理解的,因为大家都知道lin[……]

继续阅读

使用Django Highcharts制作图表

在运维工作总很多数据最终的展现方式要用到图表,毕竟用图来展示要比一堆数字更直观些,比如利用率、站点的PV,UV等,大家千万不要觉得看到很多漂亮的图就感觉很难,其实真心不是,因为现在有很多前端的绘图库,你只需要按它要求的格式(json)提供给前端接口,什么曲线图、饼图,还有你从来都不知道的图都可以生成出来,现在用的比较多的是highcharts,echarts等,django-highcharts是django的一个集成库,使用它在django里更方便绘制出我们想要的图表,所以这篇文章就使用它来完成一个超小项目,实现一个站点的PV,UV曲线图, 另外我一直认为公众号其实不太合适贴太多的代码,要看[……]

继续阅读

python模块psutil获取系统状态

获取操作系统的当前运行状态和负载情况,是一个系统管理员的基本技能,因为这对我们日常排查故障,定位问题有着非常紧密的联系,比如查看当前系统的基本信息,例如cpu,内存,网络接收包情况,磁盘的使用率等就是我们日常系统管理员经常要关注的内容,既然这些信息如此重要,那能否每次登陆系统的时候自动给我们展示出来呢,其实解决这个问题很简单,我们可以写个脚本,这个脚本打印出我们关注的信息,然后把这个脚本放到.bashrc里,这样每次登陆系统就会自动调用这个脚本来运行,输出当前的系统信息,既然想清楚了,那就动手进入今天的主题,用我们今天的主角python的psutil模块来实现获取系统状态, 该模块可以获取正在[……]

继续阅读

看脑图学python

学一门编程语言,个人建议先要把这门语言的最基本的内容搞清楚,然后在这个基础上再逐一深入学习,那如何快速了解这些内容呢,当让用脑图是最方便的了,也是便于理解,通过脑图的学习,能让人快速掌握一门语言,以下是我在浏览国外一个网站的时候看到的,觉得不错,分享给小伙伴,希望对大家学习有些帮助,脑图是画的python3,但对学习python2同意具有借鉴意义,因为思想是一样的,别的不多说了,上图:

python-3-in-one-pic[……]

继续阅读

python如何获取当前时间?

说起计算机中的时间,还有一些比较有意思的事,比如我们经常听到的Unix时间戳,UTC时间,格林威治时间等,从表示上来讲他们基本属于同一个东西,因为他们的时间表示都是从1970年.1月.1日开始到现在的秒数,到这有人就有问题了,为毛是从这个时间点开始的呢?因为这天呀发生了一件大事,UNIX操作系统诞生了,这UNIX诞生可有来历,他是一个歪果仁利用老婆孩子外出度假的时间来完成的,我假设大家了解操作系统的复杂性,那么我们预估他老婆要外出几年才能完成UNIX系统的编写?3年?5年? 错,人家老婆就去了一月就回来了,这就跟linus在下雨天在宿舍没事,写出一个linux系统一样diao,好吧,也许大神就[……]

继续阅读

python获取Ip归属信息

如果你有一批IP地址想要获得这些IP具体的信息,比如归属国家,城市等,最好的办法当时是调用现有的api接口来获取,我在之前就写过一篇文章,是关于我的博客被莫名攻击的时,就有获取过一批IP,攻击的时候当时是恢复业务重要,IP该封的就要封,攻击过后这个攻击者的IP信息,自己就可以分析下都来自哪里,有没有什么特征,帮助提示自己网站的安全性,今天这个脚本就是根据提供的IP获得IP归属的具体信息,脚本如下:

脚本解释,定义了2个函数,getIp()函数从文件中读取IP信息,返回一个列表,get_geolocation()函数负责实际得[……]

继续阅读

nginx+ngx_lua_waf安装

最近上新项目,搭建nginx的时候为保证安全,决定安装下waf模块,以下是具体步骤,首先下载需要的安装包,进行每个安装:

wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz

tar -zxvf LuaJIT-2.0.3.tar.gz

cd LuaJIT-2.0.3

make

make install

然后下载nginx,

wget  http://nginx.org/download/nginx-1.7.6.tar.gz

tar -zxvf nginx-1.7.6.tar.gz

下载ngx[……]

继续阅读

安装paramiko报错解决

最近通过pip安装一台机器的ansible,真是费劲了周折,总结如下,安装时报

‘ascii’ codec can’t decode byte 0xe2 in position 75: ordinal not in range(128)错误,我没特别管,安装上是装上了,但ansible运行不正常,我在python命令行下,导入paramiko模块,会报这个错误,

ImportError: No module named cryptography.hazmat.backends

明显表示没安装成功cryptography这个模块,然后通过pip install来安装,发现快结束[……]

继续阅读