0

假设我现在想使用 Zabbix http://www.zabbix.com/在我们的生产服务器中监控并发用户数。谁能让我知道我该怎么做?服务器是用java编写的。

4

1 回答 1

0

第一个要回答的问题是:如何查询服务器上的用户数?这是你可以从一些日志文件中提取出来的东西吗?或者,也许您的“用 java 编写的服务器”允许以某种标准化方式(即通过 http)查询用户数?

您也许可以使用标准的 zabbix 检查之一,但很可能您必须配置在您的服务器上运行的 zabbix 代理来监控自定义用户参数:https ://www.zabbix.com/documentation/1.8/manual/配置/用户参数


因此,需要的值应该从通过 http 可用的 json 中解析出来。从 2.2 版开始,您将能够使用 web.page.regexp[] 来实现,但由于它尚未准备好生产,您必须坚持使用自定义用户项目。

据说zabbix代理是在linux上运行的。打开 zabbix_agentd.conf 并添加以下行:

UserParameter=json.query[*], value=$(curl -s $1 | grep -Eo "\"$2\":(\w*)"| cut -d: -f2); if [ -z "$value" ]; then echo "not found"; else echo $value; fi

重新启动代理。在这个新的用户参数 json.query 将成为此服务器上的“Zabbix Agent”类型项目之后。它需要两个参数:要获取的 json 的地址和要提取的变量的名称。我正在测试以下示例:

"usercount":30

如果您的 json 格式不同,您可能需要更改正则表达式。

现在需要添加新的zabbix项:Configuration/Hosts/Items - Create Item

Description: Concurrent user count
Type: Zabbix Agent
Key: json.query[myserver.com/status.json,usercount]
Data Type: numeric

就是这样。现在监控用户计数,您可以在 zabbix 触发器中以通常的方式引用它。

于 2013-05-01T09:50:34.887 回答