zoukankan      html  css  js  c++  java
  • 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

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

    image

    至此,该问题解决。

     image

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

       

    需求一、检测服务器的瞬时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的属性信息。

    image

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

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

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

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

       image

      由于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%	",a/b*100)}'

    image

      至此完成该需求。

     

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

    image

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

    df --total | fgrep total|awk '{printf("%s	",$5)}'
  • 相关阅读:
    Spark学习之路 (二十七)图简介
    Spark学习之路 (二十三)SparkStreaming的官方文档
    Spark学习之路 (二十一)SparkSQL的开窗函数和DataSet
    Spark学习之路 (二十)SparkSQL的元数据
    Spark学习之路 (十九)SparkSQL的自定义函数UDF
    Spark学习之路 (十八)SparkSQL简单使用
    Spark学习之路 (十七)Spark分区
    JSP中request对象常用方法汇总
    JSP中request对象常用方法汇总
    在Myeclipse10中配置tomcat后新建工程
  • 原文地址:https://www.cnblogs.com/linquan/p/5039883.html
Copyright © 2011-2022 走看看