Apache“服务器状态”(mod_status)输出为JSON或XML格式?

时间:2016-11-25 04:34:41

标签: json xml apache

Apache“mod_status”:

我们知道,通过使用“mod_status”,我们可以检查Apache的当前状态。它会返回大量信息,例如此示例页(由Apache提供)

  

https://www.apache.org/server-status

我需要做什么:

我需要解析然后处理这个结果,特别是ExtendedStatus标志(在httpd.conf中)给出的详细连接部分。该部分看起来像:

Srv PID Acc M   CPU SS  Req Conn    Child   Slot    Client  VHost   Request
0-24    23433   0/94/338163 _   208.04  2   0   0.0 1.85    22068.75    221.254.46.37       
0-24    23433   0/99/337929 _   208.93  1   1141    0.0 2.23    19373.00    197.89.161.5        
0-24    23433   0/94/337834 _   206.04  4   0   0.0 3.46    22065.36    114.31.251.82       
0-24    23433   0/95/338139 _   198.94  2   7   0.0 2.74    21101.66    122.252.253.242     
0-24    23433   0/111/338215    _   206.21  3   0   0.0 3.89    19496.71    186.5.109.211

我的问题:

是否可以通过结构化数据格式获取此页面(信息),例如JSON ? (因为我需要通过PHP解析它们。然后再做一些其他的事情。)

我不能只使用一些简单的方法,比如Javascript DOM Parsers(比如:jQuery)。因为我需要脚本在服务器的Linux命令行(本地)本身运行。不是来自外面的任何花哨的客户浏览器。

因此,通过Javascript(JQuery等)解析这几乎不是一个选择。我最好收到结构化数据。所以我可以轻松地从PHP解析。通过终端触发PHP脚本,如:

# php /www/docroots/parse-server-status.php

或者,至少:

# curl -I http://localhost/parse-server-status.php

问题:

  • 知道如何从Apache的服务器状态(mod_status)中获取JSON或XML吗?

谢谢大家。

2 个答案:

答案 0 :(得分:4)

我认为没有办法在标准的apache mod_status中获取json。 但是关于这个主题的开发人员名单上有一个讨论。

简而言之:您必须在服务器上安装另一个脚本。而且你需要服务器上的mod_lua。这是项目页面:

https://github.com/Humbedooh/server-status

安装该lua脚本后,您可以获取json文件。 Daniel在这里安装了一个示例脚本:

HTML视图:http://httpd.apache.org/server-status
JSON:http://httpd.apache.org/server-status?view=json
扩展JSON: http://httpd.apache.org/server-status?view=json&extended=true(很多 数据:p)

答案 1 :(得分:0)

在JavaScript / jQuery(ES6)中,我们可以使用?auto获取Apache机器可读的状态,并通过正则表达式解析内容:

$.get('http://localhost/parse-server-status.php?auto', (d) => {
  const o = {};
  const host = d.substring(0, d.indexOf('\n'));
  Array.from(d.replace(host, '').matchAll(/^([\w\s]+)\:\s(.*)+/gm)).forEach(l => o[l[1].replace(/\s/, '')] = l[2]);
  console.log(host, o);
});

Console example