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 / 问题 / 497708
Accepted
Carlos Lima
Carlos Lima
Asked: 2013-04-10 09:12:56 +0800 CST2013-04-10 09:12:56 +0800 CST 2013-04-10 09:12:56 +0800 CST

如何在 Zenoss 上为字符串类型的 SNMP OID 添加事件/警报?

  • 772

我通过 SNMP 将特定应用程序的状态报告为字符串。

当一切都按预期工作时,该监控报告一个空字符串,而当某些数据源出现问题时,它会报告一个包含受影响数据源名称的字符串。

我想在 Zenoss 的事件控制台上将该字符串显示为警报/信息,只要它不为空。

问题是每当我将 SNMP 类型的数据源添加到监控模板时,它都会采用数值。

这个想法是使用 StatusThreshold 来查看值何时更改。

进行该设置后事件控制台中不会出现任何事件。

根据我的理解,阈值是根据 RRD 数据库中的值进行评估的,该值仅为数字,因此字符串始终变为“NaN”。

Zenoss 的监控模板界面没有显示处理字符串的直观方式。那怎么办?

snmp
  • 1 1 个回答
  • 1902 Views

1 个回答

  • Voted
  1. Best Answer
    Carlos Lima
    2013-04-10T09:12:56+08:002013-04-10T09:12:56+08:00

    一个可能的解决方案被证明非常简单,但在互联网上搜索会产生很多类似的问题,这些问题要么没有得到回答,要么最终采取了不同的方法,或者一开始就是一个不同的问题。

    Zenoss 提供与 Nagios 插件集成的能力,如果您不知道这种集成是如何工作的,可能不会引起您的注意。

    基本上,这意味着您可以调用任意命令,只要它返回成功退出代码 0(清除事件)和错误退出代码 1、2 或 3(生成事件),以及 STDOUT 上格式正确的字符串。

    有了这些信息,您可以编写一个简单的脚本,使用 读取您的 SNMP 数据snmpget,对其进行解析并打印您希望在事件中显示的消息。

    一个简单而通用的 Perl 示例可以是:

    #!/usr/bin/env perl
    use strict;
    use warnings;
    use 5.010;
    
    my ( $target, $oid, $msg ) = @ARGV;
    
    my $value = `snmpget -v1 -c <comunity> $target $oid`;
    $value =~ /STRING: "([^"]*)"/;
    
    exit 0 unless $1;
    
    say "$msg $1";
    exit 1;
    

    将其保存$ZENHOME/libexec/string_monitor在您的 zenoss 服务器上,然后 chmod +x $ZENHOME/libexec/string_monitor

    然后在 Monitoring Templates 上,添加 COMMAND 类型的 Data Source 并填写 Command Template 字段,如下所示:

    string_monitor ${here/manageIp} <OID> "Error reported on:"

    如果您不熟悉 Zenoss,请记住以下几点:

    如果你有一个 zenoss 服务器和许多收集器的设置,这将从你的设备分配到的收集器调用,而不是从你的主服务器,所以请记住让脚本在所有收集器上可用。当它尝试调用string_monitor收集器但它不存在时,您将在事件控制台上看到一个事件,该事件显示为“代码:2 - 消息:滥用 shell 内置函数”

    $ZENHOME/libexec/string_monitor这是非常具有误导性的,因为当未发现错误时很容易暗示您的脚本存在问题。:-)

    如果您在设置数据源时使用“测试”按钮,这可能会特别令人困惑,在这种情况下,请求将从主服务器发出,并且看起来可以正常工作,然后在控制台上显示上述错误。

    此外,为了使您的过程更快,您可能希望通过 ssh 进入收集器,sudo -i -uzenoss然后运行zencommand run -d your.targetdevice.com -v 10

    这应该会在该设备上生成一个完整的运行,并且您的事件应该出现在事件控制台上(假设它不是空的)。

    在你让它工作之后,也可以将实际的数字数据从你的脚本传递到 Zenoss,打印行的格式是:

    Error string to display|failing=7 warning=31 good=24
    

    失败、良好和警告将作为该数据源上的数据点传递,您可以使用 MinMax 阈值或在其上绘制图形。

    对于一个简单的开始,我建议让它使用最小/虚拟脚本并从那里扩展:

    #!/usr/bin/env perl
    use strict;
    use warnings;
    use 5.010;
    say "We got an error|my=1 sample=6 values=10";
    exit 1;
    
    • 3

相关问题

  • VMWare 服务器 VM 网络利用率

  • show ip route 的 SNMP 等效项?

  • 通过 SNMP 导出性能计数器

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • SNMP HOSTMIB.MIB 未加载?

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