python 监控jvm脚本

释放双眼,带上耳机,听听看~!

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
65
66
67
68
69
70
71
72
73
1#!/usr/bin/env python
2#
3#
4import os
5import commands
6import re
7import sys
8
9(status1, result1) = commands.getstatusoutput("/bin/ps -ef|grep /data/program/payment/payment-channel/|/bin/grep -v grep|/bin/awk '{print $2}'")
10channel_pid = result1
11(status2, result2) = commands.getstatusoutput("sudo /data/program/jdk/bin/jstat -gcutil %s 1s 1|/bin/awk '{print $3,$4,$5,$6,$7,$8,$9}'|/bin/sed -n '2'p" %(channel_pid))
12(status3, result3) = commands.getstatusoutput("sudo /data/program/jdk/bin/jstat -gccapacity %s 1s 1|/bin/awk '{print $1,$2,$7,$8,$11,$12}'|/bin/sed -n '2'p" %(channel_pid))
13
14#格式化为列表
15result4 = result2.split(' ')
16result5 = result3.split(' ')
17
18if result5[4] == result5[5]:
19    channel_jvm_P = result4[2]
20else:
21    channel_jvm_P = ((float(result5[5])*float(result4[2])/100) / float(result5[5]))*100
22
23if result5[2] == result5[3]:
24    channel_jvm_O = result4[1]
25else:
26    channel_jvm_O = ((float(result5[2])*float(result4[1])/100) / float(result5[3]))*100
27if result5[0] == result5[1]:
28    channel_jvm_E = result4[0]
29else:
30    channel_jvm_E = ((float(result5[1])*float(result4[0])/100) / float(result5[1]))*100
31
32
33channel_jvm_YGC = result4[3]
34channel_jvm_YGCT = result4[4]
35channel_jvm_FGC = result4[5]
36channel_jvm_FGCT = result4[6]
37channel_jvm_P = channel_jvm_P 
38channel_jvm_E = channel_jvm_O
39channel_jvm_O = channel_jvm_E
40
41#channel_jvm_YGC+channel_jvm_YGCT+channel_jvm_FGC+channel_jvm_FGCT
42channel_jvm_info = channel_jvm_YGC + ' ' + channel_jvm_YGCT + ' ' + channel_jvm_FGC + ' ' +  channel_jvm_FGCT  + '\n'
43
44(status6, result6) = commands.getstatusoutput("/usr/bin/tail -1 /tmp/channel_jvm_info_test.txt|/bin/awk '{print $1,$2,$3,$4}'")
45result7 = result6.split(' ')
46channel_jvm_old_YGC = result7[0]
47channel_jvm_old_YGCT = result7[1]
48channel_jvm_old_FGC = result7[2]
49channel_jvm_old_FGCT = result7[3]
50
51files = open('/tmp/channel_jvm_info_test.txt','w+')
52files.writelines(channel_jvm_info)
53files.close()
54
55channel_jvm_YGC_value = float(channel_jvm_YGC)-float(channel_jvm_old_YGC)
56channel_jvm_YGCT_value = float(channel_jvm_YGCT)-float(channel_jvm_old_YGCT)
57channel_jvm_FGC_value = float(channel_jvm_FGC)-float(channel_jvm_old_FGC)
58channel_jvm_FGCT_value = float(channel_jvm_FGCT)-float(channel_jvm_old_FGCT)
59channel_jvm_P_value = float(channel_jvm_P)
60channel_jvm_E_value = float(channel_jvm_E)
61channel_jvm_O_value = float(channel_jvm_O)
62
63result =  'channel_jvm_info is channel_jvm_YGC=%s channel_jvm_YGCT=%0.3f channel_jvm_FGC=%s channel_jvm_FGCT=%0.3f channel_jvm_P=%0.3f  channel_jvm_E=%0.3f channel_jvm_O=%0.3f| channel_jvm_YGC=%s;5;10;0 channel_jvm_YGCT=%0.3f;0.2;0.5;0 channel_jvm_FGC=%s;1;2;0 channel_jvm_FGCT=%0.3f;0.5;1;0 channel_jvm_P=%0.3f;80;90;0 channel_jvm_E=%0.3f;80;90;0 channel_jvm_O=%0.3f;80;90;0' %(int(channel_jvm_YGC_value),float(channel_jvm_YGCT_value),int(channel_jvm_FGC_value),float(channel_jvm_FGCT_value),float(channel_jvm_P_value),float(channel_jvm_E_value),float(channel_jvm_O_value),int(channel_jvm_YGC_value),float(channel_jvm_YGCT_value),int(channel_jvm_FGC_value),float(channel_jvm_FGCT_value),float(channel_jvm_P_value),float(channel_jvm_E_value),float(channel_jvm_O_value))
64if  (channel_jvm_YGC_value > 10 and channel_jvm_E_value > 90) or channel_jvm_YGC_value > 10  or channel_jvm_YGCT_value > 0.5 or channel_jvm_FGC_value > 2 or (channel_jvm_FGC_value > 2 and channel_jvm_O_value > 90) or channel_jvm_FGCT_value > 0.5 or channel_jvm_P_value > 90:
65    print result
66    sys.exit(2)
67elif (channel_jvm_YGC_value > 5 and channel_jvm_E_value > 80) or channel_jvm_YGC_value > 5  or channel_jvm_YGCT_value > 0.2 or channel_jvm_FGC_value > 1 or (channel_jvm_FGC_value > 1 and channel_jvm_O_value > 80) or channel_jvm_FGCT_value > 0.2 or channel_jvm_P_value > 80:
68    print result
69    sys.exit(1)
70elif (channel_jvm_YGC_value < 5 and channel_jvm_E_value < 80) or channel_jvm_YGC_value < 5  or channel_jvm_YGCT_value < 0.2 or channel_jvm_FGC_value < 1 or (channel_jvm_FGC_value < 1 and channel_jvm_O_value < 80) or channel_jvm_FGCT_value < 0.2 or channel_jvm_P_value < 80:
71    print result
72    sys.exit(0)
73

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++ lambda表达式

2022-1-11 12:36:11

病毒疫情

福建省新增新型冠状病毒感染的肺炎疫情情况

2020-1-25 14:45:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索