【发布时间】:2013-05-01 06:48:31
【问题描述】:
假设我现在想使用 Zabbix http://www.zabbix.com/ 在我们的生产服务器中监控并发用户数。谁能让我知道我该怎么做?服务器是用 java 编写的。
【问题讨论】:
假设我现在想使用 Zabbix http://www.zabbix.com/ 在我们的生产服务器中监控并发用户数。谁能让我知道我该怎么做?服务器是用 java 编写的。
【问题讨论】:
首先要回答的问题是:如何查询服务器上的用户数?这是你可以从一些日志文件中提取出来的东西吗?或者您的“用 java 编写的服务器”允许以某种标准化方式(即通过 http)查询用户数?
您也许可以使用标准的 zabbix 检查之一,但很可能您必须配置在您的服务器上运行的 zabbix 代理来监控自定义用户参数:https://www.zabbix.com/documentation/1.8/manual/config/user_parameters。
因此,需要的值应该从通过 http 可用的 json 中解析出来。从 2.2 版开始,您可以使用 web.page.regexp[] 来实现,但由于它还没有准备好生产,您必须坚持使用自定义用户项目。
据说zabbix agent是在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 triggers 中以通常的方式引用它。
【讨论】: