从Apache Server获取可靠的统计信息

时间:2015-05-07 14:39:50

标签: java php apache server-side server-side-scripting

我有一个Apache服务器,我希望从中获取一些统计信息(如正常运行时间,启动时间等)以便在Java中进行操作。现在我有一个简单的PHP网页,找出服务器的正常运行时间和开始时间,在页面中回显它,然后我从Java读取单行php页面,在那里我拆分字符串,知道哪些数据在哪空间。

但现在我想知道它已经失效了多少次,为了可靠地做到这一点,我需要在服务器中注册一个进程。我的第一个想法是定期检查来自java的php页面,如果我遇到IO问题,这意味着服务器已关闭,但这也可能意味着java端没有互联网连接或其他东西,所以它不是100 %可靠。

所以我似乎需要从服务器端获取所有数据,但我不知道该怎么做。我的想法是在服务器中创建某种类型的进程,它会定期输入服务器最后一次在文本文件中运行,然后改进php页面来读取它并显示它的新数据,然后我会阅读来自PHP的文件,但我不知道如何在服务器端执行上述定期过程。

有任何帮助吗?还是其他一些可行的解决方案?

1 个答案:

答案 0 :(得分:0)

您需要使用apache服务器状态页面。

您需要启用mod_status,然后您需要将其添加到httpd.conf文件中

<Location "/server-status">
    SetHandler server-status
    Require host example.com
</Location>

通过访问页面http://your.server.name/server-status?auto可以获得机器可读的状态文件版本。

从那里你可以很容易地用你的脚本解析它。

mod_status的完整文档可在此处找到:http://httpd.apache.org/docs/current/mod/mod_status.html

如果您想收集统计数据并在以后处理它们,您只需添加一个每分钟运行一次的cron作业(或您选择的其他时间段)

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * command to be executed

# Execute every hour
  *  *  *  *  * wget --output-document=apache_stats_`date +%Y-%m-%d_%H:%M:%S`.txt http://your.server.name/server-status?auto