linux 服务器常规巡检并生成报表(一)
背景
最近接到一个需求要求每天巡检各台业务设备,并导出报表,但一想到设备有N台,一台台每天巡检这样的重复劳作实在是太伤神了,因此决定写一个脚本来搞定这件事。
首先,第一个要解决的问题是批量服务器执行命令的问题。
之前尝试用过pssh来进行批量服务器上执行脚本,限制较少,效果不错,各位有兴趣的可以试一下,本次为了跟上互联公司的脚步,打算用ansible对服务器进行批量操控。
至于ansible的手册介绍可以百度下,当然使用ansible的前提是你被控服务器的python 版本2.4以上,控制机的版本要在2.6以上。
ansible的安装
安装ez_setup 并执行 安装命令
wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
esay_install ansible
接下来需要配置下ansible的host文件作为测试。在/etc下创建一个ansible目录。
mkdir /etc/ansible
vi /etc/ansible/hosts # hosts
[local]
127.0.0.1
然后运行下命令看看是否成功执行。
ansible all -a "who"
如果发现是密码验证方式错误则设置一下免密登陆。
ssh-keygen
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属性值。可以简单写出脚本,一条代码搞定。
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内的内存数值可得如下代码。
for i in `seq 1 10`
do
free | fgrep "buffers/cache"
sleep 1
done | awk 'BEGIN{a=0;b=0}{a+=$3;b+=$3+$4}END{printf("%.1f%\t",a/b*100)}'

至此完成该需求。
需求三、监测服务器的瞬时硬盘使用率

习惯性地用df 来查看当前硬盘使用率,如图,直接查看df --total可以堪当当前硬盘的使用率
df --total | fgrep total|awk '{printf("%s\t",$5)}'
linux 服务器常规巡检并生成报表(一)的更多相关文章
- Linux 服务器 常规性能优化设置
为能使linux服务器能最大化的工作,通常需要对linux的通常设置做适当的更改,而这又往往会依据服务器的类型不同,而有所变化. 对于通常的多连接的服务器其参数设置,可在 /etc/sysctl.co ...
- 用 Python 脚本实现对 Linux 服务器的监控
目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...
- Linux服务器数据备份恢复策略
一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令, ...
- Linux服务器部署系列之一—Apache篇(下)
接上篇 linux服务器部署系列之一—Apache篇(上) 四.管理日志文件 Apache日志分为访问日志和错误日志两种: 1)访问日志 用于记录客户端的访问信息,文件名默认为access_lo ...
- Linux服务器安全配置
众所周知,网络安全是一个非常重要的课题,而服务器是网络安全中最关键的环节.Linux被认为是一个比较安全的Internet服务器,作为一种开放源代码操作系统,一旦Linux系统中发现有安全漏洞,Int ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...
- Linux服务器的那些性能参数指标
Linux服务器的那些性能参数指标 一个基于Linux操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要, ...
- ue4 shooterGame 第一步 搭建git linux服务器
1.分别在linux(服务器)上安装git.和openssh服务, 在windows(客户机)上安装cygwin,模拟linux环境以及安装windows git客户端. 2.windows的cygw ...
- (转)linux服务器安全配置攻略
引言: 最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置,供大家参考. ...
随机推荐
- Tools - 关于Network
Tcpdump homepage - tcpdump wiki - tcpdump Wireshark homepage - wireshark wiki - wireshark Wireshark基 ...
- oracle jdk和openjdk区别;idea如何加载jdk源码并调试jdk代码
两个jdk的区别 oracle jdk是sun/oracle(甲骨文)公司的,部分jdk开源:相对比较稳定,使用的比较多. openjdk是完全开源的,据说是官方oracle唯一承认的开源版本. id ...
- 【miscellaneous】各种音视频编解码学习详解
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- 高级UI-RecyclerView头部和尾部添加
在ListView中,可以添加头部和尾部,其添加方法也是十分的简单,直接调用listview.addHeaderView(view);和listview.addFooterView(view);即可, ...
- redis的主从复制和哨兵模式
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...
- C语言程序设计II—第十二周教学
第十二周教学总结(13/5-19/5) 教学内容 本周的教学内容为:11.1 知识点:指针数组的概念.11.2 知识点:函数指针.11.3知识点:单链表的基本概念,链表节点的结构定义方法,以及单向链表 ...
- 乐字节Java|GC垃圾回收机制、package和import
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
- [转帖]Cacls和ICacls
Cacls和ICacls https://www.cnblogs.com/Aley/p/11089538.html Need Study 解释: Cacls:显示或修改文件的访问控制列表(ACL) ...
- Neo4j常用的查询
一.添加操作 1. 添加节点: create (x:学生{studentId:'1001',age:20} 2. 添加关系: 对现有的节点添加关系 match (x:学生{studentId:1001 ...
- FZU2018级算法第二次作业 2.10 逆序数(权值线段树)
题目: Nk 最近喜欢上了研究逆序数,给出一个由 1…n 组成的数列 a1,a2,a3…an, a1的逆序数就是在 a2…an 中,比 a1 小的数的数量,而 a2 的逆序数就是 a3….an 中比 ...