巧用rsyslog收集多套日志并做单套日志的过滤分离

日志是supervisor打出来的python日志,且把不同格式的日志打印到了同一批文件里,需求是把带post和ERROR关键字的日志分离,并进入两个不同kafka的topic队列,目前的情况是rsyslog已经收集了nginx的访问日志,不能相互影响,就是说不能直接用if判断做分离,因为可能会日志混掉。要收集的日志格式如下:

ERROR:root:requeue {"withRefresh": false, "localPath": "/data1/ms/cache/file_store_location/n.fdaimg.cn/translate/20170219/oobE-fyarref6029227.jpg?43", "remotePath": "translate/20170219/oobE-fyarref6029227.jpg?43"}
INFO:root:2017-02-22T11:53:11.395165, {"withRefresh": false, "localPath": "/data1/ms/cache/file_store_location/n.adfaimg.cn/w/20170222/aue--fyarref6523250.jpeg", "remotePath": "w/20170222/aue--fyarref6523250.jpeg"}
INFO:root:post /data1/ms/cache/file_store_location/n.fsdaimg.cn/w/20170222/aue--fyarref6523250.jpeg to w/20170222/aue--fyarref6523250.jpeg took 112.954854965 ms...

操作做之前配置的rsyslog的规则如下:

module(load="imfile")
module(load="omkafka")
$PreserveFQDN on
main_queue(
  queue.workerthreads="10"      # threads to work on the queue
  queue.dequeueBatchSize="1000" # max number of messages to process at once
  queue.size="50000"            # max queue size
)
######################### nginx access #####################
$template nginxlog,"xd172\.16\.11\.44`%msg%"
ruleset(name="nginxlog") {
    action(
        broker=["10.13.88.190:9092","10.13.88.191:9092","10.13.88.192:9092","10.13.88.193:9092"]
        type="omkafka"
        topic="cms-nimg-s3"
        template="nginxlog"
        partitions.auto="on"
     )
  }
input(type="imfile"
      File="/data1/ms/comos/logs/access_s3.log"
      Tag=""
      ruleset="nginxlog"
      freshStartTail="on"
      reopenOnTruncate="on"
     )

当时想直接用if判断做分离,后来发现所有的日志都会进if判断,完全可能把日志混淆,后来测试发现,ruleset里竟然可以嵌套if判断,神奇的rsyslog,解决了一个大问题,配置如下:

module(load="imfile")
module(load="omkafka")
$PreserveFQDN on
main_queue(
  queue.workerthreads="10"      # threads to work on the queue
  queue.dequeueBatchSize="1000" # max number of messages to process at once
  queue.size="50000"            # max queue size
)
######################### nginx access #####################
$template nginxlog,"xd172\.16\.11\.44`%msg%"
ruleset(name="nginxlog") {
    action(
        broker=["10.13.88.190:9092","10.13.88.191:9092","10.13.88.192:9092","10.13.88.193:9092"]
        type="omkafka"
        topic="cms-nimg-s3"
        template="nginxlog"
        partitions.auto="on"
     )
  }
input(type="imfile"
      File="/data1/ms/comos/logs/access_s3.log"
      Tag=""
      ruleset="nginxlog"
      freshStartTail="on"
      reopenOnTruncate="on"
     )
####################### python s3 post  error################################
$template s3post,"xd172\.16\.11\.43 %msg%"
ruleset(name="s3post") {
    if  ( $msg contains "post" ) then {
        action(
              broker=["10.13.88.190:9092","10.13.88.191:9092","10.13.88.192:9092","10.13.88.193:9092"]
              type="omkafka"
              topic="cms-nimg-s3-post"
              template="s3post"
              partitions.auto="on"
              )
       }
    if  ( $msg contains "ERROR" ) then {
        action(
              broker=["10.13.88.190:9092","10.13.88.191:9092","10.13.88.192:9092","10.13.88.193:9092"]
              type="omkafka"
              topic="cms-nimg-s3-post-error"
              template="s3post"
              partitions.auto="on"
              )
       }
}
input(type="imfile"
      File="/data1/ms/comos/logs/s3q_daemon_0.err"
      Tag=""
      ruleset="s3post"
      freshStartTail="on"
      reopenOnTruncate="on"
     )
input(type="imfile"
      File="/data1/ms/comos/logs/s3q_daemon_1.err"
      Tag=""
      ruleset="s3post"
      freshStartTail="on"
      reopenOnTruncate="on"
     )
input(type="imfile"
      File="/data1/ms/comos/logs/s3q_daemon_2.err"
      Tag=""
      ruleset="s3post"
      freshStartTail="on"
      reopenOnTruncate="on"
     )
时间: 2025-01-18 09:11:37

巧用rsyslog收集多套日志并做单套日志的过滤分离的相关文章

rsyslog收集nginx日志配置

rsyslog日志收集配置 rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理 请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/1613571 客户端/发送端  web服务器 # yum install rsyslog -y # vim /etc/rsyslog.conf *.* @192.168.10.1:514 # vim /etc/bashrc                              #收集其他服务器的操作

rsyslog 服务器重启后 发现不能接受到外部日志 只能接受本地日志 关闭防火墙即可

rsyslog 服务器重启后 发现不能接受到外部日志 只能接受本地日志  关闭防火墙即可 1 关闭防火墙: # systemctl stop firewalld 2 将SELINUX设置为disabled # setenforce 0 # sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

日志分析-2.发送windows日志到一个远程的rsyslog服务器上

要将一个Windows客户端的日志消息转发到我们的rsyslog服务器,需要一个安装 Windows syslog 代理. 1.SyslogAgent http://download.cnet.com/Datagram-SyslogAgent/3000-2085_4-10370938.html 2.安装SyslogAgent 这里省略安装步骤 3.相应的设置 需要将其配置为作为服务运行,连接install,点 Rsyslog 服务器如何配置,请查看 http://yuanji6699.blog.

日志分析方法概述 & Web日志挖掘分析的方法

日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其实并没有精确的定义,可能包括但不限于各种前端Web服务器--apache.lighttpd.tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志. 在Web日志中,每条日志通常代表着用户的一次访问行为,例如下面就是一条典型的apache日志: 211.87.152.44 – - [

seci-log 1.03 日志分析软增加web日志分析

日志分析软件的升级了,我们在上次十种告警(非上班时间访问,非上班地点访问,密码猜测,账号猜测,账号猜测成功.敏感文件操作告警和高危命令操作,主机扫描,端口扫描,非法外联)的基础上有增加了sql注入,xss攻击,路径遍历,webshell,网站敏感文件访问,和cc攻击告警. Sql注入 下面的告警都是从Web服务器日志中产生的,web服务器日志格式支持Apache的NCSA日志格式,包括NCSA普通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类.默认apache,tomcat分别就是这两

日志文件系统的3种日志方法

日志的三个级别(书里写的关于回写和顺序两种模式不同的更细节的解释) 在很多日志文件系统(如:ext3, ReiserFS)中,可以选择三个级别的日志:回写(writeback).顺序(ordered)和数据(data). 回写 在回写模式中,只有元数据被记录到日志中,数据被直接写入主文件系统.这种模式提供较好的性能,但有较大的风险.例如,在增大文件时,数据还未写入就发生崩溃,那么文件系统恢复后文件后面就可能出现垃圾数据. 顺序 在顺序模式中,只有元数据被记录到日志中,但在日志被标记为提交前,数据

.NET Core下的日志(2):日志模型详解

NET Core的日志模型主要由三个核心对象构成,它们分别是Logger.LoggerProvider和LoggerFactory.总的来说,LoggerProvider提供一个具体的Logger对象将格式化的日志消息写入相应的目的地,但是我们在编程过程中使用的Logger对象则由LoggerFactory创建,这个Logger利用注册到LoggerFactory的LoggerProvider来提供真正具有日志写入功能的Logger,并委托后者来记录日志. 目录一.Logger    扩展方法L

基于MVC+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息

在最新的MVC+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于之前介绍LODOP不兼容Chrome等浏览器,因此曾经想放弃这个控件的打印处理,不过他们及时推出了"云打印控件C-Lodop",而且对之前的接口几乎完全兼容,因此在框架里也继续沿用了这个控件来进行相关的打印处理,包括常规的打印和运单信息套打等处理. 1.控件的安装 这个云控件C-Lodop(

重做日志文件组和重做日志文件组成员的管理

一.重做日志文件组: 1.添加重做日志组的指令: alter database [数据库名称] add logfile[group 正整数] 文件名称 [,[group 正整数]文件名称]] 不是有group选项时oracle系统会自动在当前最大的组号上加1来产生新的组号 ex:alter database add logfile ('D:\REDO04.LOG','D:\REDO05.LOG') size 15m; 增加新的重做日志组并且添加两个重做日志成员,大小设置为15M 2.删除重做日志