日志管理

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

一、日志管理

处理日志的进程

  • rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron
  • httpd/nginx/mysql等等应用可以以自己的方式记录日志
[root@localhost ~]# ps aux | grep rsyslogd
  • 日志可以存放在本地
  • 日志可以存放在远程服务器

常见的日志文件(系统、进程、应用程序)

日志文件作用描述
tail /var/log/messages系统日志文件
tail 20 /var/log/messages
tail -f /var/log/messages动态查看日志文件的尾部
tail /var/log/secure认证、安全
tail /var/log/maillog和邮件postfix相关
tail /var/log/croncrond、at进程产生的日志
tail /var/log/dmesg和系统启动相关
tail /var/log/audit/audit.log系统审计日志
tail /var/log/yum.logyum
tail /var/log/mysqld.logMysql
w当前登录的用户/var/log/wtmp
last最近登录的用户/var/log/btmp
lastlog所有用户的登录情况/var/log/lastlog

案例

统计登录失败top5
[root@localhost ~]# grep -i 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c |sort -k1 -n -r |head -5
779 hadoop
501 test
261 183.240.132.21
224 user
21 195.54.160.183

统计登录成功
[root@localhost ~]# grep 'Accepted' /var/log/secure |awk '{print $(NF-3)}' |sort |uniq -c
4 117.90.214.165
2 122.194.35.187
# 直接写$(NF) 指的就是最后一列
# 如果是$(NF-3) 减去3,就是倒数第四列

查看网卡是否已被驱动
[root@localhost ~]# grep -i eth /var/log/dmesg
[ 2.090634] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:bb:9a:bb
[ 2.090642] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection

rsyslog子系统

[root@localhost ~]# rpm -qc rsyslog 
/etc/logrotate.d/syslog # 日志轮转(切割)相关 
/etc/rsyslog.conf # rsyslogd的主配置文件 
/etc/sysconfig/rsyslog # rsyslogd相关文件
[root@localhost ~]# vim /etc/rsyslog.conf
# 告诉rsyslogd进程 哪个设备(facility),关于哪个级别的信息,以及如何处理
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
authpriv.*                                              *					# 所有终端
authpriv.*                                              @192.168.1.123		# 以UDP的方式发送给远程服务器
authpriv.*                                              @@192.168.1.123		# 以TCP的方式发送给远程服务器
设备类型(表示日志类型)解释
LOG_AUTHPRIV安全认证
LOG_CRONcron 和at
LOG_DAEMON后台进程
LOG_FTPftp进程
LOG_KERN内核信息
LOG_LOCAL0 through LOG_LOCAL7用户自定义设备
LOG_LPR打印子系统
LOG_MAIL邮件系统
LOG_NEWS新闻子系统
LOG_SYSLOGsyslog自身产生的日志
级别(日志重要级别)解释
LOG_EMERG紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT报警,需要立即处理,如磁盘空间使用95%
LOG_CRIT致命行为
LOG_ERR错误行为
LOG_WARNING警告信息
LOG_NOTICE普通
LOG_INFO标准信息
LOG_DEBUG调试信息,排错才开,一般不建议使用
  • 案例1:将authpriv设备日志记录到/var/log/auth.log
vim /etc/rsyslog.conf
#authpriv.* /var/log/secure
authpriv.* /var/log/auth.log
  • 案例2:改变应用程序sshd的日志设备为local5,并定义local5设备日志记录到/var/log/local5.local
1.设置ssh程序的日志设备为自定义设备

# vim /etc/ssh/sshd_config
#SyslogFacility AUTHPRIV
SyslogFacility LOCAL5

2.设置自定义设备日志文件存储位置

# vim /etc/rsyslog.conf
local5.* /var/log/local5.local

3.重启生效

# systemctl restart sshd
# systemctl restart rsyslog

4.尝试登录,触发日志

5.观察日志,理解自定义日志设备

# ll /var/log/local5.local
-rw-------. 1 root root 201 /var/log/local5.local
cat /var/log/local5.local
  • 案例3:使用logger程序写日志到指定的设备及级别
logger "run....."
logger -p emerg "run......"
logger -p authpriv.info "run......"

二、 logrotate 日志轮转
注:针对任何日志文件(rsyslog日志、Nginx访问或错误日志)

logrotate(轮转,日志切割)

  • 如果没有日志轮转,日志文件会越来越大
  • 将丢弃系统中最旧的日志文件,以节省空间
  • logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
[root@localhost ~]# cat /etc/cron.daily/logrotate 
#!/bin/sh 

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf 
# 日志轮转状态/var/lib/logrotate/logrotate.status 
# 日志轮转规则按照/etc/logrotate.conf中来
[root@localhost ~]# ls /etc/logrotate.conf /etc/logrotate.d/ 
/etc/logrotate.conf 

/etc/logrotate.d/: 
bootlog chrony syslog wpa_supplicant yum
  • 主配置文件
[root@localhost ~]# vim /etc/logrotate.conf 
weekly # 一周轮转一次 
rotate 4 # 保留4份日志 
create # 主动创建新的日志文件 
dateext # 使用日期来作为文件名的后缀 
#compress # 每次轮转需不需要进行压缩 
include /etc/logrotate.d # 导入其他应用的日志轮转规则 
/var/log/wtmp { # 对该日志文件设置轮转的方法 
    monthly # 一个月轮转一次 
    create 0664 root utmp # 轮转后创建新文件,并设置权限 
    minsize 1M # 最小达到1M才会轮转 
    rotate 1 
}

/var/log/btmp { 
    missingok # 丢失不提醒 
    monthly 
    create 0600 root utmp 
    rotate 1 
}
  • 参数
monthly日志文件按月轮询。其他可用值为’daily‘,’weekly‘或者’yearly
rotate 5:一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
compress:在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress:总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok:在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty:如果日志文件为空,轮替不会进行。
sharedscripts:以下脚本只执行一次
create 644 root root:以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript:在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
size大小:日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如size100k
minsize大小:日志轮替的最小值,也就是日志一定要达到这个最小值才会进程轮转,否则就算达到时间也不轮替
  • 举例
http自己有自己预先写好的轮替,不过我们可以把他移走,自己写一个
[root@localhost ~]# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
	missingok
	notifempty
	sharedscripts
	#以下脚本只执行一次
	delaycompress
	postrotate
	#在日志轮替结束之后,执行以下脚本
		/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
	#重载apache服务
	endscript
	#脚本结束
}
[root@localhost ~]# mv /etc/logrotate.d/httpd ~
[root@localhost ~]# vim /etc/logrotate.conf
"/var/log/httpd/access_log" /var/log/httpd/error_log {
#日志轮替的是/var/log/httpd/中RPM包默认安装的apache正确访问日志和错误日志
	rotate 5
	#轮替5次
	mail www@my.org
	#把信息发送到指定邮箱
	size 100k
	#日志大于100KB时才进行日志轮替,不再按照时间轮替
	create 644 root root
	sharedscripts
	#以下脚本只执行一次
	postrotate
	#在日志轮替结束之后,执行以下脚本
		/usr/bin/killall -HUP httpd
	#重启apache服务
	endscript
#脚本结束
}
不过改完要记得去手动执行一下/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf这个命令,这个是每天他会自己去定时任务启动轮替的,执行一次就切割一次
[root@localhost ~]# cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status
/etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
	/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
Linux日志管理 Linux日志管理主要包括集中收集、分类存储、定期清理与快速查询。关键日志存储在/var/log/目录下,如messages(系统日志)、secure(认证日志)等。主要工具有传统syslog(通过rsyslog.conf配置)、现代journald(使用journalctl命令查询)以及grep/awk等文本分析工具。日志可配置为集中管理,服务端启用TCP监听接收多客户端日志。systemd-journald服务支持持久化存储,通过journald.conf配置Storage参数(persistent/v 阅读详情

相关推荐

springcloud日志管理--为新服务添加日志管理

傻瓜式为springcloud服务添加日志管理,按步骤执行即可。 ->整体逻辑(反向开发) preprocess-service: 请求->PreprocessController->SysLoggerAspect->LoggerService->RabbitConfig->发送封装好的消息到消息队列; log-service: 接收消息队列中的消息->R

henu_xiaohei的博客 1万+

二、rsyslog日志配置&logrotate

logrotate日志转储的配置

2318

ELK日志管理平台

一、企业中的日志 日志主要包括系统日志、应用程序日志和安全日志。每条日志都记载着时间戳、主机名、使用者及操作行为等相关的描述,系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,及时分析问题、追查错误根源纠正错误。   在大数据时代,日志数量巨大,种类多样化,企业数据就如同一座亟待开发的金矿;日志的统

polaris_1的博客 7908

什么是日志管理,如何进行日志管理

日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的系统实践,此重要功能为网络管理人员提供了解决问题和优化IT基础设施性能的方法,并帮助网络安全管理人员获得识别威胁、进行取证分析并保持对监管标准的遵守。

ITmoster的博客 2890

日志的管理

日志的管理

weixin_46065214的博客 4576

11.日志管理

一些日志文件的说明与使用

weixin_47252600的博客 1405

什么是基于云的 SIEM

基于云的安全信息和事件管理(SIEM)是一种网络安全解决方案,旨在保护组织免受网络威胁、识别安全威胁并帮助他们遵守严格的数据法规。它利用云计算技术来应对不断变化的网络安全形势和日益复杂的 IT 基础设施所面临的挑战。

ITmoster的博客 1196

Linux-日志管理

本章主要讲解linux日志管理的基础篇,分为管理简介、rsyslog服务及日志轮替三个小节,其中会讲解日志的排序格式,以及怎么去看懂其中的各个字段它们的含义。

记录所思、所学、所感,分享每一份收获。 5171

如何进行日志管理?有好用的日志管理软件吗?

近年来,IT系统逐渐呈现海量化和异构化的趋势,企业每天可能会产生上百GB甚至TB级的日志数据,如何实现日志数据的集中化接入,以及保障日志管理的持续拓展性,成为企业日志管理的一大难点。...

weixin_42556618的博客 899

【DevOps】日志管理工具 - 22种 选型(读这一篇就够了)

日志管理工具是为了在生产环境中,有效管理日志数据而提供的灵活、经济、有效的解决方案。现在来盘点下常见的 **22 种** 日志管理工具,调研下它们各自的特点、优缺点、管理架构、效果等,以便可以为业务选择合适的解决方案。

沙师弟专栏 9327

日志管理的重要性及实践

日志管理是任何IT系统管理的重要组成部分,对于C++开发的系统而言同样至关重要。通过日志生成、收集、存储、分析、审计和归档,可以确保系统的稳定运行和安全合规。在进行日志管理时,需要注意日志的完整性、安全性、可用性和合规性。使用合适的工具,如Logstash、Elasticsearch、Kibana、Graylog和Splunk,可以更有效地管理和分析日志数据。希望本文对你有所帮助。

码事漫谈 1204

Linux日志管理详解

日志是Linux系统运维中的重要组成部分,它记录了系统、服务以及应用程序的运行状态和行为。通过日志,管理员可以排查故障、监控系统状态、分析性能以及优化配置。本文将从Linux日志的种类、管理工具、常用命令以及日志轮转等方面进行详细讲解。

1252

nodejs之日志管理

不管是什么项目,日志一直是一个重要组成部分,它可以随时供你查看重要数据信息,在nodejs中查看实时日志可以用pm2 logs查看,如果用户比较多怎么办了?如何将正常日志和错误日志分开?如何对每天的日志归档?下面我们一起来看下。 使用log4js创建日志文件,新建logs目录,在目录下新建cheese.log和logger.js文件 在logger.js中加入以下代码 var log4js ...

u013196396的博客 1万+

Spring Aop 日志管理

<br />Spring Aop 日志管理<br />Spring 带给我们的另一个好处就是让我们可以“专心做事”,下面我们来看下面一个例子:<br />public void doSameSomesing(int age,String  name){<br />     // 记录日志<br />     log.info("调用doSameSomesing方法,参数是:"+agfe+” ”+name);<br />     // 输入合法性验证<br />     if (age<=0){<br /> 

java傻瓜式教程 8465

如何解决日志管理

一个稍大一点的系统,通常就需要考虑内嵌一个日志系统,无论这个系统是多么精简,至少能给开发人员定位问题。而常用的方法无过于使用控制台的printf和文件记录fwrite函数。 在一个大型系统中,日志该如何管理,当系统运行n天后,发现了一个BUG,难道要去控制台截取printf打印?生成一个巨大的日志文件吗?是这么做的吗?可行吗?这个问题的答案是非常明显的,我们不能用printf来做大型系统的日志管

lida2003的专栏 2115

java程序日志管理

初入软件开发这一行的人,可能对日志管理的概念并不是很明确,大概是由于经验所限,以至于根本还考虑不到这个问题。 而从某种意义上来说,日志管理实际上也不需要初入这一行的人来管,他们只需要负责实现自己的主要业务逻辑和功能就好了。 我当初刚入行的时候就有很长一段时间完全不用去关心日志,到后来偶尔涉及到的时候,也都是从其他地方采用cv大法直接搬用。 不过,随着工作时间的变化,随着手头上任务重要程度的变化

程序员涂小哥的技术博客 7915
上一篇: 计划任务
下一篇: 边界网关路由协议(BGP)
Dream visit
博客等级 码龄7年 1077粉丝 54原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值