编写远程监控机器的内存的插件

编写远程监控机器的CPU的插件 昨天,将了编写内存的nagios监控插件,今天继续讲CPU使用率监测。 CPU监测有top命令和vmstat.但是经过测试支持远程执行的只有vmstat。 运行效果如下: ./ssh_remote_cpu -H 172.26.128.82 -U root -P smgadmin@123! -w 80 -c 90 OK!CPU utilization percentage : 1% | avg 阅读详情

  最近在公司一直做监控。发现有不少被监控服务器没有安装SNMP,也不允许安装NRPE插件。但是给予了SSH登陆权限。因此通过执行远程命令获取监控的内存变化,是个好办法.

第一步安装EXPECT,编写EXPECT脚本,用来模拟SSH登录,执行远程命令。

#!/usr/bin/expect -f
#Program:
#       the script check the Cisco switch's status ,the username and passwd as parameters to the scripts!
#History:
#       2014/11/25   hlszyc
set timeout 60
set IP       [lindex $argv 0]
set Username [lindex $argv 1]
set Password [lindex $argv 2]
set Command  [lindex $argv 3]
spawn ssh $Username@$IP $Command
expect "*password:"
send "$Password\r"
#expect "*#"
#send "exit\r"
expect eof
exit
~                                                                                                                                                                                                                         

第二步编写SHELL脚本。其中有两个只是点。比较大小和用AWK进行除法计算。

#!/bin/bash

#ssh_remoteMemory
#History:
#   by xzy 2017/04/18

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3


usage()
{
    printf "function:\n
           CH_ComputerRoomEnviroment file\n
           [host IP ] -H [Usename] -U ... \n
           Usage Option:\n
           -H:   host's web IP\n
           -U:   Username\n
           -P:   Password\n
           -w:   WarnValue\n
           -c:   CriticalValue\n"
    exit $UNKNOWN
}


compare_number(){

   expr $1 \> $2

}

awk_sum(){


#  result="echo | awk '{print ($1/$2)*100}'"
#  echo $result
#  exit
#  echo $result
#  awk 'BEGIN{printf"%.2f%\n",('$1'/'$2')*100}'
   awk 'BEGIN{printf"%.2f\n",'$1'/'$2'}'

}

while getopts :H:U:P:w:c:h Parm
do
    case $Parm in
       H)IP=$OPTARG
         ;;
       U)UserName=$OPTARG
         ;;
       P)PassWord=$OPTARG
         ;;
       w)WarnValue=$OPTARG
         ;;
       c)CriticalValue=$OPTARG
         ;;
       h | ?)
         usage
         ;;
    esac
done







#echo 'Warn:'$WarnValue
#echo 'Critical:'$CriticalValue

#exit

phymem=`/usr/lib/nagios/plugins/ssh2.exp $IP $UserName $PassWord free | grep "Mem:" |awk '{print $2}'`
phymemused=`/usr/lib/nagios/plugins/ssh2.exp $IP $UserName $PassWord free | grep 'Mem:' | awk '{print $3}'`

#echo $phymem
#echo $phymemused

mem_per=$(awk_sum $phymemused $phymem)

swapmem=`/usr/lib/nagios/plugins/ssh2.exp $IP $UserName $PassWord free | grep "Swap:" |awk '{print $2}'`
swapmemused=`/usr/lib/nagios/plugins/ssh2.exp $IP $UserName $PassWord free | grep 'Swap:' | awk '{print $3}'`

swapmemfree=`/usr/lib/nagios/plugins/ssh2.exp $IP $UserName $PassWord free | grep 'Swap:' | awk '{print $4}'`

#echo $swapmem
#echo $swapmemused
#echo $swapmemfree

#set swap warn value
swap_warn=0.20
#set swap critical value
swap_critical=0.10

swap_per=$(awk_sum $swapmemfree $swapmem)

#echo 'swap:'$swap_per


#exit

if (($swapmemused != 0)); then



   swap_now0=`expr $swap_per \> $swap_critical`

   swap_now=`expr $swap_per \> $swap_warn`


  if (($swap_now == 0)); then
    echo 'WARN!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
    exit $WARNING
  fi

  if (($swap_now0 == 0)); then
    echo 'Critical!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
    exit $CRITICAL
  fi

fi


mem_now0=$(compare_number $mem_per $CriticalValue)

#echo $mem_now0


if [ $mem_now0 == 1 ]; then

  echo 'Critical!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
  exit $CRITICAL
fi

mem_now=$(compare_number $mem_per $WarnValue)


if [ $mem_now == 1 ]; then
  echo 'Warn!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
  exit $WARNING
fi



mem_now0=$(compare_number $mem_per $CriticalValue)


#if [ "$mem_now0"="1" ]; then

#  echo 'Critical!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
#  exit $CRITICAL
#fi



echo 'OK!'$phymemused'KB /'$phymem'KB ,Total memory used : '$mem_per' , swap free '$swap_per' |value='$phymemused'KB;'$WarnValue';'$CriticalValue';0;1'
exit $OK
第三步执行

[root@fan-central plugins]#  ./ssh_remote_memory -H 172.26.128.85 -U root -P smgadmin -w 0.98 -c 0.99
OK!2971980KB /3106792KB ,Total memory used : 0.96 , swap free 1.00 |value=2971980KB;0.98;0.99;0;1

第四部通过centreon加入Nagios监控系统。

然后重启Nagios服务。



如何开启jvisualvm远程监控 引子 系统出现性能问题一筹莫展? 引入一堆框架和库之后,不知道到底开了多少线程? 内存飙升,甚至OOM,但是不知道内存耗费在了哪里? 维护旧系统,使用三方脚本,不知道对方到底设置了哪些参数? 耗时统计只局限在自己的代码里,对SDK中方法耗时无从分析? 性能分析第一步——采集指标 监控性能的工具 命令行工具:jstat、jcmd、jmap…… 可视化工具:jvisualvm、JMC(Java Mission Control)、JProfiler 运维监控:Prometheus 如何开启jvisualv 阅读详情

相关推荐

VisualVM实战指南:从插件安装到远程JVM监控

本文详细介绍了VisualVM工具从插件安装到远程JVM监控的全流程实战指南。作为JVM性能分析利器,VisualVM能有效检测内存泄漏、线程死锁等问题,提升Java应用性能。文章包含插件安装技巧、本地监控实战、远程JMX连接配置及高级性能分析案例,帮助开发者快速掌握这一必备工具。

weixin_42549451的博客 312

游戏修改的常用方法之一——远程读写内存(asm源码详注)

作 者: 王仁军时 间: 2008-06-15,20:25链 接: http://bbs.pediy.com/showthread.php?t=66624comment *-----------------------------------------------------------------------  前几日,几个朋友在局域网中玩红警对战,常因游戏中无钱而使战

2921

VisualVM插件安装避坑指南:从下载到配置的完整流程(附常见问题解决)

本文提供了一份详尽的VisualVM插件安装与配置避坑指南。从正确选择插件中心、核心插件选型,到离线安装与常见问题解决,手把手教你搭建稳定的监控环境。文章还深入介绍了如何利用插件进行内存、线程分析,并探讨了安全的远程监控配置方案,是Java开发者提升性能调优效率的实用手册。

weixin_28340315的博客 694

RDMA(远程直接内存访问)技术浅析

远程直接内存访问(即Remote Direct Memory Access)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。

姜小白的博客 5466

IEC 62056协议栈深度拆解:从物理层握手到应用层AARQ,一次完整的DLMS通讯抓包分析

本文深入解析IEC 62056协议栈(DLMS/COSEM)的全流程通信机制,从物理层握手到应用层AARQ建立,提供详细的抓包分析和实战指南。涵盖RS-485配置、HDLC帧解析、OBIS编码解读等核心内容,并附有常见故障排查技巧,助力开发者高效实现电能表数据采集。

weixin_29182481的博客 313

多模态数据集对比:MicroLens、PixelRec和Amazon在电商推荐中的表现差异

本文深入对比了三大主流多模态数据集MicroLens、PixelRec和Amazon在电商推荐中的表现差异。通过实际测试数据,分析了这些数据集在冷启动处理、模态融合、稀疏性挑战等关键场景下的真实表现,为算法工程师和研究员提供实用指南。特别关注多模态数据集的选择对推荐系统效果的影响,帮助开发者优化模型性能。

weixin_28717939的博客 420

使用JConsole监控进程、线程、内存、cpu、类情况

Jconsole简介: Jconsole是一个JMX兼容的监视工具。它使用Java虚拟机的JMX机制来提供运行在Java平台的应用程序的性能与资源耗费信息。 监控进程使用方法如下: 由于JConsole监控需要使用JMX代理技术,因此在启动应用程序的参数中添加以下几个参数: -Djava.rmi.server.hostname=192.168.1.80 -Dcom.sun.manag

冷月宫主的专栏 2273

Linux命令行入门:从零掌握服务器运维与Shell脚本基础

在信息化时代,操作系统是数字世界的基石,而终端命令行则是高效驾驭服务器的核心技能。无论是软件部署、服务监控还是故障排查,掌握基于Shell的指令操作都能大幅提升工程效率。从最基础的文件目录管理、文本处理,到权限控制、进程监控与网络调试,命令行提供了一套强大且可自动化的操作范式。尤其对于运维工程师和开发者而言,理解管道、重定向以及脚本化任务,意味着将重复劳动转化为可复用的自动化流程。本文从环境准备讲起,系统梳理常用Linux命令的实际场景与输出验证,并延伸至Shell脚本编写与定时任务,帮助初学者快速建立从操

weixin_30522983的博客 258

Java代码实现获取安卓手机指定App的流量、CPU和内存占用信息

原理:安卓手机的系统性能信息都写在系统的文件中,通过安卓SDK源生命令来获取这些信息。import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.text.DecimalFormat;public cl

SailWu的自动化测试技术博客 8171

洛谷 P5736 【深基7.例2】质数筛

题目描述 输入 n(n\le100)n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 无 输出格式 无 输入输出样例 输入 #1 复制 5 3 4 5 6 7 输出 #1 复制 3 5 7 板子题,使用一下线性筛 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using n

qq_37978559的博客 1118

MT6771 Android13 背光曲线调试与光感数据校准实战

本文详细介绍了MT6771平台在Android 13系统上进行背光曲线调试与光感数据校准的实战经验。针对高亮度环境下背光误调节问题,深入分析了光感数据上报机制,并提供了驱动层配置修改、背光曲线优化及常见问题解决方案,帮助开发者快速定位并解决类似问题。

moon9的博客 288

通过visualVM远程监控java进程

visualVM简介及配置,远程监控java进程

pursuitK的博客 2558

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3496

使用visualvm远程监控服务器状态(图形化界面)

使用visualvm远程监控服务器状态(图形化界面) 用途: 查看当前tomcatcup、线程数、堆占用情况 查看当前所有线程,如果后台线程卡,可以参考 查看当前GC情况 可对当栈、堆进行抽样,检查内存溢出等问题 堆快照: 服务器执行命令 jmap -dump:format=b,file=快照存储路径 进程ID (也可以在jvm加上参数XX:+HeapDumpOnOutofMemoryError,OOM时自动存储快照) 载入快照 将快照下载到本地,并选择该快照,打开

u013559614的博客 2832

从 Material Requirements Planning 看 SAP 物料计划的底层控制逻辑

文章摘要:SAP中的MRP(物料需求计划)不仅仅是运行一个程序(如MD01N),其关键在于主数据和组织层级的正确配置。MRP的核心是解决"何时需要多少物料"的问题,涉及采购、生产、库存等多种供应来源。物料主数据的MRP视图必须在组织层级(如工厂、存储位置)下维护,不同层级的计划逻辑可能完全不同。S/4HANA更强调MRP Area作为细分计划单位,取代传统存储位置MRP。实施时需注意MRP Profile的合理使用,避免批量错误,并特别关注物料生命周期管理(如停用物料和替代件),这些因素共同决定了MRP能否

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1417

QGIS安装与使用教程

QGIS安装与使用教程

weixin_46713695的博客 2万+

远程监控JVM--VisualVM

原文转载至:http://lixjluck.iteye.com/blog/516447   对于使用命令行远程监控jvm太麻烦?那可以试试sun提供的VisualVM,jdk1.6自带了,可以到bin目录下找到它。          什么也不说了,直接运行此exe,打开界面如下:     (图1)          (上图1左边的数可以看到,VisualVM分为

laven90的专栏 655

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java VisualVM使用

工具所在位置:windows下jdk安装路径内,如 C:\Program Files\Java\jdk1.8.0_20\bin\ jvisualvm.exe 双击执行; 效果图如下: 可以看到我本机有一个tomcat运行的监控 VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等。 如何安装插件: 1、从主菜单中选择“工具”>...

java小菜的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Jstatd方式远程监控Linux下 JVM运行情况

 最近一个项目部署在服务器上运行时出现了问题,经过排查发现是java内存溢出的问题,所以为了实时监控服务器java内存的情况,需要远程查看服务器上JVM内存的一些情况。另外服务器系统是CentOS 7 最小安装,没有图形化界面,不能采用vnc远程。所以只能通过VisualVM或者JConsole来远程JVM。 介绍两个jdk1.8自带的可视化监视工具 Jconsole: Java 6.x采用J...

潜行者 3309

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VisualVM远程监控Java应用实战:JMX与jstatd双方案配置避坑指南

本文详细解析了使用VisualVM进行Java应用远程监控的两种核心方案:JMX与jstatd。JMX提供CPU、内存、线程等全方位监控,而jstatd则专注于支持Visual GC插件进行深度内存分析。文章提供了从基础配置、安全加固到生产环境避坑的实战指南,并探讨了在容器化等高级场景下的最佳实践,帮助开发者构建稳定可靠的Java性能监控体系。

ik6789012的博客 428

java visualvm远程监控_Java性能调优学习(五)-基于JVisualVM的可视化监控

简单回顾上一节我们讲了JStack的详细使用,今天为大家讲了一个非常好用的可视化监控工具-JVisualVM。JVisualVMVisualVM是Netbeans的profile子项目,已在JDK6.0update7中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向...

weixin_39566493的博客 231

远程监控工具详细介绍远程监控工具(Remote Monitoring Tools)是一类用于实时或定期收集、分析和管理远程设备、系统或网络状态的软件或硬件解决方案。这些工具广泛应用于IT运维、工业自

远程监控工具(Remote Monitoring Tools)是一类用于实时或定期收集、分析和管理远程设备、系统或网络状态的软件或硬件解决方案。这些工具广泛应用于IT运维、工业自动化、物联网(IoT)、医疗设备管理、能源监控等领域,帮助用户及时发现问题、优化性能并降低维护成本。一、远程监控工具的主要功能实时数据采集通过传感器、日志文件、API接口等方式收集设备或系统的运行数据(如CPU使用率、内存状态、温度、网络流量等)。可视化与告警。

weixin_60830013的博客 1314

内存、线程异常问题追查思路

问题描述: 线上不明原因导致服务响应变慢,请求失败率上升,CPU负载上升等 追查思路: 1. 登录对应机器(可以择机摘除流量,建议快速dump内存后再摘除) 2. 使用top命令,一般可见某进程cpu占用率飙升,%CPU参数接近100 注意:在大内存服务器上(32G以上,单进程的JVM配置参数-XMX一般不超过4G),如某某进程%MEM参数指标超过5%就要考虑内存泄露、持续占用的情况 ...

yys3155的专栏 399

java 内存跟踪_Java程序内存问题跟踪

最近在研究Java程序内存问题跟踪,主要处理程序在上时间运行情况下各种 OutOfMemory 异常,将使用的工具和心得点滴记录在这里备忘常用工具JDK1.6版本自带很多丰富的内存/线程跟踪调试工具jps命令,查看本机器所有Java进程vmidjps -ljstat命令,跟踪某一Java进程GC运行情况jstat -gcutil [vmid] 2000 (每2秒刷新一次)jmap命令,强制J...

weixin_29306571的博客 512
上一篇: centon7上RPM安装Mysql5.5
下一篇: 编写远程监控机器的CPU的插件
tiberx
博客等级 码龄18年 1041粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值