广告 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 将有可能拥有自己的排队机制。