文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python监控系统资源

2023-01-31 05:59

关注

监控网卡流量

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

#!/usr/bin/python

import re

import os

#get SNMP-MIB2 of the devices

def getAllitems(host,oid):

        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('\n')[:-1]

        return sn1

                                                                                          

#get network device

def getDevices(host):

        device_mib = getAllitems(host,'RFC1213-MIB::ifDescr')

        device_list = []

        for item in device_mib:

                if re.search('eth',item):

                        device_list.append(item.split(':')[3].strip())

        return device_list

                                                                                          

#get network date

def getDate(host,oid):

        date_mib = getAllitems(host,oid)[1:]

        date = []

        for item in date_mib:

                byte = float(item.split(':')[3].strip())

                date.append(str(round(byte/1024,2)) + ' KB')

        return date

                                                                                          

if __name__ == '__main__':

        hosts = ['192.168.30.111','192.168.30.112']

        for host in hosts:

                device_list = getDevices(host)

                                                                                          

                inside = getDate(host,'IF-MIB::ifInOctets')

                outside = getDate(host,'IF-MIB::ifOutOctets')

                                                                                          

                print '==========' + host + '=========='

                for in range(len(inside)):

                        print '%s : RX: %-15s   TX: %s ' % (device_list[i], inside[i], outside[i])

                print


监控内存(swap)使用率

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#!/usr/bin/python

import os

def getAllitems(host, oid):

        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('\n')[:-1]

        return sn1

                                                                            

def getSwapTotal(host):

        swap_total = getAllitems(host, 'UCD-SNMP-MIB::memTotalSwap.0')[0].split(' ')[3]

        return swap_total

                                                                            

def getSwapUsed(host):

        swap_avail = getAllitems(host, 'UCD-SNMP-MIB::memAvailSwap.0')[0].split(' ')[3]

        swap_total = getSwapTotal(host)

        swap_used = str(round(((float(swap_total)-float(swap_avail))/float(swap_total))*100 ,2)) + '%'

        return swap_used

                                                                            

def getMemTotal(host):

        mem_total = getAllitems(host, 'UCD-SNMP-MIB::memTotalReal.0')[0].split(' ')[3]

        return mem_total

                                                                            

def getMemUsed(host):

        mem_total = getMemTotal(host)

        mem_avail = getAllitems(host, 'UCD-SNMP-MIB::memAvailReal.0')[0].split(' ')[3]

        mem_used = str(round(((float(mem_total)-float(mem_avail))/float(mem_total))*100 ,2)) + '%'

        return mem_used

                                                                            

if __name__ == '__main__':

        hosts = ['192.168.30.111','192.168.30.112']

        print "Monitoring Memory Usage"

        for host in hosts:

                mem_used = getMemUsed(host)

                swap_used = getSwapUsed(host)

                print '==========' + host + '=========='

                print 'Mem_Used = %-15s   Swap_Used = %-15s' % (mem_used, swap_used)

                print


监控系统负载

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#!/usr/bin/python

import os

def getAllitems(host, oid):

        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('\n')

        return sn1

                                                                     

def getload(host,loid):

        load_oids = '1.3.6.1.4.1.2021.10.1.3.' + str(loid)

        return getAllitems(host,load_oids)[0].split(':')[3]

                                                                     

if __name__ == '__main__':

        hosts = ['192.168.30.111','192.168.30.112']

        #check_system_load

        print '==============System Load=============='

        for host in hosts:

                load1 = getload(host, 1)

                load10 = getload(host, 2)

                load15 = getload(host, 3)

                print '%s load(1min): %s ,load(10min): %s ,load(15min): %s' % (host,load1,load10,load15)


监控CPU

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

#!/usr/bin/python

import os

def getAllitems(host, oid):

        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid + '|grep Raw|grep Cpu|grep -v Kernel').read().split('\n')[:-1]

        return sn1

                                                                

def getDate(host):

        items = getAllitems(host, '.1.3.6.1.4.1.2021.11')

                                                                

        date = []

        rate = []

        cpu_total = 0

        #us = us+ni, sy = sy + irq + sirq

        for item in items:

                float_item = float(item.split(' ')[3])

                cpu_total += float_item

                if item == items[0]:

                        date.append(float(item.split(' ')[3]) + float(items[1].split(' ')[3]))

                elif item == item[2]:

                        date.append(float(item.split(' ')[3+ items[5].split(' ')[3+ items[6].split(' ')[3]))

                else:

                        date.append(float_item)

                                                                

        #calculate cpu usage percentage

        for item in date:

                rate.append((item/cpu_total)*100)

                                                                

        mean = ['%us','%ni','%sy','%id','%wa','%cpu_irq','%cpu_sIRQ']

                                                                

        #calculate cpu usage percentage

        result = map(None,rate,mean)

        return result

                                                                

if __name__ == '__main__':

        hosts = ['192.168.30.111','192.168.30.112']

        for host in hosts:

                print '==========' + host + '=========='

                result = getDate(host)

                print 'Cpu(s)',

                #print result

                for in range(5):

                        print ' %.2f%s' % (result[i][0],result[i][1]),

                print

                print

监控磁盘

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

#!/usr/bin/python

import re

import os

def getAllitems(host,oid):

        sn1 = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('\n')[:-1]

        return sn1

                                                             

def getDate(source,newitem):

        for item in source[5:]:

                newitem.append(item.split(':')[3].strip())

        return newitem

                                                             

def getRealDate(item1,item2,listname):

        for in range(len(item1)):

                listname.append(int(item1[i])*int(item2[i])/1024)

        return listname

                                                             

def caculateDiskUsedRate(host):

        hrStorageDescr = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageDescr')

        hrStorageUsed = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageUsed')

        hrStorageSize = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageSize')

        hrStorageAllocationUnits = getAllitems(host, 'HOST-RESOURCES-MIB::hrStorageAllocationUnits')

                                                             

        disk_list = []

        hrsused = []

        hrsize = []

        hrsaunits = []

                                                             

        #get disk_list

        for item in hrStorageDescr:

                if re.search('/',item):

                        disk_list.append(item.split(':')[3])

        #print disk_list      

                                                             

        getDate(hrStorageUsed,hrsused)

        getDate(hrStorageSize,hrsize)

        #print getDate(hrStorageAllocationUnits,hrsaunits)

                                                             

        #get hrstorageAllocationUnits

        for item in hrStorageAllocationUnits[5:]:

                hrsaunits.append(item.split(':')[3].strip().split(' ')[0])

        #caculate the result

        #disk_used = hrStorageUsed * hrStorageAllocationUnits /1024 (KB)

        disk_used = []

        total_size = []

        disk_used = getRealDate(hrsused,hrsaunits,disk_used)

        total_size = getRealDate(hrsize,hrsaunits,total_size)

                                                             

        diskused_rate = []

        for in range(len(disk_used)):

                diskused_rate.append(str(round((float(disk_used[i])/float(total_size[i])*100), 2)) + '%')

                                                             

        return diskused_rate,disk_list

                                                             

if __name__ == '__main__':

        hosts = ['192.168.30.111','192.168.30.112']

        for host in hosts:

                result = caculateDiskUsedRate(host)

                diskused_rate = result[0]

                partition = result[1]

                print "==========",host,'=========='

                for in range(len(diskused_rate)):

                        print '%-20s used: %s' % (partition[i],diskused_rate[i])

                print


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯