日志是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 queuequeue.dequeueBatchSize="1000" # max number of messages to process at oncequeue.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 queuequeue.dequeueBatchSize="1000" # max number of messages to process at oncequeue.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")

自建个人原创站运维网咖社(www.net-add.com),新的博文会在网咖社更新,欢迎浏览

转载于:https://blog.51cto.com/benpaozhe/1903720

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

  1. rsyslog收集nginx日志配置

    rsyslog日志收集配置 rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理 请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/161 ...

  2. rsyslog日志服务器的日志文件路径,使用rsyslog收集日志

    为什么使用rsyslog? 1.他是POSIX-like系统中标准的logging,有些软件,比如haproxy,只使用syslog.所以你不能完全消除它 2.通过网络硬件被使用 3.它有更复杂的设置 ...

  3. 日志审计与分析--Linux日志收集(配置rsyslog服务收集其他Linux服务器日志)

    目录 实验准备 实验步骤: 一.重启rsyslog服务 二.配置rsyslog客户端 三.验证rsyslog配置 实验准备 实验目的:                  1.掌握rsyslog配置方法 ...

  4. Linux系统中的日志管理 ---systemd-journald日志(journalctl命令的用法)和 rsyslog 日志(自定义日志采集路径、更改日志采集格式和日志的远程同步)

    一.实验环境 Horizon_carry: 172.25.254.10 carry: 172.25.254.20 Horizon_carry & carry: systemctl stop f ...

  5. 10.11杭州Clouder lab 十分钟搭建共享应用 2:如何通过日志服务实现用户的日志收集与分析...

    场景描述 共享电动车企业使用函数服务搭建服务端.在函数服务中开启日志,把程序日志写到日志服务,同时在函数代码中使用SDK把运营日志写入到日志服务,使用日志服务进行日志分析. 在日志服务中,用户可以: ...

  6. 关于如何收集,标准化和集中化处理Golang日志的一些建议

    依赖分布式系统的公司组织和团队经常使用Go语言编写其应用程序,以利用Go语言诸如通道和goroutine之类的并发功能.如果你负责研发或运维Go应用程序,则考虑周全的日志记录策略可以帮助你了解用户行为 ...

  7. 关于收集,标准化和集中化处理Golang日志的一些建议

    依赖分布式系统的公司组织和团队经常使用Go语言编写其应用程序,以利用Go语言诸如通道和goroutine之类的并发功能.如果你负责研发或运维Go应用程序,则考虑周全的日志记录策略可以帮助你了解用户行为 ...

  8. atlas怎么看日志_亿级的日志治理!微服务最佳方案,ELK stack从零搭建

    ELK Stack 诞生背景 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索 ...

  9. 探索Java日志的奥秘:底层日志系统-log4j2

    前言 log4j2是apache在log4j的基础上,参考logback架构实现的一套新的日志系统(我感觉是apache害怕logback了). log4j2的官方文档上写着一些它的优点: 在拥有全部 ...

最新文章

  1. 贝叶斯网络之父Judea Pearl推荐:迈向可解释的知识驱动系统
  2. 区块链】利用Node.js开发与合约交互的Web界面
  3. java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。
  4. java 静态代码块_关于Java你不知道的那些事之代码块
  5. day2-安装python以及基本使用
  6. Canvas.Top和Canvas.Left属性
  7. Mac VS code latex pdf 安装教程
  8. iOS经典讲解之Apple Pay开发
  9. python写出租车计费系统_关于使用Python——写出租车计费系统
  10. SSH使用PEM文件登录
  11. c语言dp算法,通过leetcode学算法——动态规划(dp)
  12. nginx+geoip2实现地区限制
  13. 华为od机试81出租车计费python
  14. 学习学习学习学习学习学习
  15. 国际贸易术语解释通则(DAF 边境交货(……指定地点))
  16. 三层架构和SpringMVC概述
  17. 隐私政策网址 (URL)
  18. 王子救公主(DFS)
  19. 背锅侠?程序出现bug是测试/开发工程师水平有限导致的?我只是个搬砖的......
  20. JavaScript实现字符串翻转

热门文章

  1. substring java_Java String.substring()用法
  2. android 添加附件功能,Android实现带附件的邮件发送功能
  3. 织梦动态PHP可以删除吗,DeDe织梦cms如何全站动态化,取消静态功能
  4. java导入包写在第二行的吗_使用Java命令行方式导入第三方jar包来运行Java程序的命令...
  5. java判断总共天数_Java判断两个日期相差天数的方法
  6. demo解析 小程序node.js_小程序-demo:小程序示例
  7. FPGA之道(2)FPGA应用方向
  8. HDLBits 系列(37)此系列关于独热码的题目的疑问?
  9. 二进制与格雷码之间的转换的Verilog实现(更多一点的讨论)
  10. 【 FPGA 】UltraFast设计方法学笔记(时钟)