文档章节

python 监控jvm脚本

eddy_linux
 eddy_linux
发布于 2015/11/23 21:32
字数 440
阅读 2K
收藏 3

「深度学习福利」大神带你进阶工程师,立即查看>>>

#!/usr/bin/env python
#
#
import os
import commands
import re
import sys

(status1, result1) = commands.getstatusoutput("/bin/ps -ef|grep /data/program/payment/payment-channel/|/bin/grep -v grep|/bin/awk '{print $2}'")
channel_pid = result1
(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))
(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))

#格式化为列表
result4 = result2.split(' ')
result5 = result3.split(' ')

if result5[4] == result5[5]:
    channel_jvm_P = result4[2]
else:
    channel_jvm_P = ((float(result5[5])*float(result4[2])/100) / float(result5[5]))*100

if result5[2] == result5[3]:
    channel_jvm_O = result4[1]
else:
    channel_jvm_O = ((float(result5[2])*float(result4[1])/100) / float(result5[3]))*100
if result5[0] == result5[1]:
    channel_jvm_E = result4[0]
else:
    channel_jvm_E = ((float(result5[1])*float(result4[0])/100) / float(result5[1]))*100


channel_jvm_YGC = result4[3]
channel_jvm_YGCT = result4[4]
channel_jvm_FGC = result4[5]
channel_jvm_FGCT = result4[6]
channel_jvm_P = channel_jvm_P 
channel_jvm_E = channel_jvm_O
channel_jvm_O = channel_jvm_E

#channel_jvm_YGC+channel_jvm_YGCT+channel_jvm_FGC+channel_jvm_FGCT
channel_jvm_info = channel_jvm_YGC + ' ' + channel_jvm_YGCT + ' ' + channel_jvm_FGC + ' ' +  channel_jvm_FGCT  + '\n'

(status6, result6) = commands.getstatusoutput("/usr/bin/tail -1 /tmp/channel_jvm_info_test.txt|/bin/awk '{print $1,$2,$3,$4}'")
result7 = result6.split(' ')
channel_jvm_old_YGC = result7[0]
channel_jvm_old_YGCT = result7[1]
channel_jvm_old_FGC = result7[2]
channel_jvm_old_FGCT = result7[3]

files = open('/tmp/channel_jvm_info_test.txt','w+')
files.writelines(channel_jvm_info)
files.close()

channel_jvm_YGC_value = float(channel_jvm_YGC)-float(channel_jvm_old_YGC)
channel_jvm_YGCT_value = float(channel_jvm_YGCT)-float(channel_jvm_old_YGCT)
channel_jvm_FGC_value = float(channel_jvm_FGC)-float(channel_jvm_old_FGC)
channel_jvm_FGCT_value = float(channel_jvm_FGCT)-float(channel_jvm_old_FGCT)
channel_jvm_P_value = float(channel_jvm_P)
channel_jvm_E_value = float(channel_jvm_E)
channel_jvm_O_value = float(channel_jvm_O)

result =  '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))
if  (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:
    print result
    sys.exit(2)
elif (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:
    print result
    sys.exit(1)
elif (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:
    print result
    sys.exit(0)


eddy_linux
粉丝 22
博文 135
码字总数 188789
作品 0
成都
程序员
私信 提问
加载中
请先登录后再评论。
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
在多个浏览器上运行脚本--Queen

假设你想和朋友们玩这么个游戏:你写下某个数字,然后让朋友们猜你写的是什么数字。你的朋友们将不断的给你一些猜测的数字,直到猜中为止。 现在想象你的朋友都是使用的浏览器,这个游戏就相...

匿名
2013/01/24
4.6K
1
漏洞检测工具--Peach Fuzzer

Peach是一种用Python编写的 Fuzzer。这种工具有助于发现并公开许多漏洞,并认为是黑客和安全团体中最流行的工具之一。为了利用Peach框架,必须创建Phthon脚本,脚本 中包含了在服务器上执行的...

匿名
2013/02/06
8.9K
1
研究虚拟机--Jikes RVM

Jikes研究虚拟机(Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机,其早期版本与当前版本分别在通用公共许可证(CPL)与Eclipse公共许可证(EPL)下开...

匿名
2013/02/13
1.1K
0
开源渲染器--LuxRender

LuxRender 是一款物理真实的、无偏差的开源渲染器。 LuxRender渲染是根据渲染方程来模拟光的传输,生成物理真实的图像。但LuxRender 只是一款渲染程序而不是3D建模程序,它需要其它3D程序来创...

匿名
2013/03/03
1W
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Vue中使用更复杂的插槽

Vue.js是一个易于使用的Web应用程序框架,可用于开发交互式前端应用程序。 在本文中,我将介绍命名插槽和作用域插槽。 命名插槽 有时我们的模板中会有多个插槽。为了区分每个插槽,我们必须给...

前端知否
03/28
0
0
AutoUpdater迁移到Github

一. 摘要   最近一两年在做跨平台的解决方案,使应用程序能支持Android, iOS, Windows, MacOs. Linux等操作系统,在Android, iOS上可以使用Google Play Store 和 Apple App Store 只带的自...

osc_r2ntyjuu
5分钟前
0
0
42. Photo Tourism:三维重建和图像渲染结合的典范

本文同步发表在我的微信公众号和知乎专栏“计算摄影学”,欢迎扫码关注, 一. 从PhotoSynth谢幕讲起 2017年2月6日,微软正式关闭了PhotoSynth的网站和相关服务。这可能是世界上第一个3D图像创...

WangHawk
05/28
0
0
VARCHART XGantt入门教程

甘特图(Xgantt)从1998年的第一个商用版本开始就致力于计划编制和项目管理方面控件的研究和开发,经过20多年的积累和沉淀,目前可为软件开发商和最终用户提供最顶级的计划编制和项目管理的控...

roffey
6分钟前
0
0
.NET 跨平台框架Avalonia UI: 填坑指北(一):熟悉UI操作

Avalonia 是一个跨平台的 .NET UI 框架,支持 Windows、Linux、Mac OSX... (以及Android IOS soon..) 本篇主要介绍Avalonia开发过程和Linux适配环节的几个疑难点.. avalonia for vs安装和.de...

osc_o9qsdhyv
6分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部