Rrdtool 与 nodejs

Rrdtool with nodejs

假设我的本地机器上有一个程序 运行ning,我希望它侦听 HTTP 请求,这会触发程序 运行 并返回响应的输出该程序。例如,我在我的 Linux 框中安装了 rrdtool(用于访问循环数据库的命令行实用程序),我希望 Web 客户端向 Web 服务器请求 运行 rrdtool 程序并响应rrdtool 的输出。

问题:

  1. 我知道编程语言用于生成要发送回客户端的动态 html 内容,但 rrdtool 是一个已经存在的程序,只需要由 Web 请求触发即可。事实上,rrdtool 提供了各种编程语言绑定,例如 python,但我想在服务器端使用 Node.js,不支持 javascript 绑定到 rrdtool。那么我的 javascript 代码和 rrdtool 程序(CLI)之间的接口是如何完成的呢?

  2. 我考虑过使用 Java 实现 rrdtool 功能,例如 rrd4j,但可移植性对我来说并不是真正的优先事项,我想 运行 官方rrdtool 程序(用 C 编写)以获得更好的性能。但是,我不确定服务器端 javascript 和 rrdtool 之间的接口成本是否会超过 运行 宁 C 程序的性能优势。

任何help/feedback/pointers将不胜感激。

只需将 NodeJS 的 "child_process" 模块用于 运行 您的 rrdtool。然后使用 child.stdin.on('data', function (data) {... 等捕获它的输出。捕获它的输出,将其格式化为 HTML,并将其作为对启动它的 Web 请求的回复发送。

如果您正在使用 RRDTool 生成图形图像,那么您应该能够通过您的 NodeJS 处理程序调用 rrdtool,让它写入可通过 Web 访问的目录中的临时文件。然后,将新创建的图像文件的 URL 发回,您的 Web 前端可以使用它来创建一个新的 IMG 标签进行显示。