我们目前使用 Nagios 来监控大约 20 台 Linux 机器(服务和功能链接)。我刚刚了解了Munin,不知道这是Nagios的替代品,还是可以与Nagios一起使用?我不想花几个小时来设置它,只是为了发现我已经拥有 Nagios 的所有功能。
如果使用过这两个程序的人可以对您的体验提供一些见解,我将特别感激。哪个更适合哪个任务,您推荐使用什么?
注意:我们也使用 Cacti 一段时间。Nagios 的主要问题是设置时间太长,而且不是很简单。
我正在尝试使用Memcached的Percona Apache Monitoring [Cacti] 模板。
他们确实警告说您不能使用该软件包的 openbsd 版本并为 Ubuntu/Debian 用户提供解决方案,即:
您需要在服务器上使用 nc。某些版本的 nc 接受不同的命令行选项。您可以通过配置 PHP 脚本来更改使用的选项。如果您出于某种原因不想这样做,那么您可以安装一个符合脚本默认配置中编码的期望的 nc 版本。在 Debian/Ubuntu 上,netcat-openbsd 不起作用,所以你需要 netcat-traditional 包,你需要切换到 /bin/nc.traditional...
由于 RHEL 6.x 版本确实来自 openbsd(由 确认rpm -qi nc),如何将其安装在 RHEL/CentOS 上?
还有其他人在 RHEL/CentOS 上运行这些 Percona 模板吗?你做了什么?alienDebian 软件包?
更新 1:FWIW,我尝试通过从源代码编译来使用 GNU netcat,但它似乎也没有 Cacti 模板所需的确切选项(即 -C 或 -q1 似乎没有类比)
更新 2:我外星人[编辑]了 netcat-traditional_1.10-38_amd64.deb 包来制作 .tgz 并且它确实产生了一个二进制“nc.traditional”并且该版本有 -q 选项但没有 -C
更新 3:我按照 cjc 的建议使用 [ed] netcat-openbsd_1.89-3ubuntu2_amd64.deb,虽然它提供了 -C 和 -q 选项,但它似乎不适用于模板。我还按照 …
随着大于 16TB 的卷变得越来越普遍,人们认识到用于报告 SNMP 中标准“HOST-RESOURCES”MIB 中的磁盘大小和使用情况的 32 位值不足以报告正确的磁盘大小。
Net-SNMP 似乎通过简单地操纵“AllocationUnits”的值来解决这个问题,以维护一个 32 位的磁盘利用率值(因为总磁盘大小/使用量等于 32 位空间值乘以分配单元),以允许用于计算大于 8/16TB 的卷。假设您对分配单元没有任何报告兴趣,并且可以接受少量的不准确。这似乎是一个优雅的解决方案。
https://bugzilla.redhat.com/show_bug.cgi?id=654384
然而,Window 的内置 SNMP 服务似乎继续受到此错误的影响,只是报告已使用/分配的磁盘空间的模数,导致磁盘大小报告不准确。
有没有办法让 Windows 正确报告超过 16TB 的卷的磁盘使用情况?我们试图简单地安装 Net-SNMP 5.5 x64 并完全禁用 Windows SNMP 服务,但不幸的是这并没有解决我们的问题。
使用 NetSNMP 扩展时,我们为感兴趣的特定磁盘收集的信息如下:

无论我们使用的是 vanilla Windows SNMP 服务还是 NetSNMP,这些结果都是相同的。
我看到 Cacti 社区中的人提到简单地编写解决方案。不幸的是,我们使用 Observium 进行快速和基本的系统监控。如果无法在 Window 一侧纠正问题,是否可以让 Observium 报告自定义 MIB?
--更新--
查看错误报告提到将“realStorageUnits”添加到 snmpd.conf 文件时,我们在设置该指令时遇到了以下问题:

--更新 2 --
好吧,经过多次修改,它看起来不像任何 Windows 版本的 Net-SNMP,如“realStorageUnits”指令。包含该指令会在启动 SNMP 时产生警告。我们尝试了 5.5、5.6 和 5.7 版本。这里有没有人想过如何让 SNMP 在 Windows 上报告超过 16 TB 的卷?
我目前正在设置一个新的 Debian (6.0.5) 服务器。我昨天在上面放了仙人掌(0.8.7g),从那以后就一直在与它作斗争。
我观察到的最初问题是我的图表没有更新。所以我检查了我的cacti.log并发现了这个关于消息:
POLLER: Poller[0] Maximum runtime of 298 seconds exceeded. Exiting.
Run Code Online (Sandbox Code Playgroud)
那不可能是好事,对吧?所以我去检查并开始poller.php自己(通过sudo -u www-data php poller.php --force)。它会输出大量消息(看起来都像我期望的那样)然后挂起一分钟。1 分钟后,它将循环显示以下消息:
Waiting on 1 of 1 pollers.
Run Code Online (Sandbox Code Playgroud)
这将持续 4 分钟,直到该过程因运行时间超过 298 秒而被强制结束。
我花了一个小时试图确定可能仍在运行的 poller ,直到我得出结论,根本没有正在运行的 poller。
我检查poller.php了该警告的发出方式以及原因。在第 368 行,Cacti 将从数据库中检索已完成进程的数量,并使用该值来计算有多少进程仍在运行。所以,让我们看看这个价值!
我将以下调试代码添加到poller.php:
$finished_processes = db_fetch_cell("SELECT count(*) FROM cacti.poller_time WHERE poller_id=0 AND end_time>'0000-00-00 00:00:00'");
print "Finished: " . $finished_processes . " - Started: " . $started_processes . …Run Code Online (Sandbox Code Playgroud) 我对 nagios、opennms 和 zenoss 进行了一些研究,但我不确定我是否找到了我要找的东西。
我现在的主要驱动力是能够监控备份。这包括 mysql、mssql 和最终的一些文件系统备份。
我们有一个工具可以包装这些不同系统的备份过程并收集统计信息。所以,像这样的项目:
我希望能够 A) 如果作业未按计划运行,则收到通知 B) 能够设置触发通知的统计数据阈值 C) 我希望能够对统计数据进行趋势分析和绘图
我计划通过 HTTP POST 将此信息发送到监控应用程序。或者,监控应用程序也可以从日志文件中提取它。
但是,我们将有其他“任意”(从监控系统的角度来看)静态的其他流程,这些静态将要监控和趋势,因此灵活性非常重要。
一个或多个工具还应该能够对网络接口、服务器负载等进行一般监控和趋势分析。一旦我们进行了备份监控,我们也希望包括这些项目。
谢谢。
跟进:
我决定按给定的顺序尝试以下操作:
一旦我做出决定,我会回帖,可能需要一段时间才能实现。
我有一个 nagios 服务器设置用于监控 ~ 30 个 Windows 服务器。我想添加一些趋势图表。我读到 nagios 图形插件很简单,很多人使用单独的、独立的图表/趋势工具。
nagios 绘图插件与 ganglia/munin/cacti 等独立产品相比有哪些限制?
我对独立软件包提供而 nagios 图形插件不提供的特定功能和优势感兴趣。
有没有办法通过 SNMP 共享 SMART 数据?我希望能够制作它的仙人掌图并将其连接到 Nagios。
我想要做的是能够获得有关通过 SNMP 访问的硬盘的一些统计信息。这将允许我根据时间绘制 $SMART_MEASUREMENT_VALUE 的数量。
(见底部更新...)
我已经为 Cacti 编写了一个数据输入方法脚本(在 Ruby 中,用于从 beanstalkd 收集统计信息)并且它在作为 cacti 用户帐户运行时从命令行工作(返回一个简单的整数,如文档所述),但是Cacti 工具本身没有收集任何数据,日志中也没有任何内容。
这是数据输入法设置: Cacti 数据输入法 http://img.skitch.com/20091009-gh7g1kukn9yradj6y2iqrd5qm1.jpg
这是生成的图表(在将其添加到主机的图表模板并运行足够长的时间以收集数据之后): Cacti Graph http://img.skitch.com/20091009-xq1kn3qxkteb5hb11wtx6tbs8m.jpg
更新 #1:看起来 Cacti 可能正在剥离环境:
sudo su - cacti -c 'env -i /script/beanstat --host 10.11.12.13 --port 11300 --stat current-waiting'
/script/beanstat:4:in `require': 没有要加载的文件——rubygems (LoadError)
来自 /script/beanstat:4
如果是这种情况,我该如何解决?
更新 #2:stackoverflow.com 上的这个响应似乎已经解决了环境问题,但图表中仍然没有数据。
更新 #3:感谢@Heath 的建议,我提高了轮询器日志记录级别并发现了这一点:
警告:来自 CMD 的结果无效。部分结果:U
谷歌搜索“部分结果:U”的意思没有任何运气。该脚本只打印一个整数值。
更新 #4:我终于开始工作了。核心问题是shell脚本运行时缺少环境。我必须通过在我的 Ruby 脚本前加上以下几行来解决这个问题:
#!/bin/sh PATH=/usr/local/bin:$PATH exec ruby -x"/full/path/to/script/directory" $0 "$@" #!/usr/bin/env ruby
第二个问题是数据输入方法的正确配置(我想收集的每个单独的指标一个,即使它们都使用相同的脚本),它提供数据模板的数据源(反之亦然,我我仍然不清楚)它提供了需要分配给设备的图形模板,然后添加到图形树中。总而言之,这是一个关于文档废话的重大失败,我希望永远不必再这样做了。
更新 #5 …
我正在现场为当前使用 Cacti 的许多系统收集 SNMP 数据。这些系统分布在许多并不总是连接到互联网的站点上,但我还需要将数据集中在单个系统(数据中心托管服务器)上并从中获取图表。
如果我使用集中式 Cacti 直接轮询远程系统,我会在站点未连接到 Internet 时丢失数据。我应该在现场记录数据(我在每个站点都有一个服务器,我可以在上面运行我想要的任何东西),然后将所有内容“同步”到中央系统。
一个 hack 可以是 cacti 或直接rrdtool在现场,然后定期将rsyncRRD 数据发送到中央 Cacti 系统,但这听起来不像是一个“干净”的解决方案:每个 RRD 都必须在两个地方定义,并rsync使用特定的文件名。
你能提出更好的解决方案吗?Cacti 不是必需的,但我想在中央系统上使用类似的东西。现场系统只需要收集数据我不需要在那里绘制数据或管理用户查看数据的权限等等,用户只会访问集中式系统。
我注意到我只能用 CACTI 显示一段不间断的时间。我想知道是否可以制作一个仅显示一段时间(一周、一个月等)内的营业时间的自定义图表。
例如,我希望能够显示上个月每周 5 个工作日(周一至周五)上午 8 点到下午 6 点之间平均入站流量的图表。
我尝试为 RRDtool 配置脚本,但我不知道正确的语法。经过多次测试,我发现可以将不同的图形叠加在一起。我想计算所有这些图的平均值,但我不知道该怎么做。
我想配置如下:
--startday 20120604+8h
--endday 20120604+18h
monday: --start startday --end endday
tuesday: --start startday+24h --end endday+24h
wednesday: --start startday+48h --end endday+48h
thursday: --start startday+72h --end endday+72h
friday: --start startday+96h --end endday+96h
DEF:monday=router.rrd:gi0/1:traffic_mon:AVERAGE
DEF:tuesday=router.rrd:gi0/1:traffic_tue:AVERAGE
DEF:wednesday=router.rrd:gi0/1:traffic_wed:AVERAGE
DEF:thursday=router.rrd:gi0/1:traffic_thu:AVERAGE
DEF:friday=router.rrd:gi0/1:traffic_fri:AVERAGE
DEF:traffic_mon:traffic_tue:traffic_wed:traffic_thu:traffic_fri:AVERAGE
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助。
谢谢你。