好的!以下是具有相应查询的方案:
1)我正在使用bash脚本为自定义进程的状态生成JSON对象。
2)在zabbix_agentd.conf文件中提供bash:
UserParameter=service.check[*],/usr/lib/zabbix/externalscripts/service_check.bash
我想在UserParameter中将进程名称作为参数提供给bash文件,我该怎么做?
3)重新启动zabbix-agent并使用zabbix-get
检查会产生一个空的JSON(因为我们没有给出任何进程名称):
{
"data":[
]
}
4)如果我在UserParameter中提供进程名称:
UserParameter=service.check[*],/usr/lib/zabbix/externalscripts/service_check.bash apache2 ntp cron
它产生以下结果:
{
"data":[
我知道这是错误的,因为我需要以不同的方式传递进程名称。我尝试在bash脚本中传递它们,即使这样它也会生成一个无效的json。
5)生成的JSON将由Zabbix类型" Zabbix代理"的Zabbix发现规则处理,它将在进程名称之外创建不同的项目。以下是我的脚本应发送的JSON:
{"data":[{"{#NAME}":"apache2","{#STATUS}":"RUNNING","{#VALUE}":"1"},{"{#NAME}":"ntp","{#STATUS}":"RUNNING","{#VALUE}":"1"},{"{#NAME}":"cron","{#STATUS}":"STOPPED","{#VALUE}":"0"}]}
我本可以使用zabbix-sender
,但是我需要为每个需要发送的键值运行发送方。此外,这种方式我只关心在一个地方操纵数据,其余的将被处理。
希望这很清楚并解释我的情况。