- 了解syslog
1.Syslog协议
系统日志(Syslog)协议是在一个IP网络中转发系统日志信息的标准,它是在美国加州大学伯克利软件分布研究中心(BSD)的TCP/IP系统实施中开发的,目前已成为工业标准协议,可用它记录设备的日志。Syslog记录着系统中的任何事件,管理者可以通过查看系统记录随时掌握系统状况。系统日志通过Syslog进程记录系统的有关事件,也可以记录应用程序运作事件。通过适当配置,还可以实现运行Syslog协议的机器之间的通信。通过分析这些网络行为日志,可追踪和掌握与设备和网络有关的情况。
在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。
2.新的rsyslog日志系统
统一记录系统的各个子系统产生的日志。但是像FTP、HTTP它们都有自己日志记录格式不是系统的Rsyslog。在Rsyslog系统有两个进程分别是klogd,syslogd。而为什么需要两个守护进程呢?是因为内核跟其他信息需要记录的详细程度及格式的不同。
- klogd:记录内核信息,系统启动中在登录之前使用的都是物理终端/dev/console,这个时候虚拟终端还没有启动而内核启动日志都存放在/var/log/dmesg文件中,使用dmesg命令可以查看。
- syslogd:记录非内核系统产生的信息,当系统启动/sbin/init程序时产生的日志都存放在以下各个日志文件中。
/var/log/message #标准系统错误信息;
/var/log/maillog #邮件系统产生的日志信息;
/var/log/secure #记录系统的登录情况;
/var/log/dmesg #记录linux系统在引导过程中的各种记录信息;
/var/log/cron #记录crond计划任务产生的时间信息;
/var/log/lastlog #记录每个用户最近的登录事件;
/var/log/wtmp #记录每个用户登录、注销及系统启动和停机事件;
/var/run/btmp #记录失败的、错误的登录尝试及验证事件;
另外当日志文件过大时会通过系统crontab定义日志滚动的,也称日志切割,由logrotate控制其配置文件/etc/logrotate.conf,然后再由系统任务计划执行。logrotate负责备份和删除旧日志, 以及更新日志文件。
refer to
- https://www.linuxprobe.com/linux-rsyslog-system.html
- https://www.mtyun.com/library/how-to-config-rsyslog