操作系统学习 认识Linux日志系统

一、系统日志日志在所有应用系统中都占有极其重要的位置,本文主要介绍linux系统内核的日志,另外还介绍了一些日志分析工具 。
1. 说明看Linux系统信息日志主要的两种途径:

  • dmesg,用来检测和控制内核环缓冲 。
  • /var/log 下的文件
2. dmesgLinux将系统启动信息传到ring buffer中,内核产生的信息由printk()函数打印出来 。printk()函数打出的信息用数字表示消息重要级别,高于一定级别会打印到屏幕 。
sudo dmesg > message.txt打印最近一次的信息
sudo dmesg | tail -f【操作系统学习 认识Linux日志系统】Linux系统启动后,由/etc/init.d/sysklogd先后启动klogd,syslogd两个守护进程 。
- klogd:kernel,记录内核相关的日志? - syslogd:service,记录应用程序的日志
3. klogd使用klogd读取内核信息有两种方式:
  1. syslog()函数
  2. 读取/proc/kmsg/得到内核printk()发出的信息 。
klogd的输出结果会传送给syslogd进行处理,syslogd会根据/etc/syslog.conf的配置把log信息输出到/var/log/下的不同文件中.
4. 常用的系统日志文件/var/log/boot.log记录本次开机时的启动信息,包括内核检测硬件、各种内核支持的功能等 。
/var/log/cron 计划任务的日志/var/log/dmesg系统启动时,内核检测过程中产生的信息 。
/var/log/lastlog记录账号最后一次登陆信息 。
/var/log/maillog或/var/log/mail/*邮件往来记录 。
/var/log/messages记录很多信息,系统有问题时的必查文件 。
/var/log/secure记录一些账号登陆信息,如pop3、ssh、telnet、ftp登陆信息 。
/var/log/wtmp,/var/log/faillog成功与失败登陆的记录 。
/var/log/httpd/*,/var/log/samba/*一些网络服务产生的日志 。
5. syslogdsyslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括从klogd接收到的日志 。klogd首先接收内核的日志,然后将之发送给syslogd 。syslog函数原型:
syslog(priority, "%s", string);二、Rsyslog服务收集日志1. Rsyslog服务说明Rsyslog是Linux下强大而安全的日志处理系统 。
Rsyslog可以单机运行,也可以C/S方式运行 。
  • 单机模式下,日志信息发送到本机的Rsyslog服务中,Rsyslog服务将日志记录到本地存储中;
  • C/S模式下,服务端和客户端都启动Rsyslog进程,客户端向服务端指定的Rsyslog端口发送日志 。
2. 在Deepin或Ubuntu系统上安装Rsyslog# 安装sudo apt install rsyslogrsyslogd -v# 查看状态systemctl status rsyslog.service# 重启systemctl restart rsyslog.service# 启动systemctl start rsyslog.service
操作系统学习 认识Linux日志系统

文章插图
 
3. rsyslog.service的配置文件
  • /etc/rsyslog.conf
2.3.1 配置C/S工作模式服务端配置文件:
vim /etc/rsyslog.conf##################### MODULES ###################### 开启UDP端口module(load="imudp")input(type="imudp" port="514")# 开启TCP端口module(load="imtcp")input(type="imtcp" port="514")# 可选配置--用于限制特定子网、IP等的访问$AllowedSender TCP, 127.0.0.1, 10.10.10.0/8, *.xiem.com服务器端要配置放行指定的端口号 。
客户端vim /etc/rsyslog.conf$PreserveFQDN on# 允许主机名保留FQDN##Enable sending of logs over UDP add the following line:# 配置使用UDP发送消息*.* @服务器ip或域名:514# 添加远程RSYSLOG服务器##Enable sending of logs over TCP add the following line:# 配置使用TCP发送消息*.* @@服务器ip或域名:514# 配置当服务端不在线时的处理方式:进行本地缓存$ActionQueueFileName queue$ActionQueueMaxDiskSpace 1g$ActionQueueSaveOnShutdown on$ActionQueueType LinkedList$ActionResumeRetryCount -12.3.2 查看日志ls /var/log/rsyslog-client/2.3.3 查看服务端监听的端口netstat -4altunp | grep 514三、logrotate 日志管理工具1. logrotate说明logrotate是一个Linux系统日志的管理工具 。它可以切割、压缩等其他软件的日志文件软件 。logrotate是基于crontab运行的,所以这个时间点是由crontab控制的,其脚本是/etc/cron.daily/logrotate 。Logrotate会调用配置文件/etc/logrotate.conf 。可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值 。
2. centos使用logrotate切分Nginx日志示例:yum -y install logrotate查看配置文件位置:
rpm -ql logrotate其中: