我正在创建一个节点程序来返回linux top命令的输出,工作正常唯一的问题是命令的名称被切断,而完整的命令名称如/usr/local/libexec/netdata/plugins.d/apps.plugin 1
返回{{ 1}}
我的代码
/usr/local+
结果
const topparser=require("topparser")
const spawn = require('child_process').spawn
let proc=null
let startTime=0
exports.start=function(pid_limit,callback){
startTime=new Date().getTime()
proc = spawn('top', ['-c','-b',"-d","3"])
console.log("started process, pid: "+proc.pid)
let top_data=""
proc.stdout.on('data', function (data) {
console.log('stdout: ' + data);
})
proc.on('close', function (code) {
console.log('child process exited with code ' + code);
});
}//start
exports.stop=function(){
console.log("stoped process...")
if(proc){proc.kill('SIGINT')}// SIGHUP -linux ,SIGINT -windows
}//stop
有什么办法解决吗? 最好的问候
答案 0 :(得分:1)
来自top
联机帮助页:
在批处理模式下,当使用不带参数top时,将使用COLUMNS =和LINES =格式化输出 环境变量,如果设置。否则,宽度将固定为最多512列。与 参数,输出宽度可以减少或增加(最多512),但行数是重要的 - 无限的。
将'-w', '512'
添加到参数中。
答案 1 :(得分:0)
由于您使用node,因此可以查询在localhost上运行的netdata。
示例:
http://london.my-netdata.io/api/v1/data?chart=apps.cpu&after=-1&options=ms
对于localhost netdata:
http://localhost:19999/api/v1/data?chart=apps.cpu&after=-1&options=ms
您还可以获得systemd服务:
http://london.my-netdata.io/api/v1/data?chart=services.cpu&after=-1&options=ms
如果您不打算每秒更新一次屏幕,可以指示netdata返回较长时间的平均值:
http://london.my-netdata.io/api/v1/data?chart=apps.cpu&after=-5&points=1&group=average&options=ms
以上返回过去5秒的平均值。
最后,您将获得netdata监控的所有指标的最新值,其中包含:
http://london.my-netdata.io/api/v1/allmetrics?format=json
为了完整性,netdata可以导出shell脚本的BASH格式的所有指标。检查一下:https://github.com/firehol/netdata/wiki/receiving-netdata-metrics-from-shell-scripts