当前位置:网站首页 > 2019年2月

Linux下系统如何监控服务器硬件、操作系统、应用服务和业务

物联网 0

         (2)网络设备:交换机,防火墙,路由器等,使用SNMP进行监控

                  在被监控的设备上开启SNMP代理,到时可以通过工具进行获取数据,如ZABBIX

                    1.LINUX上安装

                   #yum list |grep snmp

                   #yum install -y net-snmp net-snmp-utils

                   安装好后要配置snmpd.conf文件

                    rocommunity snmptest 172.16.20.89  #172.16.20.89表示仅这IP地址才可以来访问snmp信息

                    #systemctl start snmpd   启动SNMP ,netstat -nulp  ,netstat -ntlp 查看snmp启来的端口udp=161 ,TCP=199

                    #关于SNMP trap和OID,参见:https://blog.csdn.net/openbox2008/article/details/79958092

                    通过SNMP命令可以获取监控信息:

                    #snmpget -v2c -c snmptest 172.16.20.89 1.3.6.1.2.1.1.3.0 #1.3.6.1.2.1.1.3.0为OID

                    2.交换机上开启

                         snmp-server community public ro

         (3)定期机房巡检,查看设备运行情况

2.2 操作系统监控

       安装sysstat工具,包括了iostat、vmstat、sar、mpstat、nfsiostat、pidstat (yum install -y sysstat  #rpm -ql sysstat)

       (1)CPU (CPU调度上下文切换 ,运行队列 负载,CPU使用率)

                确定服务类型:IO密集型(如:数据库),CPU密集型(如:WEB)

              1.cpu利用率内核态: 30%和用户态:70%

              2.cpu运行队列:1~3线程 1CPU=4核 队列不超过12个

              3.上下文切换:尽量少,结合cpu利用率

           4.#top命令 (显示CPU和内存信息,M按内存使用率排序,P按CPU使用率排序,Q退出)

             CPU百分比各项指标: us:用户态  sy:内核态   ni:进程间优先级更换 id:空闲   wa:IO等待 hi:硬中断 si:软件中 st:虚拟

               5.CPU监控的各种命令:top ,vmstat , mpstat, uptime ,ps cpu进程情况,pstree 以树形结构显示进程之间的关系

       (2)内存

                1. free -m :显示内存信息

                2.vmstat  :来监控虚拟内存  #vmstat 1 10 每隔1秒共10次获取监控信息

       (3)磁盘

                 1.iostat:命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。

                 2.iotop:需要yum另外安装,yum install -y iotop

       (4)网络

                 0.ping :测试网络

                 1.netstat: -ntlp 、-nulp、-na 等显示了网络相关的信息

                 2.iftop -n:显示网络信息的类似top的程序. #yum install -y iftop

                 3.tcpdump:网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络

                 4.Wireshark:windows网络抓工具

       (5)整体性能(CPU和内存、磁盘)

                 1.top:实时显示CPU和内存、磁盘信息

                 2.mpstat:实时系统监控工具,多CPUs系统里,其不但能查看所有CPU的平均状况信息

                 3.vmstat  :来监控虚拟内存  #vmstat 1 10 每隔1秒共10次获取监控信息

                 4.sar:可用来显示 CPU 使用率、内存页数据、网络 I/O 和传输统计、进程创建活动和磁盘设备的活动详情

        (6)nmon:性能报表,IBM开源工具,二进制直接下载使用,配合EXECL表可以图形分析                

                  1.nmon下载:http://nmon.sourceforge.net/pmwiki.php

                 2.nmon analyser下载:https://sourceforge.net/projects/jnmonanalyser/
                   3.nmon analyser—生成 AIX 性能报告参见:            
                      https://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/ 

2.3 应用服务监控

      (1)Ngin监控

           首先安装nginx编译相关 :#yum install -y gcc glibc gcc-c++ pcre-devel opensshl-level

            下载nginx源码安装,编译时加上监控参数:

            #./configure --prefix=/usr/local/nginx  --user=www --group=www --with-http_stub_status_module  --with-http_ssl_module

            #make && make install

            #测试启动:#/usr/local/nginx/sbin/nginx -t 配置文件没有问题就可以启动了

            配置nginx.conf文件,增加在server段内

            location /nginx_status {
                     stub_status on;
                     access_log  off;
                     allow 192.168.2.0/24;
                     deny all;

             }

             打开浏览器访问:192.168.2.1/nginx-status

       

2.4 生产业务监控



3.使用SHELL脚本监控
       这里找到四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,那些有免费短信通知功能的邮箱如腾讯企业邮箱,163邮箱可以尝试一下,收到邮件告警后很快就能收到短信了,很方便。

(1)性能监控脚本 performance.sh

  

     #!/bin/bash
      #---------------------------------------------------------------------------------
      # 说明,Linux服务器--性能监控脚本 ,网址来源:http://bbs.51cto.com/thread-937759-1.html
      # 主要监控: 01.监控cpu系统负载 02. 监控cpu使用率 03. 监控交换分区 04. 监控磁盘空间
      # 生成的性能监控日志 $path/performance_%Y%m%d.log
      # 2017.06.25 djp
      #---------------------------------------------------------------------------------
      
      path=‘/tmp/monitor/performance‘
      
      #01.监控cpu系统负载
      { #{{{
      IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`
      cpu_num=`grep -c ‘model name‘ /proc/cpuinfo`
      count_uptime=`uptime |wc -w`
      load_15=`uptime | awk ‘{print $‘$count_uptime‘}‘`
      average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc`
      average_int=`echo $average_load | cut -f 1 -d "." alt="Linux下系统如何监控服务器硬件、操作系统、应用服务和业务">

标签:增加   oid   test   管理   network   百分比 ...