我在Dreamhost VPS上运行了几个(〜20个)站点。 最近我最大限度地为VPS分配内存,我想find问题。
我想有一个SSH脚本,将扫描所有域的所有日志文件,并告诉我什么对象(图像,PHP脚本等)获取大量的电话。
它将统计每个/logs/*/http/access.log中的调用,做一个降序sorting并向我展示跨域的前十名。
但我不知道该怎么做。
可以这样做吗?
任何人都可以build议一个脚本,将这样做?
您要求脚本的位“…在每个/logs/*/http/access.log中统计调用次数,按降序排列,并向我展示跨域的前10名。 可以用这个来实现:
grep -o " /[^ ]*" /logs/*/http/access.log | sort | uniq -c | sort -rn | head
但是,您可以从AWStats或Google分析中获得相同的信息。 这实际上只是一个按访问次数聚合和sorting的所有URL列表。
Unix命令的相同模式可以用来聚合你的PHP错误和Apache错误,这在你的特定情况下可能更有用。 例如以下内容:
grep -o " PHP.*" /logs/*/php/error.log | sort | uniq -c | sort -rn | head
会从你的php错误日志中find所有的PHP错误(我猜你可能在哪里保留它),并列出10个最常见的错误。
另一个有用的是:
grep -o " PHP Fatal error: Allowed memory size.*" /logs/*/php/error.log | sed 's/tried to allocate [0-9]* bytes/tried to allocate N bytes/' | sort | uniq -c | sort -rn | head
这将找出你所有的内存不足的错误,并将它们组合在一起。
而不是采取这种方法,我build议你看看build立一个集中的日志logging服务器。 从旧的基于文件的存储到更多的基于Web的分析工具,您可以有多种select,这些分析工具可以将日志存储到数据库中,并让您通过它们进行search,创build图表/graphics等。
这里有一个思科系统的白皮书的链接,可以帮助您:
构build可扩展的Syslogpipe理解决scheme
而不是这个手动棘手的解决scheme,我build议你使用像Splunk服务器的工具。
Splunk实际上是一个惊人的日志分析,您可以通过任何可能的方式分析日志,即使有警报。
Splunk收集,索引和利用由复杂IT基础架构生成的大量宝贵机器数据,无论是物理的,虚拟的还是云中的。