我试图从一个简单的脚本中返回一个值。但是,我得到了以下错误。
Feb 26 09:26:37 localhost systemd[1]: Starting Collectd statistics daemon...
Feb 26 09:26:37 localhost collectd[834]: plugin_load: plugin "exec" successfully loaded.
Feb 26 09:26:37 localhost collectd[834]: Systemd detected, trying to signal readyness.
Feb 26 09:26:37 localhost systemd[1]: Started Collectd statistics daemon.
Feb 26 09:26:37 localhost collectd[834]: Initialization complete, entering read-loop.
Feb 26 09:26:37 localhost collectd[834]: exec plugin: Unable to parse command, ignoring line: "73"
Feb 26 09:26:47 localhost collectd[834]: exec plugin: Unable to parse command, ignoring line: "74"
Feb 26 09:26:57 localhost collectd[834]: exec plugin: Unable to parse command, ignoring line: "73"
Feb 26 09:27:07 localhost collectd[834]: exec plugin: Unable to parse command, ignoring line: "73"我的配置是
LoadPlugin exec
<Plugin exec>
Exec "cwagent" "/opt/aws/amazon-cloudwatch-agent/bin/supervisor.sh"
</Plugin>我的剧本是
#!/bin/bash
VALUE=$(/bin/systemctl status | wc -l)
echo "$VALUE"我意识到这可能是我犯的一个愚蠢的错误。我花了一些时间在周围玩和谷歌试图了解这个问题。但恐怕我没什么进展。感谢任何建议:)
发布于 2022-05-03 22:22:12
很多事情中,您的插件都是通过收藏品分叉处理的,期望它能继续运行并产生可消费的输出,所以您需要使用像它在这里显示的那样的while循环:https://collectd.org/wiki/index.php/Plugin:Exec。
其次,您的输出格式是错误的。我发现这部分文档写得很糟糕,因为还不完全清楚规范名称和度量名称是如何从字符串中构成的。以上面页面中的例子为例:
echo "PUTVAL \"$HOSTNAME/exec-magic/gauge-magic_level\" interval=$INTERVAL N:$VALUE"然后:
exec - magic_level是插件名,magic_level是度量名称,规范是来自gauge类型的数据源类型N:是exec插件中定义的“现在”的缩写。
所以把这些放在一起,你会发现类似于:
#!/bin/bash
HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
INTERVAL="${COLLECTD_INTERVAL:-60}"
while sleep "$INTERVAL"; do
VALUE=$(/bin/systemctl status | wc -l)
echo "PUTVAL ${HOSTNAME}/cwagent/counter-line_count\" N:$VALUE"
done在这种情况下,您将使用简单的计数器类型,并返回一个值,该值相当于您在命令中计算的行数。
https://stackoverflow.com/questions/66383285
复制相似问题