当前位置: 首页 > news >正文

如何用Nagios远程执行插件(NRPE)来检测服务器内存使用率

如何用Nagios远程执行插件(NRPE)来检测服务器内存使用率

在先前的教程中,我们已经见到了如何在Nagios设置中设置Nagios远程执行插件(NRPE)。然而,监控内存使用率的脚本和插件并没有在原生的Nagios中。本篇中,我们会看到如何配置NRPE来监控远程服务器上的内存使用率。

我们要用的监控内存的脚本在Nagios 市场上,在创建者的Github仓库中也可以找到。

假设我们已经安装了NRPE,我们首先在我们想要监控的服务器上下载脚本。

准备远程服务器

在 Debain/Ubuntu 中:

 
  
  1. # cd /usr/lib/nagios/plugins/
  2. # wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
  3. # mv check_mem.pl check_mem
  4. # chmod +x check_mem

在 RHEL/CentOS 中:

 
  
  1. # cd /usr/lib64/nagios/plugins/ (or /usr/lib/nagios/plugins/ for 32-bit)
  2. # wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
  3. # mv check_mem.pl check_mem
  4. # chmod +x check_mem

你可以通过手工在本地运行下面的命令来检查脚本的输出是否正常。当使用NRPE时,这条命令应该会检测空闲的内存,当可用内存小于20%时会发出警告,并且在可用内存小于10%时会生成一个严重警告。

 
  
  1. # ./check_mem -f -w 20 -c 10

 
  
  1. OK - 34.0% (2735744 kB) free.|TOTAL=8035340KB;;;; USED=5299596KB;6428272;7231806;; FREE=2735744KB;;;; CACHES=2703504KB;;;;

如果你看到像上面那样的输出,那就意味这命令正常工作着。

现在脚本已经准备好了,我们要定义NRPE检查内存使用率的命令了。如上所述,命令会检查可用内存,在可用率小于20%时发出警报,小于10%时发出严重警告。

 
  
  1. # vim /etc/nagios/nrpe.cfg

对于 Debian/Ubuntu:

 
  
  1. command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10

对于 RHEL/CentOS 32 bit:

 
  
  1. command[check_mem]=/usr/lib/nagios/plugins/check_mem -f -w 20 -c 10

对于 RHEL/CentOS 64 bit:

 
  
  1. command[check_mem]=/usr/lib64/nagios/plugins/check_mem -f -w 20 -c 10

准备 Nagios 服务器

在Nagios服务器中,我们为NRPE定义了一条自定义命令。该命令可存储在Nagios内的任何目录中。为了让本教程简单,我们会将命令定义放在/etc/nagios目录中。

对于 Debian/Ubuntu:

 
  
  1. # vim /etc/nagios3/conf.d/nrpe_command.cfg

 
  
  1. define command{
  2. command_name check_nrpe
  3. command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$' -c '$ARG1$'
  4. }

对于 RHEL/CentOS 32 bit:

 
  
  1. # vim /etc/nagios/objects/nrpe_command.cfg

 
  
  1. define command{
  2. command_name check_nrpe
  3. command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  4. }

对于 RHEL/CentOS 64 bit:

 
  
  1. # vim /etc/nagios/objects/nrpe_command.cfg

 
  
  1. define command{
  2. command_name check_nrpe
  3. command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  4. }

现在我们定义Nagios的服务检查

在 Debian/Ubuntu 上:

 
  
  1. # vim /etc/nagios3/conf.d/nrpe_service_check.cfg

 
  
  1. define service{
  2. use local-service
  3. host_name remote-server
  4. service_description Check RAM
  5. check_command check_nrpe!check_mem
  6. }

在 RHEL/CentOS 上:

 
  
  1. # vim /etc/nagios/objects/nrpe_service_check.cfg

 
  
  1. define service{
  2. use local-service
  3. host_name remote-server
  4. service_description Check RAM
  5. check_command check_nrpe!check_mem
  6. }

最后我们重启Nagios服务

在 Debian/Ubuntu 上:

 
  
  1. # service nagios3 restart

在 RHEL/CentOS 6 上:

 
  
  1. # service nagios restart

在 RHEL/CentOS 7 上:

 
  
  1. # systemctl restart nagios.service

故障排除

Nagios应该开始在使用NRPE的远程服务器上检查内存使用率了。如果你有任何问题,你可以检查下面这些情况。

  • 确保NRPE的端口在远程主机上是总是允许的。默认NRPE的端口是TCP 5666。
  • 你可以尝试通过执行check_nrpe 命令: /usr/lib/nagios/plugins/check_nrpe -H remote-server 手工检查NRPE操作。
  • 你同样可以尝试运行check_mem 命令:/usr/lib/nagios/plugins/check_nrpe -H remote-server –c check_mem
  • 在远程服务器上,在/etc/nagios/nrpe.cfg中设置debug=1。重启NRPE服务并检查这些日志文件,/var/log/messages (RHEL/CentOS)或者/var/log/syslog (Debain/Ubuntu)。如果有任何的配置或者权限错误,日志中应该包含了相关的信息。如果日志中没有反映出什么,很有可能是由于请求在某些端口上有过滤而没有到达远程服务器上。

总结一下,这边教程描述了我们该如何调试NRPE来监控远程服务器的内存使用率。过程只需要下载脚本、定义命令和重启服务就行了。希望这对你们有帮助。

原文发布时间:2014-11-02

本文来自云栖合作伙伴“linux中国”

相关文章:

  • Android-往来:添加到联系人
  • 《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——1.1 硬件系统资源
  • ajaxFileUpload plugin上传文件 chrome、Firefox中出现SyntaxError:unexpected token
  • 《C++编程风格(修订版)》——2.6 动态内存的回收
  • wp-query调用前几篇文章的方法
  • 《思科UCS服务器统一计算》一1.3 统一计算系统(UCS)
  • 从平凡通往伟大——大数据技术学习
  • 《UML面向对象设计基础》—第1章1.7节继承
  • 启动页广告
  • 深入理解Spark:核心思想与源码分析. 3.5 Hadoop相关配置及Executor环境变量
  • Nim各种pragma使用方法
  • 《设计工作室生存手册》—第1章1.8节设计师是守护者
  • iOS Sprite Kit教程之申请和下载证书
  • Xamarin.Android开发实践(八)
  • 《Java并发编程的艺术》一一2.4 本章小结
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS | NSProxy
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js如何打印object对象
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 后端_MYSQL
  • 区块链技术特点之去中心化特性
  • 如何合理的规划jvm性能调优
  • 如何用vue打造一个移动端音乐播放器
  • 算法-图和图算法
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 物联网链路协议
  • 系统认识JavaScript正则表达式
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • Semaphore
  • 阿里云ACE认证之理解CDN技术
  • ​插件化DPI在商用WIFI中的价值
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (Repost) Getting Genode with TrustZone on the i.MX
  • ***检测工具之RKHunter AIDE
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET中两种OCR方式对比
  • @angular/cli项目构建--Dynamic.Form
  • @RequestMapping用法详解
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [CISCN 2019华东南]Web11
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [emuch.net]MatrixComputations(7-12)
  • [go] 迭代器模式
  • [hdu2196]Computer树的直径
  • [html] 动态炫彩渐变背景
  • [js]js设计模式小结