0

我刚刚阅读了一些有关性能数据收集和处理的 icinga 文档。但是我现在有一些不清楚的地方:

  1. 写入文件/磁盘->这是否会翻转以及如何翻转?
  2. 我想跳过磁盘“缓冲区”并直接通过管道进入将数据放入外部数据库的后处理脚本。这可能吗?如何?(我看到有一个管道模式,但我并不完全了解它是如何工作的,因为大多数示例和设置都使用这些文件)。如果 db 不可达或者数据接收进程可能死掉,使用 pipe 有什么风险?
  3. 如果使用中间文件,则在繁忙的盒子上加载性能 - 我们经历了一些高负载并且不确定是否不通过管道会更好(除了一些失败场景,请参阅第二个问题)

非常感谢!

ps:在 nagios 下标记为 icinga 尚不可用,到目前为止我没有足够的积分;-)。

4

1 回答 1

0

广告 1) 根据使用的方法,您可以定义文件轮换间隔以及移动带有时间戳后缀的文件的命令。那里有著名的grapher插件,例如pnp4nagios或ingraph,它们将其描述为他们的要求-例如http://docs.pnp4nagios.org/pnp-0.6/config#bulk_mode_with_npcd 关于核心旋转-您需要确保$something 处理性能数据文件 - 您应该监视该处理,以免以“文件系统已满”或类似情况结束。

ad 2) 通过定义一个执行此操作的命令,可以将数据从核心直接传输到外部处理程序 - 但请记住,这不会异步发生并且可能会阻塞核心 - 您的处理应用程序需要获取正在馈送的数据,然后将其放入队列中。如果数据库消失了,这也可能会产生问题 - 如果您的处理程序由于连接超时而无法自我终止,这将损害您的监控核心的整体性能(是的,这是 1.x 架构的一个已知问题,即为什么磁盘上的假脱机文件是更好的方法)。

广告 3) 不确定我是否理解正确,但在使用磁盘上的假脱机文件时,您确实应该记住一些事情

  • 如果在不同的文件系统之间发生轮换,inode mv 将比在同一个文件系统上花费更长的时间
  • 如果使用相同的文件系统,请确保您的底层硬件(raid、hdd)足够快
  • 您当然应该将 icinga 创建的所有临时数据放在同一个文件系统上 - 但与您的数据库或 rrdtool 存储所在的不同
  • 如果您不关心未处理的假脱机数据,请创建一个 tmpfs 并在那里配置它们
  • 不要对此类过渡数据使用具有快照/备份功能的高级文件系统,例如 zfs/xfs/btrfs - 这将显着降低大型系统的性能。
  • 监控 io 等待和文件系统的使用情况,以了解可能的瓶颈
  • 如果之后使用 rrdtool 进行处理,请确保使用 rrdcached 来加速处理应用程序

回到同步模式将要求您的处理应用程序本身使用某种队列,这不是直接数据库访问将使用的。甚至 ingraph ( https://www.netways.org/projects/ingraph/wiki ) 也是使用收集器守护程序将数据插入数据库而构建的。简而言之 - 使用 1.x 这样做是危险的,使用 icinga2 将有可能拥有自己的排队机制。

于 2013-06-08T13:37:00.983 回答