问题
我通过以下方式手动将事件插入 Zenoss:zensendevent
命令行工具。事件已成功插入 Zenoss。问题是我每秒只能插入大约 8 个事件。
我也尝试过通过 zensyslog 插入事件。尽管 zensyslog 会立即收到 syslog 事件(我可以使用 查看它们tail -f $ZENHOME/log/origsyslog.log
),但随后会以大约相同的速率(每秒 8 个)异步处理这些事件并将其插入 Zenoss。
除了增加 Zope 和 MySQL 本身的一些缓存设置(如所见),我没有对 Zenoss 或 MySQL 进行大量的性能调整这里)。
我获得的吞吐量正常吗?我该怎么做才能大幅增加每秒插入的事件数量(我需要每秒至少插入 100 个事件)。从我在代码中看到的内容来看zensendevent
,它似乎使用 Zenoss 的 XML-RPC 接口来插入事件。
我们的机器和软件规格如下:
- 英特尔(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz
- 4GB 内存
- Ubuntu 服务器 10.04.2 LTS
- Zenoss 3.1.0 从源代码编译
- 这是专用的物理安装,而不是虚拟机
以下背景信息是否有帮助:
我们想使用 Zenoss 来监控我们的机器及其运行的软件。我们的机器通常无法从 Zenoss 运行的中央服务器直接访问。但是,我们可以从任何机器获取我们想要的数据到中央服务器。目前我们每天生成大约 150 万个事件,平均每秒大约有 17 个事件必须插入到 Zenoss 中。
我正在使用以下 bash 脚本通过 zensendevent 测试事件插入性能(插入 160 个事件大约需要 20 秒):
#!/bin/bash
for a in {1..160}
do
zensendevent -d 'somemachinename' -y 'some_event_key' -p 'some_component' -s Error -c /App "Example Test message"
done
提前非常感谢您。
答案1
正如所回答的这里,问题出在我执行测试的方式上。基本上,我是zensendevent
在循环中运行,而不是仅仅在循环中执行 XML-RPC 请求。启动 Python 脚本是最大的瓶颈。现在,我可以使用相同的配置每秒插入大约 120 个事件。