监控文件夹内的多个 apache 主机

监控文件夹内的多个 apache 主机

在输入这篇文章之前,我进行了一些搜索,所以如果我没有正确完成搜索,请不要向我扔太多罐子:)

我有一台 VPS 服务器,上面有少量的 drupal 实例。随着时间的推移,大约有 25/30 个实例。我想知道是否有某种程序可以非常优雅地跟踪所有启用的 apache 主机的统计信息或类似的东西,而不必安装像 awstats 这样庞大的程序,还需要为每个虚拟主机手动输入。

有时我的服务器的 IO 速率会变得很疯狂,而我又不能确定是谁造成的,这是否能说明我的需求的性质。

提前致谢。

答案1

25/30 drupal 和 i/o 问题 :-)

Drupal 7 确实大量使用了不好的文件扫描目录功能。

检查一下drupal 错误例如或

您的问题在于 25/30 个网站,但它们都由相同的 apache 进程管理。因此,很难从系统监控工具中隔离出真正有问题的 drupal 实例。

使用 apache 状态的高级模式,您可以检查哪个虚拟主机当前在哪个 apache 进程上运行(如果长请求足够长,您可以捕获它)。您还可以使用各种调用来lsof命令来识别哪个 apache 子进程正在解析磁盘,以及隐含哪些目录(这将为您提供 drupal 实例)。当然,如果每个 Drupal 都有一个虚拟主机(没有多站点 drupal 部署),那就更容易了。

现在你至少应该跟踪每个网站的响应时间,使用纳吉奥斯使用 check_http,或者穆宁,或所有可用的各种监控工具和 Web 服务之一。请注意,对于大多数这些 http 监控工具,最重要的参数是指示服务器 IP 和 DNS,以便真正检查 25 或 30 个不同的网站,而不仅仅是第一个网站(默认虚拟主机)。如果它们都在同一时间响应,则很可能您忘记告诉监控工具在该 http 请求上使用的正确 DNS。

拥有所有网站的响应时间后,您将看到任何升级后的情况,如果其中一个 drupal 实例在平均响应时间中丢失了 1 秒(例如),那么这个实例将是进行更深入分析的正确目标。

答案2

我认为从统计角度来看,Awstats 可以胜任这项工作。我还认为您在这里的观点是为可能的新虚拟主机做准备,因此,自动生成新网站的统计数据。

嗯,试一试。

  1. 使用Awstats并正常安装。
  2. 确保您的虚拟主机以标准方式配置,以便可以自动读取其配置。由于您使用 Apache,因此您可以ServerName从 sites-enabled 目录中 grep 指令。
  3. 创建一个/etc/awstats/template/awstats.template.conf包含 $SITELogFileSiteDomain指令的模板配置文件,以便稍后启用自定义。
  4. 现在,创建一个包装器来查找未配置 awstats 的站点并运行实际更新。它可能像这样:
    /bin/sh #!/bin/sh 复制代码
    # 警告,未经测试的代码!

    AWSSTATSDIR=/etc/awstats 目录
    HTTPDIR=/etc/apache2/sites-enabled

    # 搜索新网站
    grep -i 服务器名称 $HTTPDIR/*|grep -v "\#"|awk '{print $3}'|while read SITE
        如果 [ !-f $AWSTATSDIR/awstats.${SITE}.conf ]; 那么
            # 这里根据模板中的 $SITE 变量创建自定义配置
            sed -e "s/\\\$SITE/$SITE/g" $AWSTATSDIR/template/awstats.template.conf > $AWSTATSDIR/$awstats.$SITE.conf"
    完毕

    # 随包一起发货,运行更新所有 /etc/awstats/awstats.*.conf 配置。
    /usr/share/awstats/tools/update.sh
  1. 在 cron 中,只需:
    */10 * * * /路径/到/上面/script.sh

答案3

尝试使用以下工具监控服务器使用情况新Relic阿蒙(类似于 NewRelic 但自托管)或 Munin。

答案4

您可能会使用一些日志分析工具,例如您提到的 awstats。您还可以使用开源“google analytics”竞争对手之一,例如 Open Web Analytics。

相关内容