服务器监控

    开源解决方案


        Nagios


        zabbix


        等


    


    主要的监控项


        CPU


            cat /proc/cpuinfo


                * /proc/是内存空间中的系统操作命令,并非磁盘中的实际存储空间


                


            vmstat [间隔时间] [执行次数]


                基础组件


                第一行数据不准确(刚开机是准的,但是程序执行过后就不准了)


            top


                集成了很多系统信息在里面


                f 设置展示的信息


                h 显示所有可用命令


                1 显示所有CPU的核心数


                    0.0%sy 锁占用(很少超过10%)


                    0.0%id 空闲CPU百分比


                    0.0%wa IO等待(iowait)


                    0.0%hi 硬件中断


                    0.0%si 软件中断


                    0.0%st 实时


                    swap 虚拟内存


            mpstat


                个别系统包含此命令,有些服务器没有


        内存


            cat /proc/meminfo


                当前系统的运行信息


                MemTotal 总内存


                MemFree


                Buffers


                Cached


            topfree / free


                -m


                total 总内存


                used 已占用


                free 空闲


                    空闲内存应当由free与cached相加取得。


                shared


                buffers


                cached 缓存空间。当存在大量I/O读写的情况下,cache会大量占用。


            vmstat


            


            


            查看挂载


                df - hP


                    可以发现目录是挂载盘,但是看不出挂载位置


                mount


                    不要跟任何参数,否则就是重新挂载


                    挂载位置、挂载方式(只读/读写等)


                    


                    cat /etc/exports 配置允许挂载的IP地址,挂载的方式等参数


            


            


            /dev/shm 共享内存


                所有在该目录下创建的文件是不占用磁盘空间的,是创建在内存空间中。


                比在磁盘中运行速度会快很多。


            内存不足


                两种内存不足情况:


                     1、堆内存不足


                     2、实际内存不足


                


        网络


            /pro/net/dev


            /sys/class/net/dev


            netstat


                路由表


            ifconfig


                查看两条机器是否从属于同一子网,应该看路由表与掩码


            cat /proc/net/dev


                查看网络配置


            cat /sys/class/net/eth0/address


            cat /sys/class/net/eth0/iflink


                1 禁用


                2 启用


            cat /sys/class/net/eth0/statistics/rx_bytes


                利用该值来监控带宽数据


                


                编写脚本监控实际带宽,关注峰值速度


                --------------------------------------------


                    while true


                    > do


                    > a=`cat /sys/class/net/eth0/statistics/rx_bytes`


                    > sleep 1


                    > b=`cat /sys/class/net/eth0/statistics/rx_bytes`


                    > echo $(($((b-a))/1024/1024)) MB/s


                    > done


                --------------------------------------------


            


        存储


            mount


            df


            查看挂载


                df - hP


                    可以发现目录是挂载盘,但是看不出挂载位置


                mount


                    不要跟任何参数,否则就是重新挂载


                    挂载位置、挂载方式(只读/读写等)


                    


                    cat /etc/exports 配置允许挂载的IP地址,挂载的方式等参数


            


            /dev/shm 共享内存


                所有在该目录下创建的文件是不占用磁盘空间的,是创建在内存空间中。


                比在磁盘中运行速度会快很多。


            内存不足


                两种内存不足情况:


                     1、堆内存不足


                     2、实际内存不足


            du


            fdisk,parted


            lv, vg, pv 相关


            


    java进程监控


        关注点:


            * 堆内存,非堆内存


            * gc频率和效率


            * 堆栈信息


        常用工具:


            (图形化)


            jconsole


            jvisualvm


            


            (命令行)


            jstat <-options> PID


                -options 查看命令


            jstack


 


            看到的东西是一样的。


            


        内存泄露:每次GC释放后的可用内存空间越来越少,直到最终没有可用空间。但该周


        期有可能很短,也有可能很长,所以需要使用脚本来收集监控数据,进行判断。


 


        


    JVM内存区域


    


        GC线程数不宜过多


        新生代配置略大一些


        


        s0+s1+eden


        old


        sgc / sgc time


        fgc / fgc count


 


1.curl 测试网络 如果不通返回(7)


2.mkdir -p (带参数递归创建多个目录) {01..12} m{01..12}


3.ls 查看当前目录列表


4.drwxr -xr -x(d表示当前 第一组 第二组:当前用户 第三组:其他用户)


ls(带l长列表信息 带d查看当前目录 ls --full -time查看时间 )


5.cat 查看文件内容(带n 加载行数) vi进行编辑


6.head (-1表示第一行 默认10行)


7.echo "123" >> wef/q.txt(追加信息到文件)


8.head -4 q.txt |tail -3(文件内容第2行到第四行)


9.free(查看内存 接参数大小) cached缓存io


10.cat /proc


cat /proc/sys/vm/drop_caches (修改0为1 清理数据)


echo "1" > /proc/sys/vm/drop_caches清理cached io缓存 不清理INODE


>   是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;


一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);


>>


这个是将输出内容追加


11.cat /proc/cpuinfo |grep processor|wc -l(查看CPU核心数|wc -l统计行数  |less查阅文件翻页)


12.top (前面系统时间 up开机时长 同uptime tasks:多少个进程 运行 睡眠 停止 僵死)


13.last(pts虚拟终端 登录信息)


14.ps -ef查看当前进程(带[]表示系统进程  grep 模糊查询 grep[-A -B -C (数字)]查询关键字上文、下文、上下文多少行--)


15.查看端口 netstat -lntp  route -n[Gateway网关 0.0.0.0全网段 IP*掩码=网关](服务起不来问题查看进程及端口监听)


16.rpm -qa |grep which(查看文件有没有安装及版本信息)


17.yum (-list 查看所有安装包 -provides fc *)


18.kill  (-l查看所有信号 -9强制杀进程 -15等待进程执行完再杀)


19.df -h(查看文件系统 /opt /boot )


du -sh 查看当前目录大小(接目录指定某个目录)


20.ll /proc/|wc -l (统计目录文件数量) ls -a


21.cp file newfile (复制) mv file newfile(移动文件,重命名)


22.ls -l|xargs df -hs(赋予参数)


 


 


vi


:/?


:s/no/yes/ g


 


sed 's/no/yes/ g' file(显示效果但不修改文件 -i)


find  路径 -maxdepth -mindepth -iname '文件名称'()


vi x删除 u撤销 dd删除 yy复制


grep (-E多个条件 -v反向筛选 -r递归 -n行数)


last |gawk '{}' $+行号第几列 0表示整行 print输出


a=10


if [[ $a = 10 ]];then echo "yes" ;else echo "no";fi  -eq


gawk语法判断需要==


 


 


1.gawk 2.sed 3.正则


打war包执行命令


jar -cvf xxxx.war ./*


当前目录下所有目录的大小以M为单位 通过大小排序


du -sm *|sort -n


通过关键字搜索日志


find log |xargs grep ""


寻找进程占用程序windows


netstat -aon|findstr "8080"


tasklist|findstr "4060"


taskkill /F /PID 4060


 


grep -E "1592" 0520.log >20170522-1.log


 


nslookup  解析网址


 


cat /etc/passwd


https://stackoverflow.com/


 


find 目录名 -type f -iname'*.pdf'|wc -l


 


find 目录名 -type f|xargs file |grep -i "PDF document"|wc -l


 


-----------------------------------------服务器监控命令----------------------------------------


 


 


iostat  查询CPU使用情况 磁盘IO情况


free -m 查看内存


mpstat -P ALL 显示每个服务器的CPU统计信息,或者每个处理的CPU统计信息


netstat 显示很多有关网络方面的信息 socket 使用情况 路由情况 网卡情况 协议情况 网络流量统计


nmon 查看处理器利用率 内存使用率 运行队列信息 磁盘IO统计 网络IO统计 换页统计


pmap 显示进程占用的内存量


ps/pstree ps告诉我们每个进程使用的内存量以及所消耗的CPU时间 pstree 则会告诉我们进程间的父子关系


sar 涵盖CPU利用信息


 


 


tail -200 /var/log/messages  |grep error


 


tracert www.baidu.com --第一个IP地址为出口网关


 


 


查看日志


sed -n'/2018-03-04 17:00:00/,/2018-03-04 19:00:00/p' server.log(查看时间段日志记录)


sed -n '60000,100000p' server.log(查看日志60000行到100000行)


 


批量替换a文本内容1001为1002


sed -i "s/1001/1002/g " a.txt


 


抓包分析


netstat -nap | grep pid  根据进程号查看端口


tcpdump -i eth0 port 35530 根据端口抓包直接在屏幕上显示


tcpdump -i eth0 port 35530 -w captured.pcap 抓取到的包的数据即在captured.pcap文件中,在windows上用wireshark软件打开即可


 


ssh -v -p port ip 测试网络联通


ssh -l user ip


ssh user@ip 


连接另外一台主机


ll -lh查看目录下文件大小


 


起别名


alias ss=ssh


 


 


 


LINUX运维常用命令_数据