背景

最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事。

首先,第一个要解决的问题是批量服务器执行命令的问题。

之前尝试用过pssh来进行批量服务器上执行脚本,限制较少,效果不错,各位有兴趣的可以试一下,本次为了跟上互联公司的脚步,打算用ansible对服务器进行批量操控。

至于ansible的手册介绍可以百度下,当然使用ansible的前提是你被控服务器的python 版本2.4以上,控制机的版本要在2.6以上。

ansible的安装

安装ez_setup 并执行 安装命令

  1. wget -q http://peak.telecommunity.com/dist/ez_setup.py
  2. python ez_setup.py
  1. esay_install ansible

接下来需要配置下ansible的host文件作为测试。在/etc下创建一个ansible目录。

  1. mkdir /etc/ansible
  2. vi /etc/ansible/hosts
  3.  
  4. # hosts
  5. [local]
  6. 127.0.0.1

然后运行下命令看看是否成功执行。

  1. ansible all -a "who"

如果发现是密码验证方式错误则设置一下免密登陆。

  1. ssh-keygen
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub root@127.0.0.1

再测试一下该命令发现运行成功了。

至此,该问题解决。

然后,开始考虑各项服务器上的检测

   

需求一、检测服务器的瞬时CPU使用率

参考博文:http://blog.csdn.net/marising/article/details/5182771

http://blog.chinaunix.net/uid-14825809-id-2943235.html

linux基本的cpu的展示属性总共有7种

    1.idle,表示CPU闲置并等待工作分配.
    2.user,表示CPU在运行用户的进程
    3.system,表示CPU在执行kernel工作
    4.nice,表示CPU花费在被nice改变过优先级的process上的时间
    5.iowait,表示CPU等待IO操作完成的时间
    6.irq,表示CPU开销在响应硬中断上的时间
    7.softirq,表示CPU开销在响应软中断上的时间

属性较多,都很有用(load average也十分有意义),但基于报表展示精简考虑,只摘取idle所占用的时间,然后1-idle%即可求出当前cpu属性。

通过vmstat命令则可以直接查看当前的cpu,内存以及io的属性信息。

然后可以通过vmstat 1 10 来显示10s内的cpu属性值。可以简单写出脚本,一条代码搞定。

  1. vmstat 1 10 | awk 'BEGIN{i=0}NR>2{i+=$15}END{printf("%.1f%\t",100-i/10)}'

需求二、检测服务器的瞬时内存使用率

查看当前服务器内存使用率有许多方法可以看,比如top、cat /pro/meminfo、vmstat、free或者一些图形化的工具,在此选择最简单的free来操作。

由于linux为将buffers和cached充分利用,能缓存的内容都会尽量往磁盘上缓存,所以服务器的内存使用率=free+buffers+cached

最后“-/+ buffers/cache:”这一行的内容即为当前实际的内存使用率。

统计10s内的内存数值可得如下代码。

  1. for i in `seq 1 10`
  2. do
  3. free | fgrep "buffers/cache"
  4. sleep 1
  5. done | awk 'BEGIN{a=0;b=0}{a+=$3;b+=$3+$4}END{printf("%.1f%\t",a/b*100)}'

至此完成该需求。

需求三、监测服务器的瞬时硬盘使用率

习惯性地用df 来查看当前硬盘使用率,如图,直接查看df --total可以堪当当前硬盘的使用率

  1. df --total | fgrep total|awk '{printf("%s\t",$5)}'

linux 服务器常规巡检并生成报表(一)的更多相关文章

  1. Linux 服务器 常规性能优化设置

    为能使linux服务器能最大化的工作,通常需要对linux的通常设置做适当的更改,而这又往往会依据服务器的类型不同,而有所变化. 对于通常的多连接的服务器其参数设置,可在 /etc/sysctl.co ...

  2. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  3. Linux服务器数据备份恢复策略

    一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令, ...

  4. Linux服务器部署系列之一—Apache篇(下)

    接上篇 linux服务器部署系列之一—Apache篇(上)    四.管理日志文件 Apache日志分为访问日志和错误日志两种: 1)访问日志 用于记录客户端的访问信息,文件名默认为access_lo ...

  5. Linux服务器安全配置

    众所周知,网络安全是一个非常重要的课题,而服务器是网络安全中最关键的环节.Linux被认为是一个比较安全的Internet服务器,作为一种开放源代码操作系统,一旦Linux系统中发现有安全漏洞,Int ...

  6. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  7. Linux服务器的那些性能参数指标

    Linux服务器的那些性能参数指标 一个基于Linux操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要, ...

  8. ue4 shooterGame 第一步 搭建git linux服务器

    1.分别在linux(服务器)上安装git.和openssh服务, 在windows(客户机)上安装cygwin,模拟linux环境以及安装windows git客户端. 2.windows的cygw ...

  9. (转)linux服务器安全配置攻略

    引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...

随机推荐

  1. Pyhthon3之使用__slots__

    正常情况下,我们定义了一个class,创建了一个class实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Student( ...

  2. Caché到MySQL数据同步方法!

    随着医疗行业信息化的发展,积累了大量的业务数据,如何挖掘这些数据,实现数据的可视化被提上日程,医院中通常有许多的信息化系统,使用的又都是不同厂商的数据库产品,如何统一汇聚数据,实现数据互通也是一个大问 ...

  3. vector iterators incompatible

    字面翻译迭代器类型不兼容 今天同事遇到的这个问题算是一个习惯性写法的问题.描述一下代码: struct Track{}; class BaseTrack { - std::vector<Trac ...

  4. 7个步骤让PC网站自动适配手机网页

    传统的网站如何完成向移动设备的快速转型? 通过移动适配技术可以实现,切图网是国内首家基于web技术服务的公司,而移动适配主要通过底层的web技术开发手段来完成,下面切图网将从技术角度来告诉你通过7个步 ...

  5. java Files 和 Path对文件操作

    1.拷贝文件 /** * 拷贝文件,生成新的文件名 * @param pathUpload * @return */ private String converUploadFileName(Strin ...

  6. java虚拟机栈(关于java虚拟机内存的那些事)

    <深入理解 java 虚拟机> 读书扩展 作者:淮左白衣 写于 2018年4月13日16:26:51 目录 文章目录 java虚拟机栈是什么 特点 栈帧 局部变量表 什么时候抛出 `Sta ...

  7. # VsCode 配置C++调试运行

    VsCode 配置C++调试运行 打开命令面板快捷键为F1,软件上写的Ctrl+Shift+P似乎没用 先安装插件使得可以运行 先自行在vsc扩展中搜索C++安装C/C++插件 再参考知乎专栏中安装c ...

  8. python3 字符集的应用

    python3的字符集测试 s_test=u"严" print(s_test.encode('gbk')) print([s_test]) #print(s_test[]) #pr ...

  9. nacos搭建

    1.下载执行包 直接官网 https://nacos.io/zh-cn/docs/quick-start.html 2. 建表 3. 启动 http://10.0.0.113:8848/nacos/i ...

  10. 安装本地jar包

    (1)安装在本地maven库 假设我们需要引入的包为 myjar-1.0.jar (1.1)打开cmd,进入myjar-1.0.jar所在的目录 (1.2)执行如下命令:mvn install:ins ...