【问题标题】:Grabbing log files from production server从生产服务器抓取日志文件
【发布时间】:2012-10-09 10:01:38
【问题描述】:

我用python开发了一个用于在线web服务用户行为研究的统计系统,主要依赖于读取和分析生产服务器的日志。目前我在 SMB 协议下内部共享日志文件夹以供常规分析程序读取,但对于数据访问方法我有 2 个问题,

  1. 除了通过 SMB 之外,还有其他方式访问日志吗?还是其他策略?
  2. 我猜很多read可能会阻塞生产的HD并影响正常的日志写入,有什么办法可以解决这个问题吗?

我希望我能想出一些实数,但目前还没有。任何人都可以给我一些指导,让我更优雅地做到这一点?

【问题讨论】:

  • 你能不能轮换写入器中的日志,然后让读取器只从存档中提取?

标签: python logging statistics smb


【解决方案1】:

如果您愿意使用第三方日志聚合工具,您有两种选择:

此外,如果您正在记录到 syslog - 许多常用的 syslog 守护程序(例如 syslog-ng )可以配置为将来自各种应用程序的日志转发到这些聚合器中的一个或多个。从 python 应用程序记录到 syslog 很简单——标准库中有一个 syslog 模块

【讨论】:

  • 感谢您的信息。目前我的系统正在生产中,因此切换可能会花费我更多。但是我有理由实现我们自己的统计系统,目前我的问题是如何改进数据访问部分。 :)
【解决方案2】:

好吧,如果您在两者之间有一个 HTTP 服务器(IHS、OHS,我猜也是 Apache...),那么您可以通过 URL 公开您的物理存储库:您的每个文件也将受益于 URL,并且通过这种代码你可以很容易地下载它们:

import os
import urllib2

# Open our local file for writing
f = urllib2.urlopen(url)
with open(os.path.basename(url), 'wb') as local_file:
    local_file.write(f.read())

【讨论】:

  • 感谢您的评论。用于公开日志的 Web 服务器会有点过于繁重。对于 Samba,我可以执行“for line in open('\\192.168.100.100\log\2012-12-12.log',block=64MB):...”并逐块处理。我现在正在寻找的是一种性能更高、更通用的访问方法,它适用于 Linux,并且如果可能的话,尽可能减少对生产 HD 的影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多