mysql的日志分析与保存在python的应用

     为解决手动执行sql语句实现查询mysql数据库中存储的日志文件效率低下的问题,本文提出利python与pymysql相结合,sqlalchemy库编程实现日志文件的处理。首先,利用pymysql和sqlalchemy在python中访问Mysql数据库;其次,根据报警类型查询交换机产生的日志信息;最后,将查询结果存储在csv文件中。

outputo-20211019-091644-596-kzsx.png

为了及时了解局域网各交换机设备的运行情况,某单位运维部门将局域网内各交换机的日志信息统一发送到日志服务器上。日常服务器采用Centos7作为操作系统,rsyslog程序作为日志程序,并安装Mysql数据库。日志信息实际上存在于Mysql数据库中的Syslog库中。通过Navicat客户端登录Mysql数据库,实现日志文件的sql语句和导出操作,导出日志文件的分析和分析结果。

当单位交换机纳入日志管理的数量越来越多,层次越来越多,日志信息分析越来越复杂时,通过人工操作执行sql语句费时费力,需要通过python结合pymysql和splalchemy库插件进行编程,实现日志文件分析分析结果的导出。具体来说,我们需要分析位于不同地区的交接机产生的日志,如位于单位总部的交换机和县级分公司的交换机;分析不同的日志报警类型,如以attack为标志的攻击日志信息、以loop为标志的环路日志信息、以conflict为标志的IP地址冲突日志信息;同时,根据需要,分析结果应根据不同单位的交换机或不同的报警日志信息类型或同一交换机的不同报警日志类型存储在相应的csv文件中,以便及时处理。

在python中Mysql的访问进行不断的实验比较,我们发现使用pymysql与sqlalchemy相结合,在python中访问Mysql数据库是最方便、最快捷的方法,同时使用pandas库可以方便地分析数据,并将查询结果保存为csv文件,此外,我们还需要使用系统自带的time和datetime。在引用这些数据库之前,我们首先需要在编程开发的计算机上安装这些数据库的具体编程源代码如下:importpandaspdimportimpysqlfromsqlaletime。你可以看到,我们在c盘tools目录下的log目录中为市公司和城市网络公司构建了三个文件。文件不仅包括日期信息,还包括报警信息的类型(区分attack、confict和loop)。以此类推,我们为13台交换机定义了包括日期信息和报警信息类型在内的文件名。在程序执行过程中,我们可以将相应的查询结果写入相应的csv文件中。

分享:

相关推荐