【发布时间】:2021-02-11 22:18:42
【问题描述】:
目的:
在具有多个版本和每个版本多个池的服务器上收集 PHP-FPM 指标
配置文件:
/etc/zabbix/zabbix_agent2.d/userparameter_php_fpm.conf
配置文件内容:
UserParameter=phpstuff,/usr/local/bin/php /php-status/getphpstuff.php --full
来自 zabbix 服务器的示例命令:
zabbix_get -s myserv.com -k phpstuff
命令的 JSON 输出:
"data": [
{
"{#VERSION}": "7.2.34",
"{#PID}": "19495",
"{#CPUPCT}": "0.0",
"{#MEMPCT}": "0.0",
"{#POOLNAMES}": [
"nobody",
"one",
"two"
],
"{#POOLCOUNT}": 3,
"{#CHILDPROCCOUNT}": 10,
"{#CHILDCPUTOTAL}": "45.0",
...
},
{
"{#VERSION}": "7.3.25",
"{#PID}": "19368",
"{#CPUPCT}": "0.0",
"{#MEMPCT}": "0.0",
"{#POOLNAMES}": [
"nobody73",
"fifty"
],
"{#POOLCOUNT}": 2,
"{#CHILDPROCCOUNT}": 0,
"{#CHILDCPUTOTAL}": 0,
...
}
]
}
目标:
创建发现规则,为每个版本制作 ? 应用程序,该应用程序将为该版本下的每个统计数据提供项目(并设置图表和触发器等)
问题:
我可以创建初始发现规则,并让它为版本制作项目/应用程序:
Name: PHPStuff
Type: Zabbix Agent
Key: phpstuff
使用原型(或类似的东西):
Name: PHP-FPM Version {#VERSION}
Type: Zabbix Agent
Key: phpfpm.info.masterprocesslist[{#VERSION}]
Type: Text
App Prototype: PHP {#VERSION}
但我无法获得任何其他返回的信息。
我需要重新格式化输出吗?还是我缺少一些基本的东西?
Zabxix 5.2b1 服务器 + Zabbix 代理 2
【问题讨论】:
-
尝试不使用
"data":,就像一个数组[ { "{#STUFF}": "value" } ]。例如,参见zabbix_agent2 -t vfs.fs.discovery的输出 - 那里没有“数据:”,只有数组。您可以选择发现规则并手动触发它——它会显示错误还是什么? -
LLD 只是一个列表:在您的情况下,是一个 PID 列表。在该列表之上,您构建了许多项目原型,您可以在其中使用另一个 UserParameter 读取数据。
data部分是正确的,它只是以前/已弃用的 LLD 格式:仍然有效。 -
TY,删除了“数据”,它仍然有效。也许我没有正确理解 zabbix - 但我似乎无法在任何类型的“项目原型”中引用传递的键数组的其余部分。所有内置函数都调用其他带参数的函数。我可以重构来做到这一点,似乎一次提供更新所需的所有数据会更容易维护。
标签: zabbix