linux 日志管理(linux messages日志)

老铁们,大家好,相信还有很多朋友对于linux 日志管理和linux messages日志的相关问题不太懂,没关系,今天就由我来为大家分享分享linux 日志管理以及linux messages日志的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

Linux日志管理经验总结(crontab+logrotate)

Linux日志管理是一个关键任务,涉及两个主要部分:应用服务自定义和第三方组件管理。对于自家开发的服务,可通过如logback或log4j等日志组件实现精细管理。然而,对于第三方组件如MySQL、nginx和第三方服务如nacos、sentinel,通常依赖组件自身的日志设置,难以按需调整。

特殊情况下,如果未做特殊配置,某些服务可能会持续生成大体积日志,导致磁盘空间耗尽,影响系统运行。这时,可以借助Linux的定时工具crontab配合清理脚本来定期清理过期日志,如示例中的命令:`crontab-e`,设置每日清除7天前的旧日志。

值得注意的是,某些服务运行时,如nginx和MySQL,可能会使用文件句柄跟踪日志,这可能导致额外问题。对于这种情况,推荐使用Linux集成的日志管理工具logrotate。logrotate通过crontab定时执行,允许自定义存储规则,但日志内容取决于服务组件的实现。比如,`logrotate`命令中,`compress`选项用于压缩日志,`rotate count`控制保留的备份次数,`daily`指日志每日备份,`copytruncate`在备份时保留旧数据并截断。

在实践中,可以为特定服务创建logrotate配置,如MySQL和nginx的示例。完整的配置应包括文件路径、备份周期、文件大小限制等参数。关于更详细的组件运行时日志管理,可以参考相关博客文章,但请确保遵守版权规定。

最后,本文提供的信息仅供参考,如在使用过程中遇到问题,建议直接咨询组件官方文档或寻求专业帮助。

LINUX下防火墙iptables的日志管理

iptables的日志(log)由syslogd纪录和管理。初始存放在/var/log/messages里面。自动采取循环纪录(rotation)的方式记录。但是由于混在 messages中,对于管理和监视产生了不便。这里,我简单介绍一下我的 iptables日志的管理,循环,和自动报告生成的经验:

由于iptables是linux的内核本身的功能,由dmesg或syslogd的facility结合内核管理。iptables的日志的初始值是[warn(=4)],需要修改 syslog.conf。

---------------------------------------------------------------

:

kern.=warn/var/log/kern-warn-log←可以自己决定文件名

---------------------------------------------------------------

这里,facility在[kern]是 priority的[warn],日志将被记录在/var/log/kern-warn-log。

日志循环的设置方法:

在/etc/logrotated.d/syslog中追加以下语句:

--------------------------------------------------------------

:

/var/log/kern-warn-log{

rotate 50剩余文件数

postrotate

/bin/kill-HUP `cat/var/run/syslogd.pid 2>/dev/null` 2>/dev/null|| true

endscript

}

--------------------------------------------------------------

/etc/logrotate.conf的初始设置是每周一进行一次log的循环。所以每周的日志将被存在/var/log/kern-warn-log中,之前的旧日志将被顺次存储在 kern-warn-log.1----- kern-warn-log.50中。

另外还有一种方法就是通过iptables直接获取日志:(一般不用)

# iptables-A INPUT-s 127.0.0.1-p icmp-j LOG--log-prefix"iptables icmp-localhost"←保存从eth0进入的packet纪录

# iptables-A INPUT-s 127.0.0.1-p icmp-j DROP←废除从eth0进入的packet纪录

这样一来,/var/log/kern-warn-log的内容将如下所示:

Sep 23 10:16:14 hostname kernel: iptables icmp-localhost IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=57148 SEQ=256

linux中怎样查看日志

方法/步骤

先必须了解两个最基本的命令:

tail-n 10 test.log查询日志尾部最后10行的日志;

tail-n+10 test.log查询10行之后的所有日志;

head-n 10 test.log查询日志文件中的头10行日志;

head-n-10 test.log查询日志文件除了最后10行的其他所有日志;

场景1:按行号查看---过滤出关键字附近的日志

因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.

我是这样做的,首先: cat-n test.log|grep"地形"得到关键日志的行号

<3>得到"地形"关键字所在的行号是102行.此时如果我想查看这个关键字前10行和后10行的日志:

cat-n test.log|tail-n+92|head-n 20

tail-n+92表示查询92行之后的日志

head-n 20则表示在前面的查询结果里再查前20条记录

场景2:那么按日期怎么查呢?通常我们非常需要查找指定时间端的日志

sed-n'/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log

特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效.

关于日期打印,可以先 grep'2014-12-17 16:17:20' test.log来确定日志中是否有该时间点,以确保第4步可以拿到日志

这个根据时间段查询日志是非常有用的命令.

如果我们查找的日志很多,打印在屏幕上不方便查看,有两个方法:

(1)使用more和less命令,如: cat-n test.log|grep"地形"|more这样就分页打印了,通过点击空格键翻页

(2)使用>xxx.txt将其保存到文件中,到时可以拉下这个文件分析.如:

cat-n test.log|grep"地形">xxx.txt

这几个日志查看方法应该可以满足日常需求了.

阅读剩余
THE END