1

我正在编写一个将在后台连续运行并完成它的守护进程。我想监控性能和其他各种变量。这将包括 Web 请求延迟、错误、已处理项目的数量等。

然后,数据应与图表、报告(平均值、异常值)和超出限制时的警报一起可供查看。

Windows上的性能计数器是我能找到的最接近的东西。您可以定义自己的计数器,然后轻松地从代码中访问它们。

请注意,我不是在寻找命名的“性能”计数器,它更像是应用程序计数器 - 即我不关心执行指令和缓存未命中的数量,而是关心自定义计数器。与此类似的 StackOverflow 问题的回答错过了这一点:Linux 中的应用程序计数器?(和 OSX?)

我看过 Cacti(和替代品),但他们似乎按计划运行脚本,提供数据。这意味着我会将计数器存储在我的守护程序中,以及等待某种 IPC 调用的线程。然后我需要创建第二个应用程序/脚本,它将通过这个 IPC 接口连接并检索存储的值。

有没有更好的办法?一些 C 库可以通过单个函数调用来增加一个计数器,并且它会自动通过前端进行处理?

4

2 回答 2

3

statsD是开始收集指标的好地方。

statsD 将允许您直接从应用程序发送计数器,而不会产生任何重大开销。您的代码在执行时会生成计数器,您无需在代码中跟踪它。

如果你想要一个一体化的包(但没有持久性),你可以使用pup

如果您需要持久性和绘图,您可能需要查看石墨

石墨将连接到 statsd 并让您的图表生成您生成的任何计数器。它相当轻巧,并且可以说这种组合比 Nagios 更容易部署和维护(就部署和学习曲线而言,它更接近于 cacti)。

如果您想要与持久性和 API 更集成的东西,有许多服务可以为您绘制图表。我在这里限制了自己使用开源软件。

于 2013-08-16T21:10:13.633 回答
0

我认为你正在重新发明轮子。

试试 Nagios http://nagios.org/

- 您可以为 nagios 编写任何自定义检查并监控您需要的任何东西的性能 - 例如您的应用程序。- 您可以自定义您的警报以及发送时间和方式的人/地点。- 您可以在服务/主机等之间创建关系...

插件/扩展: http ://exchange.nagios.org/

于 2013-08-16T18:21:48.913 回答