玖叶教程网

前端编程开发入门

带你使用Python在两类场景下自动采集日志数据(附程序)


各位同学,大家好。采集日志数据是重要的数据来源。本次课程教大家使用Python技术从Windows和Linux两个环境去自动采集日志数据,轻松应对各类日志采集需求。

01 Python实时采集本地文件数据。

如果日志文件在本地,本地的操作系统是windows,可以这样来读取日志文件。

1. Subprocess

我们会使用Subprocess模块,Subprocess是Python内置的模块,这个模块中的Popen方法可以运行用户输入的命令行。如果运行正常,会把内容写入stdout管道。如果命令不正常,则把信息写入stderr管道。

Popen命令的基本格式是这样的:

shell=True 表示在终端中运行的命令,stdout=subprocess.PIPE 表示当命令运行正常的时候把结果写入stdout管道,stderr=subprocess.PIPE 表示的是当命令运行不正常的时候把结果写入stderr管道。

2.读取日志内容

我们使用以下的程序来实时读取日志内容:

其中的命令是powershell Get-Content –wait。

这是调用了Windows的powershell的Get-Content命令,来实时读取日志内容。

如果我们的操作系统是Linux,可以使用下面的程序来读取日志内容:

3.打印内容

读取到的结果通过以下程序来打印出来:

其中的readline是按照每行来读取内容,然后使用decode()将字节流转换成字符串,再使用strip方法,将内容中出现的/r和/n等字符删除。

最后使用communicate方法,将输出结果保存在内存中,而不是默认的保存到管道,这样存储能力更强,不容易卡死。这个进程将会一直执行直到外部程序来将它结束。

02 Python实时远程采集文件数据。

如果我们想远程采集linux服务器上面的日志信息,可以这样来操作。

1.创建ssh连接

Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器,通过 Python实现进行对远程服务器的操作。

创建SSH连接,我们使用以下程序来实现。

首先进行对paramiko下的SSHClient完成实例化。

然后使用set_missing_host_key_policy() 方法,连接到没有已知主机秘钥的服务器。最后使用connect()方法,输入远程连接的地址、端口号,用户名,密码等信息。

2.通过ssh获取日志信息

接下来,我们使用以下程序来读取服务器日志。

我们使用exec_command()方法来执行tail –f命令,获取服务器日志信息。

其中ssh_stdin为标准输入流,通常用于向进程发送输入。

ssh_stdout为标准输出流,通常用于输出进程的结果。

ssh_stderr为标准错误流,通常用于输出进程的错误信息。

然后使用readline方法按照每行来读取内容,再使用strip方法,将内容中出现的/r和/n等字符删除。

最后结束ssh连接。

03 实例讲解。

接下来,我们给大家进行实例的讲解。

未完待续。

我是源动君,带领大家一起进步,谢谢观看。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言