首页 > 其他分享 >rsyslog由于RateLimit丢失日志的处理

rsyslog由于RateLimit丢失日志的处理

时间:2023-02-20 10:13:55浏览次数:38  
标签:systemd journal system etc RateLimit rsyslog 日志

  1. 问题

问题的发现:在我们的docker应用中,配置了rsyslog作为日志输出;当应用产生的日志在某段时间内量比较大时,就发现会丢日志。

  1. 原因

问题的原因:日志的输出路径,应用程序把日志输出到system journal,然后system journal再输出到rsyslog,最后由rsyslog把日志持久化存储到本地磁盘文件。

而不管是system journal还是rsyslog都有一个配置值,允许一个时间段内最大的日志数量;当应用程序产生的日志数大于规定的数量时就会被丢弃。

解决办法就是根据应用需要调整配置值。

  1. system journal的配置

当system journal发生日志超量时,就会看到下面类似信息:

$ sudo journalctl -u systemd-journald
Apr 16 19:11:52 <hostname> systemd-journal[1356]: Suppressed 1929 messages from /system.slice/docker.service

因为我们的应用是部署成docker container模式,所以对system journal来说它收到的日志是从docker.service发布过来的。

system journal关于日志量的配置在:

$ cat /etc/systemd/journald.conf
RateLimitInterval=30s
RateLimitBurst=1000

含义是在30秒的周期内,允许的日志数目是1000,超过部分会被丢弃。

我们可以估算应用的日志量来调整这两个值,然后重启system journal系统服务system systemd-journald restart即可。

如果要取消限制,可以把两个值都设置成0就可以。

  1. rsyslog的配置

和system journal类似,当rsyslog发生日志超量时,就会看到下面类似信息

$ sudo journalctl -f -u rsyslog
Apr 16 22:18:38 <hostname> rsyslogd[25142]: imjournal: begin to drop messages due to rate-limiting
Apr 16 22:18:46 <hostname> rsyslogd[25142]: imjournal: 1429 messages lost due to rate-limiting

同样的rsyslog也有两个配置项:

$ cat /etc/rsyslog.conf 
$ModLoad imjournal
$imjournalRatelimitInterval 30
$imjournalRatelimitBurst 1000

含义是在30秒的周期内,允许的日志数目是1000,超过部分会被丢弃。

也是根据需要调整值,或者通过把两个值都设置成0的方式关闭限制;然后重启rsyslog服务就行。

  1. 补充一点

关于日志Rate的配置值,system journal和rsyslog都有一个缺省值,不同的操作系统,发行版本,以及system journal/rsyslog的版本都可能有不同的值,要查具体文档。
如果在配置文件里面没有值,则使用缺省值。

system journal的配置文件在:

  • /etc/systemd/journald.conf
  • /etc/systemd/journald.conf.d/*

rsyslog的配置文件在:

  • /etc/rsyslog.conf
  • /etc/rsyslog.d/*
  • 转自: https://www.jianshu.com/p/4e71f553cf3f

标签:systemd,journal,system,etc,RateLimit,rsyslog,日志
From: https://www.cnblogs.com/colin88/p/17136380.html

相关文章

  • 开发日志
    开发日志:1.今天下午在尝试搭建SpringBoot的新项目,目的是使用SpringBoot快速开发新的应用程序。开始时,先前的经验告诉我,SpringBoot有自己独特的方式创建项目,需要创建一个M......
  • Linux系统的日志管理
    (Linux系统的日志管理)一、systemd-journald服务1.systemd-journald介绍#系统时间日志的核心服务#收集包括来自内核,早期引导阶段啊,进程启动,运行时的标准输出和错误输......
  • django日志集成输出器
    在配置文件中importos#⽇志LOGGING={'version':1,#自定义一个简单版本'disable_existing_loggers':False,#是否禁⽤已经存在的⽇志器'form......
  • Linux 服务 | rsyslog
    rsyslog是实现日志功能的服务,用来采集日志信息。主配置文件/etc/rsyslog.conf中,可以设置日志的处理方式。MODULES默认开启的两个imuxsock、imjournalimuxsock......
  • SpringBoot 官方文档示例(88):配置logback把日志写到文件
    一、配置日志文件名logging.file.name=myapplication.log二、在resources下创建logback-spring.xml配置文件<?xmlversion="1.0"encoding="UTF-8"?><configuration><in......
  • Hadoop开启Yarn的日志监控功能
    1.开启JobManager日志(1)编辑NameNode配置文件${hadoop_home}/etc/hadoop/yarn-site.xml和mapred-site.xml编辑yarn-site.xml<!--SitespecificYARNconfigurationproperti......
  • Linux 日志查找常用命令
    1.1cat、zcatcat-napp.log|grep"error":查询日志中含有某个关键字error的信息,显示行号。cat-napp.log|grep"error"--color:查询日志中含有某个关键字error......
  • 【MySQL】事务日志 undo log 详解
    Redolog是事务持久性的保证,Undolog是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undolog。1.Undo日志引入:事务需要保证原子性,也就是事务中的操作要么......
  • 【Android逆向】滚动的天空中插入smali日志
    1.编写一个MyLog.java放到一个android工程下,编译打包,然后反编译拿到MyLog的smali代码packagecom.example.logapplication;importandroid.util.Log;publicclassM......
  • 关于net core 开发服务时,使用Serilog根据appsettings.json输出日志错误的问题。
    使用Serilog输出日志时,配置内容如下,"Serilog":{"Using":["Serilog.Sinks.Console","Serilog.Sinks.File"],"MinimumLevel":"Debug","WriteTo":[......