日常运维

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常运维相关的知识,希望对你有一定的参考价值。

w命令:

    用于查看系统负载、显示已经登陆系统的用户列表,并显示用户正在执行的指令等信息

    技术分享图片

    第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载。第二行开始以及下面所有的行,告诉我们的信息是,当前登录的都有哪些用户,以及他们是从哪里登录的等等

    我们主要关注的load average后面的3个数值:第①个数值表示1分钟内系统的平均负载值;第②个数值表示5分钟内系统的平均负载值;第③个数值表示15分钟系统的平均负载值。这个值的意义是,单位时间段内CPU活动进程数。当然这个值越大就说明你的服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系。

    如何查看CPU数量:grep -c "processor" /proc/cpuinfo;     /proc/cpuinfo文件记录了cpu的详细信息。

uptime命令:

    能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

    技术分享图片

vmstat命令:

    显示虚拟内存状态,包括进程、内存、I/O等系统整体的运行状态。

    技术分享图片

    w 查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力,但是具体是哪里(CPU, 内存,磁盘等)有压力就无法判断了。通过 vmstat 就可以知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu. 请重点关注一下r b swpd si so bi bo us wa几列   

    1)procs 显示进程相关信息

        r :表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

        b :表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

    2)memory 内存相关信息

        swpd :表示切换到交换分区中的内存数量 ,单位为KB;

        free :当前空闲的内存数量,单位为KB;

        buff :缓冲大小,(即将写入磁盘的);    例子:0000(CPU数据) --> 内存(buffer) -->磁盘

        cache :缓存大小,(从磁盘中读取的); 例子:0000(磁盘数据) --> 内存(cache) --> CPU

    3)swap 内存交换情况

        si :由交换区写入到内存的数据量;

        so :由内存写入到交换区的数据量;

    4)io 磁盘使用情况

        bi :从块设备读取数据的量(读磁盘);

        bo: 从块设备写入数据的量(写磁盘);

    5)system 显示采集间隔内发生的中断次数

        in :表示在某一时间间隔中观测到的每秒设备中断数;

        cs :表示每秒产生的上下文切换次数;

    6)CPU 显示cpu的使用状态(us+sy+id=100%)

        us :显示了用户下所花费 cpu 时间的百分比;

        sy :显示系统花费cpu时间百分比;

        id :表示cpu处于空闲状态的时间百分比;

        wa :表示I/O等待所占用cpu时间百分比;

        st :表示被偷走的cpu所占百分比(一般都为0,不用关注)

    vmstat常见用法:vmstat 1 5;    表示每隔1s打印一次,共打印5次;当然你也可以使用vmstat 1持续打印,Ctrl + c 结束。

top命令:

    可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。

    技术分享图片

    top命令打印出了很多信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用情况、内存使用情况以及交换分区使用情况。如上图所示,有些内容可以通过其他命令也能查看,这里关注:RES %CPU, %MEM, COMMAND

    RES 进程所占内存大小

    %CPU 使用CPU百分比

    %MEM 使用内存百分比

    COMMAND 进程启动命令名称

    按 shift + m: 可以按照内存使用大小排序;shift + p:可以切回按照cpu使用大小排序;按数字 1: 可以列出各颗cpu的使用状态。字母q:退出!

    一次性全部把所有信息输出出来而非动态显示:top -bn1  ;    一般使用在shell脚本。

sar命令:

    sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等;这里介绍如何监控网卡流量

    sar安装:yum install -y sysstat

    sar查看网卡流量:sar -n DEV

    技术分享图片

    IFACE这列表示设备名称

    rxpck/s 表示每秒进入收取的包的数量

    txpck/s 表示每秒发送出去的包的数量

    rxbyt/s 表示每秒收取的数据量(单位Byte)

    txbyt/s表示每秒发送的数据量。

    后面几列不用关注。如果rxpck/s 那一列的数值大于4000,或者rxbyt/s那列大于5,000,000则很有可能是被攻击了,正常的服务器网卡流量不会高于这么多,除非是你自己在拷贝数据。

上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢?  输入命令:sar -n DEV 1 5 即可;

    技术分享图片

也可以查看某一天的网卡流量历史,历史文件存放在/var/log/sa/目录下,如命令:sar -n DEV -f /var/log/sa/sa06;

    技术分享图片

查看系统历史负载:sar -q;

    技术分享图片

查看磁盘读写:sar -b

    技术分享图片

nload命令:

    用来即时监看网路状态和各ip所使用的频宽

    安装:yum install -y epel-release; yum install -y nload;

    技术分享图片

    Incoming:进入网卡的流量; Outgoing:网卡出去的流量; 我们关注的当然是Curr这行的实时数据了。

监控io性能:

    iostat命令:

技术分享图片

    关注%util这一列,表示占用CPU时间百分比;如果数值很大的话(50%+),说明磁盘IO很忙。

    iotop命令:yum install -y iotop

    能查看进程占用磁盘IO信息

    技术分享图片

free命令:

    用于查看内存使用情况

    技术分享图片

    total:内存总大小

    used:真正使用的实际内存大小

    free:剩余物理内存大小(没有被分配的内存)

    shared:共享内存大小,不用关注

    buff/cache:分配给buffer和cache的内存总共有多大。(区分两者!)

    available:系统可使用的内存有多大

    【total=used + free + buffer/cache】【available=free + buffer/cache剩余的部分】

ps命令:

    用于查看系统进程。常用:ps -elf ;  或者 ps aux;两个命令显示的信息大同小异!

    技术分享图片

    技术分享图片

    PID:表示进程的ID。有了pid,可以终止进程:kill pid;查看pid进程在哪里启动的:ls -l /proc/[pid]/  就可以看到某pid在哪里启动的。

    这里主要解释一下STAT列:表示进程的状态;如下;

        D 不能中断的进程(通常为IO)

        R 正在运行中的进程

        S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态

        T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态

        W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配

        X 已经死掉的进程(这个好像从来不会出现)

        Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。

        < 高优先级进程

        N 低优先级进程

        L 在内存中被锁了内存分页

        s 主进程

        l 多线程进程

        + 代表在前台运行的进程


以上是关于日常运维的主要内容,如果未能解决你的问题,请参考以下文章

Python日常运维脚本

Hadoop集群日常运维

代码发布系统实现

开发运维日常坑 总结 1-50

如何做好日常运维的安全工作

linux运维的工作内容都有啥