AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 755300
Accepted
markhorrocks
markhorrocks
Asked: 2016-02-11 07:16:32 +0800 CST2016-02-11 07:16:32 +0800 CST 2016-02-11 07:16:32 +0800 CST

Nagios NRPE:无法读取自定义检查的输出

  • 772

我编写了一个自定义 ruby​​ 脚本来检查 ubuntu 服务器上每个卷的磁盘使用情况。服务器由 puppet 控制,nagios 系统已经运行多年,并包含许多其他自定义检查。当我在 nagios 服务器上运行我的新脚本脚本时,它会返回预期的输出,但是当我为另一台服务器运行它时,它会返回 NRPE:unable to read output。运行标准插件适用于任何服务器。

我只将文件加载到 /usr/lib/nagios/plugins 并在 nrpe.cfg 中包含一个命令,使我能够从终端的命令行运行它。

我是否需要为客户端服务器的自定义检查设置主机名(或主机组)和服务,以使其在该服务器上工作,即使从命令行也是如此?

这是 nrpe.cfg 中的命令

command[check_disk_usage]=/usr/lib/nagios/plugins/check_disk_usage.rb

以下是一些说明问题的命令示例。

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H nagios-server
NRPE v2.15

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H client-server
NRPE v2.15

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H nagios-server -c check_users
USERS OK - 2 users currently logged in |users=2;5;5;0

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H client-server -c check_users
USERS OK - 2 users currently logged in |users=2;5;5;0

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H nagios-server -c check_disk_usage
OK - '/backups' 79% of disk space used | '/'=37% '/tmp'=1% '/srv'=62% '/backups'=79%

nagios@nagios-server:~$ /usr/lib/nagios/plugins/check_nrpe -H client-server -c check_disk_usage
NRPE: Unable to read output

这是我的自定义检查脚本:

#!/usr/bin/env ruby

def largest_hash_key(hash)
  hash.max_by{|k,v| v}
end

filesystem = %x(df -h)

perfdata = filesystem.split("\n")
                 .grep(/\A\/dev/)
                 .map(&:split)
                 .map{ |e| "'%s'=%s" % [ e[-1], e[-2] ] }
                 .join(" ")

volumes = Hash[perfdata.split(" ").map {|str| str.split("=")}]

volumes = volumes.map{ |k, v| [k, v.to_i] }

full_disk = largest_hash_key(volumes)

pc_full = full_disk[1]

message = "#{perfdata} | #{perfdata}" 

if pc_full > 94
   puts "DISK CRITICAL - #{message}"
   exit 2
elsif pc_full > 89
   puts "DISK WARNING - #{message}"
   exit 1
else
   puts "DISK OK - #{message}"
   exit 0   
end
ubuntu
  • 2 2 个回答
  • 877 Views

2 个回答

  • Voted
  1. Keith
    2016-02-11T09:04:24+08:002016-02-11T09:04:24+08:00

    您需要在脚本顶部使用 ruby​​ 二进制文件的完整路径。

    您不能/usr/bin/env ruby用作解释器,因为 NRPE 将在没有 ENV 的情况下运行。

    这可以通过以 nagios/nrpe 用户身份运行脚本env -i来模拟:

    env -i /usr/lib/nagios/plugins/check_disk_usage.rb
    
    • 0
  2. Best Answer
    markhorrocks
    2016-02-12T09:14:24+08:002016-02-12T09:14:24+08:00

    像往常一样,这是由于一个愚蠢的错误。检查脚本文件安装在 nagios 服务器上,而不是客户端服务器上。这个 nagios 配置由 puppet 控制,一些自定义检查安装在 nagios 服务器上,一些安装在客户端服务器上。

    我按照我安装的另一个自定义检查脚本的示例进行操作。一个工作的唯一原因是因为有人在客户端服务器上的 /usr/lib/nagios/plugins 中手动安装了它,而 puppet 也无用地将它安装在 nagios 服务器上。

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve