假设我想使用Zabbix http://www.zabbix.com/在我们的生产服务器中监控此时的并发用户数。任何人都可以让我知道我该怎么做?服务器是用java编写的。
答案 0 :(得分:0)
要回答的第一个问题是:如何查询服务器上的用户数量?这是你可以从一些日志文件grep的东西?或者也许你的'用java编写的服务器'允许以某种标准化方式(即通过http)查询用户数量?
您可以使用标准zabbix检查之一,但很可能您必须配置在服务器上运行的zabbix代理来监控自定义用户参数:https://www.zabbix.com/documentation/1.8/manual/config/user_parameters。
因此,所需的值应该通过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触发器中引用它。