监视文件夹内的多个Apache主机

我打字之前做了一些search,所以请不要把太多的jar子扔在我身上,如果我没有得到正确的search:)

我有一个VPS服务器,一小撮drupal实例。 像25/30这样的东西已经积累了一段时间。 我想知道是否有某种程序是非常优雅的跟踪统计所有启用的Apache主机或类似的东西,而不必安装像awstats这样也需要手动input每个虚拟主机的东西。

有时我的IO速度在服务器上变得疯狂,我无法弄清楚是谁在做这件事,如果这样的话,我的需要的性质就会stream露出来。

非常感谢。

25/30 Drupal和I / O问题:-)

Drupal 7使用了一些很糟糕的file_scan_directory函数。

例如检查这个Drupal的错误 ,或者这个和那个 。

你面临的问题是25/30网站,但他们都是由相同的Apache进程pipe理。 所以很难将真正有问题的drupal实例与系统监视工具隔离开来。

使用高级模式Apache的状态,你可以检查哪个虚拟主机当前运行在哪个Apache进程(如果长期的请求是足够长的,你可以赶上它)。 你也可以使用lsof命令的各种调用来确定哪个apachesubprocess正在parsing磁盘,以及哪些目录是隐含的(这会给你drupal实例)。 当然,每个Drupal使用一个虚拟主机(无需多站点Drupal部署)会更容易。

现在,您至less应该跟踪每个网站的响应时间,使用带有check_http或munin的 nagios ,或者可用的所有各种监视工具和Web服务之一。 请注意,对于这些http监控工具中的大多数,最重要的参数是指示服务器IP和DNS,以便真正检查25或30个不同的网站,而不仅仅是第一个(默认虚拟主机)。 如果他们都在同一时间作出回应的机会,你忘了告诉监控工具正确的DNS使用该HTTP请求。

如果在平均响应时间内某个drupal实例丢失了1秒,那么在任何升级之后,您将看到所有网站的响应时间,并且这将成为深入分析的正确目标。

尝试使用诸如NewRelic , Amon (类似NewRelic但自主托pipe的)或Munin等工具来监视服务器的使用情况。

我认为从统计的angular度来看,Awstats会做这个工作。 另外我假设你的意思是准备可能的新的虚拟主机,因此,为新的网站自动生成统计数据。

那么,这是一个尝试。

  1. 使用Awstats并正常安装。
  2. 确保您的虚拟主机以标准方式进行configuration,以便自动读取configuration。 既然你使用了Apache,你可能会从sites-enabled-directory中grep ServerName指令。
  3. LogFileSiteDomain指令中创build包含$ SITE的模板configuration文件/etc/awstats/template/awstats.template.conf ,以便稍后启用定制。
  4. 现在,创build一个包装来查找没有configurationawstats的网站并运行实际的更新。 这可能是这样的:
     #!/ bin / sh的
     #警告,未经validation的代码!

     AWSTATSDIR =的/ etc / awstats的
     HTTPDIR =在/ etc / apache2的/启用的站点 - 

     #寻找新的网站
     grep -i ServerName $ HTTPDIR / * | grep -v“\#”| awk'{print $ 3}'| while read SITE
    做
        如果[!  -f $ AWSTATSDIR / awstats。$ {SITE} .conf]; 然后
             #这里创build基于放置在模板中的$ SITEvariables的自定义configuration
             sed -e“s / \\\ $ SITE / $ SITE / g”$ AWSTATSDIR / template / awstats.template.conf> $ AWSTATSDIR / $ awstats。$ SITE.conf“
        科幻
     DONE

     #随包发货,运行更新所有/etc/awstats/awstats.*.confconfiguration。
     /usr/share/awstats/tools/update.sh
  1. 而在cron中,简单地说:
     * / 10 * * * /path/to/above/script.sh

我们从一个稍微不同的angular度来看待这个问题。 你的VPS有30个网站。 据推测,你不积极维护所有的人。 我也想像一下,你不想妥协一下你的其他网站。

在我看来,在同一台机器上运行大量PHP站点的唯一方法是确保所有的代码都以不同的用户身份执行。 最简单的方法是安装和configurationsuPHP 。 这也可以帮助您解决实际问题,因为一旦每个网站都以自己的用户身份运行,您可以轻松确定哪些网站正在使用您的所有资源。

如果一切都以同一用户身份运行,那么追踪哪个网站正在导致负载,这将是相当棘手的。

你可能会使用一些日志分析工具,如awstats(你提到的)。 您还可以使用开放式网站分析等开源“谷歌分析”竞争对手之一。

有一个很好的工具来检测谁读\写入磁盘: iotop

  • 你可以使用Piwik – 你可以安装它,甚至从远程服务器进行监控

  • 或者可以在您的局域网中的本地Web服务器上安装awstats ,并通过cron作业下载并处理您正在监视的每日Web服务器的日志文件