2015-08-11 14:00:54 wyg7839303 阅读数 1060
  • Linux集群

    本套视频内容丰富,分为集群化构建、缓存、存储、监控、安全、装机六大维度。服务构建步骤详细,手把手带着你上路;课后辅助资料全面,附录详细代码标注; 深度技术讲解,逐步为你剖析底层原理…… 集群化阶段,讲解LVS与keepalived结合构建企业级负载调度集群,可供以万计用户同时访问;缓存阶段,讲解大量生产环境经典业务案例,让你轻松解决压力难点;存储阶段,糅合讲解 NFS、MFS、ISCSI 三类企业级存储技术,使你从容面对各类存储业务需求,最多可达PB级别!监控阶段,“上阵父子兵”,Cacti、Nagios、Zabbix,一个都不能少!轻松搞定!装机阶段,PXE、Cobbler混合双打,多个机房多种配置轻松搞定……

    1018 人正在学习 去看看 佟刚

在获取cpu mem load过程中最重要的是需要注意下被监控的服务器是否开启了snmp协议,以及snmp协议中是否设置了允许得到cpu  mem 和 load的信息。

具体如下,红色部分是snmpd.conf中需要改动的部分

# Make at least  snmpwalk -v 1 localhost -c public system fast again.
#       name           incl/excl     subtree         mask(optional)
view    systemview    included   .1
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1


#  Make sure mountd is running
proc mountd
#  Make sure there are no more than 4 ntalkds running, but 0 is ok too.
proc ntalkd 4
#  Make sure at least one sendmail, but less than or equal to 10 are running.
proc sendmail 10 1


# Check the / partition and make sure it contains at least 10 megs.
disk / 10000

# Check for loads:
load 12 14 14


代码部分如下:

#-*- coding: utf-8 -*- 
'''
Created on 2015年8月10日

@author: wuyg1
'''
#!/usr/bin/python
import os
class Server:
    def getAllitems(self, host, oid):
        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('\n')[:-1]
        #sn1 = os.popen('snmpwalk -v 2c -c public ' + host).read().split('\n')[:-1]
        return sn1
                                                                                
    def getSwapTotal(self, host):
        swap_total = self.getAllitems(host, 'UCD-SNMP-MIB::memTotalSwap.0')[0].split(' ')[3]
        return swap_total
                                                                                
    def getSwapUsed(self, host):
        swap_avail = self.getAllitems(host, 'UCD-SNMP-MIB::memAvailSwap.0')[0].split(' ')[3]
        swap_total = self.getSwapTotal(host)
        swap_used = str(round(((float(swap_total)-float(swap_avail))/float(swap_total))*100 ,2)) + '%'
        return swap_used
                                                                                
    def getMemTotal(self, host):
        mem_total = self.getAllitems(host, 'UCD-SNMP-MIB::memTotalReal.0')[0].split(' ')[3]
        return mem_total
                                                                                
    def getMemUsed(self, host):
        mem_total = self.getMemTotal(host)
        mem_avail = self.getAllitems(host, 'UCD-SNMP-MIB::memAvailReal.0')[0].split(' ')[3]
#         print type(mem_total),type(mem_avail)
#         print mem_total,mem_avail
        mem_used = str(round(((float(mem_total)-float(mem_avail))/float(mem_total))*100 ,2)) + '%'
        return mem_used
    def getLoadInfo(self, host):
        load_info = self.getAllitems(host, 'UCD-SNMP-MIB::laLoad')
#         print load_info
        return load_info
    
    def getCpuUsed(self, host):
        cpu_info = self.getAllitems(host, 'UCD-SNMP-MIB::ssCpuIdle')
        return cpu_info
                                                                            
if __name__ == '__main__':
        ServerOS = Server()
        hosts = ['10.90.1.41','10.90.1.60']
        print "Monitoring Memory Usage"
        for host in hosts:
                mem_used = ServerOS.getMemUsed(host)
                swap_used = ServerOS.getSwapUsed(host)
                
                load_info = ServerOS.getLoadInfo(host)
                
                cpu_info = ServerOS.getCpuUsed(host)
                print '==========' + host + '=========='
                print 'Mem_Used = %-15s   Swap_Used = %-15s' % (mem_used, swap_used)
                print load_info
                print 'cpu_Used='+cpu_info


2014-11-14 11:23:49 aubdiy 阅读数 81
  • Linux集群

    本套视频内容丰富,分为集群化构建、缓存、存储、监控、安全、装机六大维度。服务构建步骤详细,手把手带着你上路;课后辅助资料全面,附录详细代码标注; 深度技术讲解,逐步为你剖析底层原理…… 集群化阶段,讲解LVS与keepalived结合构建企业级负载调度集群,可供以万计用户同时访问;缓存阶段,讲解大量生产环境经典业务案例,让你轻松解决压力难点;存储阶段,糅合讲解 NFS、MFS、ISCSI 三类企业级存储技术,使你从容面对各类存储业务需求,最多可达PB级别!监控阶段,“上阵父子兵”,Cacti、Nagios、Zabbix,一个都不能少!轻松搞定!装机阶段,PXE、Cobbler混合双打,多个机房多种配置轻松搞定……

    1018 人正在学习 去看看 佟刚

linux常用命令备忘系列

Linux日志分析常用命令-备忘
Linux集群监控常用命令-备忘
 

集群监控常用命令:

 

1.load average

top

uptime

2.CPU利用率

top 

1多核CPU查看

Shift+H  用线程查看

-p 指定查看的进程

top | grep Cpu

mpstat -p ALL

3.磁盘剩余空间

df

-h 按单位格式输出

du

-h 按单位格式输出

4.网络traffic

sar -n DEV 1 1  

-n 汇报网络状况

DEV 查看各个网卡网络流量

n 间隔秒数

n 总共取几次

5.磁盘I/O

iostat -d -k

6.内存使用

free 

-m 以MB为单位

-g 以GB为单位

vmstat [-V] [-n] [delay [count]]

-V表示打印出版本信息

-n表示在周期性循环输出时,输出的头部信息仅显示一次;

delay是两次输出之间的延迟时间;

count是指按照这个时间间隔统计的次数。

对于vmstat输出各字段的含义,可运行man vmstat查看

2019-10-29 20:19:05 weixin_43968026 阅读数 4
  • Linux集群

    本套视频内容丰富,分为集群化构建、缓存、存储、监控、安全、装机六大维度。服务构建步骤详细,手把手带着你上路;课后辅助资料全面,附录详细代码标注; 深度技术讲解,逐步为你剖析底层原理…… 集群化阶段,讲解LVS与keepalived结合构建企业级负载调度集群,可供以万计用户同时访问;缓存阶段,讲解大量生产环境经典业务案例,让你轻松解决压力难点;存储阶段,糅合讲解 NFS、MFS、ISCSI 三类企业级存储技术,使你从容面对各类存储业务需求,最多可达PB级别!监控阶段,“上阵父子兵”,Cacti、Nagios、Zabbix,一个都不能少!轻松搞定!装机阶段,PXE、Cobbler混合双打,多个机房多种配置轻松搞定……

    1018 人正在学习 去看看 佟刚

主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)

科学群集 、高性能集群(High performance cluster,HPC)

它是利用一个集群中的多台机器共同完成同一件任务,使得完成任务的速度和可靠性都远远高于单机运行的效果。弥补了单机性能上的不足。该集群在天气预报、环境监控等数据量大,计算复杂的环境中应用比较多。

负载均衡集群(Load balance cluster, LBC)

它是利用一个集群中的多台单机,完成许多并行的小的工作。一般情况下,如果一个应用使用的人多了,那么用户请求的相应时间就会增大,机器的性能也会受到影响,如果使用负载均衡集群,那么集群中任意一台机器都能相应用户的请求,这样集群就会在用户发出服务请求之后,选择当时负载最小,能够提供最好的服务的这台机器来接受请求并相应,这样就可用用集群来增加系统的可用性和稳定性。这类集群在网站中使用较多。

高可用性集群(High availability cluster,HAC)

它是利用集群中系统 的冗余,当系统中某台机器发生损坏的时候,其他后备的机器可以迅速的接替它来启动服务,等待故障机的维修和返回。最大限度的保证集群中服务的可用性。这类系统一般在银行,电信服务这类对系统可靠性有高的要求的领域有着广泛的应用。

负载均衡系统

负载均衡又有DNS负载均衡(比较常用)、IP负载均衡、反向代理负载均衡等,也就是在集群中有服务器A、B、C,它们都是互不影响,互不相干的,任何一台的机器宕了,都不会影响其他机器的运行,当用户来一个请求,有负载均衡器的算法决定由哪台机器来处理,假如你的算法是采用round算法,有用户a、 b、c,那么分别由服务器A、B、C来处理;.

分布式和集群的区别

分布式是指将不同的业务分布在不同的地方。
而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。
而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

集群

集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。

负载均衡

负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提 供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。

集群和负载均衡的特点

在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。集群系统 (Cluster)主要解决下面几个问题:高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过 去,以实现对用户的不间断服务。高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分 析,化学分析等。负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

2015-07-29 22:16:38 supermanfei 阅读数 830
  • Linux集群

    本套视频内容丰富,分为集群化构建、缓存、存储、监控、安全、装机六大维度。服务构建步骤详细,手把手带着你上路;课后辅助资料全面,附录详细代码标注; 深度技术讲解,逐步为你剖析底层原理…… 集群化阶段,讲解LVS与keepalived结合构建企业级负载调度集群,可供以万计用户同时访问;缓存阶段,讲解大量生产环境经典业务案例,让你轻松解决压力难点;存储阶段,糅合讲解 NFS、MFS、ISCSI 三类企业级存储技术,使你从容面对各类存储业务需求,最多可达PB级别!监控阶段,“上阵父子兵”,Cacti、Nagios、Zabbix,一个都不能少!轻松搞定!装机阶段,PXE、Cobbler混合双打,多个机房多种配置轻松搞定……

    1018 人正在学习 去看看 佟刚

系统运行的繁忙程度、健康状态,反映在一系列的运行期指标上,不管是CPU负载过高,磁盘I/O过于频繁,或者内存使用过多,导致频繁Full GC,抑或是请求gqs过高,系统不堪重负,或网络过于繁忙、丢包率上升等情况。

1、load

在linux系统中,可以通过top和uptime命令来查看系统的load值。

系统的load被定义为特定时间间隔内运行队列中的平均线程数,如果一个线程满足以下条件,该线程就会处于运行队列中:

1、没有处于I/O等待状态

2、没有主动进入等待状态,也就是没有调用wait操作;

3、没有被终止。

 每个CPU的核都维护了一个运行队列,系统的load主要由运行队列来决定。假设一个CPU有8个核,运行的应用程序启动了16个线程,并且这16个线程都处于运行状态,那么每个cpu就是2个线程在运行,假设这种情况维持了1分钟,那么这1分钟的系统load值就是2.

load值越大,就意味着系统的cpu越繁忙,这样线程运行完以后等待操作系统分配下一个时间片段的时间也就越长。一般来说,只要每个cpu的活动线程数不大于3,我们认为它的负载是正常的,如果每个cpu的线程数大于5,则表示当前系统的负载已经非常高了,要想办法降低负载,以便影响系统的响应速度。

使用uptime查看系统的load:

uptime
 03:37:27 up 34 days, 17:11,  2 users,  load average: 0.00, 0.01, 0.05

load average后面跟的三个值分别表示过去1分钟,5分钟,15分钟内系统的load值。

2、cpu利用率

可以通过top命令来查看Linux系统的cpu消耗情况:top | grep Cpu

[ec2-user@ip-172-31-17-239 ~]$ top | grep Cpu
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu(s):  0.3%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.3%hi,  0.0%si,  0.0%st
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
各个列的含义:us(user time),表示cpu执行用户进程所占用的时间,通常情况下希望us的占比越高越好

sy(system time)即sy所对应的列,表示cpu在内核状态所花费的时间,sy的占比较高,通常意味着系统在某些方面设计的不合理,比如频繁的系统调用导致的用户态与内核态的频繁切换。

ni(nice time)表示系统在调整进程优先级的时候所花费的时间。

id(idle time)表示能够处于空闲期,等待进程进行,这个过程所占用的时间。当然,我们希望id的占比越低越好。

wa(wait time)表示cpu在等待I/O操作所花费的时间,系统不应花费大量的时间来进行等待,否则便表示可能有某个地方设计不合理。

hi(hard ira time)表示系统处理硬件中断所占用的时间。

si(soft irq time)表示系统处理软件中断所占用的时间。

st(steal time)是在硬件虚拟化开始流行后操作系统新增的一列,表示被强制等待虚拟cpu的时间,此时hypervisor正在为另一个虚拟处理器服务。如果st占比较高,则表示当前虚拟机与该宿主上的其他虚拟机间的cpu争用较为频繁。

 

对于多个或者多核cpu的情况,常常需要查看每个cpu的利用情况,此时可以按1,便可以查看到每个核cpu的利用率:

Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu0  :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st

 

默认情况下top是按照进程来显示cpu的消耗情况的,按shift+H,可以按照线程来查看cpu的消耗情况,这一点对于java来说很有用。


[ec2-user@ip-172-31-17-239 ~]$ top -p 7028
top - 14:17:32 up 87 days,  3:51,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  12 total,   0 running,  12 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    606920k total,   566432k used,    40488k free,   138404k buffers
Swap:        0k total,        0k used,        0k free,   161496k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7042 root      20   0 1218m 110m 5912 S 99.9 18.7  16:27.69 java
 7028 root      20   0 1218m 110m 5912 S  0.0 18.7   0:00.00 java
 7029 root      20   0 1218m 110m 5912 S  0.0 18.7   0:01.28 java
 7031 root      20   0 1218m 110m 5912 S  0.0 18.7   1:30.82 java
 7032 root      20   0 1218m 110m 5912 S  0.0 18.7   0:00.03 java

-p选项可以指定查看的进程。

2019-11-05 10:24:37 yitian_z 阅读数 6
  • Linux集群

    本套视频内容丰富,分为集群化构建、缓存、存储、监控、安全、装机六大维度。服务构建步骤详细,手把手带着你上路;课后辅助资料全面,附录详细代码标注; 深度技术讲解,逐步为你剖析底层原理…… 集群化阶段,讲解LVS与keepalived结合构建企业级负载调度集群,可供以万计用户同时访问;缓存阶段,讲解大量生产环境经典业务案例,让你轻松解决压力难点;存储阶段,糅合讲解 NFS、MFS、ISCSI 三类企业级存储技术,使你从容面对各类存储业务需求,最多可达PB级别!监控阶段,“上阵父子兵”,Cacti、Nagios、Zabbix,一个都不能少!轻松搞定!装机阶段,PXE、Cobbler混合双打,多个机房多种配置轻松搞定……

    1018 人正在学习 去看看 佟刚

CPU Load(负载)

参考:

集群监控主要指标(load、CPU利用率、磁盘剩余空间、磁盘IO、内存使用)

CPU利用率

linux系统性能监控–CPU利用率

Linux下CPU利用率和CPU负载(附加代码实现)

RAM

 

Throughput

 

Complete Latency

 

构建start-monitor.sh和stop-monitor.sh监控脚本

使用一个shell脚本调用另外两个shell脚本的方法参考:

使用shell脚本启动和停止运行java程序

一个jar包中包含多个main主程序,使用shell指定运行一个main主程序:

使用java实现CPU和内存占用率的参考:

Ganglia

阅读数 1274

没有更多推荐了,返回首页