Python:从远程服务器解析日志

时间:2014-05-13 12:56:45

标签: python bash ssh grep subprocess

我需要处理远程目录中的日志文件并解析其内容。此任务可分为以下几个部分:

  1. 使用条件运行ssh find以确定要处理的文件
  2. 使用zgrep
  3. 获取这些文件的相关内容
  4. 使用python算法处理 2 的结果并存储到本地数据库
  5. 步骤 1 3 非常快,所以我希望改进第2步。

    文件存储为gz或纯文本,处理它们的顺序非常重要。需要首先处理较新的日志,以避免与旧日志出现差异。

    为了获取和过滤日志行,我尝试了以下方法:

    1. 将日志下载到临时文件夹,并在下载时对其进行处理。 python进程触发scp命令,并且并行线程检查temp文件夹以完成下载,直到scp完成。如果文件已下载,请运行zgrep,处理并删除该文件。
    2. 运行ssh remote zgrep "regex" file1 file2 file3,抓取结果并进行处理。
    3. 方法2是一个更易阅读和更优雅的解决方案,但它也慢得多。使用方法1我可以在大约1:30分钟内下载并解析280个文件。使用方法2,将需要接近5:00分钟。下载过程方法的一个主要问题是在脚本运行时可以更改目录,导致代码中需要进行多次检查。

      从python运行shell命令我目前正在使用subprocess.check_output以及multiprocessingthreading模块。

      你能想到这种算法可以改进的方法吗?

0 个答案:

没有答案