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

rsyslog由于RateLimit丢失日志的处理的更多相关文章

  1. CentOS 6.7下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

    一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取 ...

  2. django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>

    纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没 ...

  3. 关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思

    关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思--链接--http://www.cnblogs.com/drgcaosheng/p/ ...

  4. CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

    一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取 ...

  5. rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>

    大概思路如下: 使用Linux自带的rsyslog服务来做底层,然后再使用mysql与rsyslog的模板来存储文件,并且以web来进行显示出来.<模板的存储以日期的树形结构来存储,并且以服务器 ...

  6. CENTOS6.2系统日志rsyslog替换默认的日志服务syslog 转载自http://www.phpboy.net/linux/648.html

    最近遇到配置centos 6.2的sshd及sftp日志,发现/etc/syslog.conf文件不存在, 然后: #rpm -qa | grep syslog 出来的是 rsyslog-5.8.10 ...

  7. rsyslog+mariadb+loganalyzer实现日志服务器搭建

    rsyslog+mariadb+loganalyzer实现日志服务器搭建 一.概述 Linux的日志记录了用户在系统上一切操作,包括系统自身运作产生的日志,这些日志是应使用者了解服务器的情况最好的资料 ...

  8. <二>ELK-6.5.3学习笔记–使用rsyslog传输管理nginx日志

    http://www.eryajf.net/2362.html 转载于 本文预计阅读时间 28 分钟 文章目录[隐藏] 1,nginx日志json化. 2,发送端配置. 3,接收端配置. 4,配置lo ...

  9. Oracle控制文件丢失,日志文件丢失

    控制文件丢失: alter database backup controlfile to traces; shutdown immediate; @j:\db\script\orcl_ora_ctl_ ...

  10. rsyslog VS syslog-ng,日志记录哪家强?

    还有慢慢摸索,NG的MYSQL配置,我始终没搞好. RSYSLOG则比较容易. 另外,也可以每个RSYSLOG直接入库,不需要经过LOG SERVER..如果有一个大内网的话... 配合LOGANAL ...

随机推荐

  1. Kubernetes 网络模型基础指南

    Kubernetes 是为运行分布式集群而建立的,分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分,了解 Kubernetes 网络模型可以使你能够正确运行.监控和排查应用程序 ...

  2. fields设计与测试

     菲尔兹管理用例 一.向开发找到需求ID 需求设计文档ID 二.在fields的需求列表中,填入ID,创建计划 1.状态:测试接手 2.日期:冒烟日期,测试日期 3.可能遇到的问题: * 搜不到ID ...

  3. 图论专题 - LibreOJ

    第三部分 图论 第 1 章 最小生成树 #10064 「一本通 3.1 例 1」黑暗城堡#10065 「一本通 3.1 例 2」北极通讯网络 #10066 「一本通 3.1 练习 1」新的开始#100 ...

  4. Day 13 13.2 requests之请求参数与请求体

    请求参数与请求体参数 一.什么是params参数(请求参数) get 方法是可以向服务器发送信息的,除了可以请求需要的页面之外,也可以发送我们指定的内容,这就是通过 params 参数实现的 requ ...

  5. perlist

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...

  6. Idea2020.2.3 创建JavaWeb项目(部署Tomcat)方法

    1.创建项目不再是Java Enterprise了,而是先New 一个普通Java项目! 2.创建项目后,选择Run->Edit Configuration->左上角加号->Tomc ...

  7. vue3 reactive值不更新

    即上一个随笔里面的form表单数据定义的问题之后,又出现了另一个问题. 页面里面有一个数组: let ruleForm = reactive([     { name:'123456' } ]) 我要 ...

  8. cdn全栈加速nginx二层代理实现

    1 nginx.conf中添加配置如下: server { listen 5050; location / { proxy_pass http://代理IP:3333; proxy_set_heade ...

  9. 在TMOS系统中添加按键检测功能

    目录 TMOS系统中自带有按键检测轮询功能,默认100ms检测一次,在debug时很有帮助.不过在需要低功耗休眠的前提下,检测按键需要频繁唤醒,影响功耗,故多数BLE的工程都没有用到这个功能.代码贴在 ...

  10. PYTHON中的CONCURRENT.FUTURES模块

    一 : 概述 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异 ...