日志管理
处理日志的进程
-
rsyslogd——系统专职日志程序,处理绝大部分日志记录
-
安装的各类应用程序,可以以应用程序自己的方式记录日志
下载,默认系统是已安装的
yum install -y rsyslog
查看rsyslogd进程状态
ps aux |grep rsyslogd
查看服务状态
systemctl status rsyslog.service
常见日志文件
/var/log目录下
/var/log/messages 系统主日志文件
/var/log/secure 认证、安全相关
/var/log/yum.log yum工具操作信息
/var/log/maillog 邮件相关
/var/log/cron 任务计划相关
/var/log/dmesg 系统启动相关
动态查看日志信息
tail -f /var/log/message
tail -f 等同于tailf
可用于动态的查看日志信息,命令终端会锁定日志文件的内容,方便动态查看
rsyslog
rsyslog是linux系统中用来实现日志功能的服务。默认已经安装,并且自动启用。
作用:主要用来采集日志,不生产日志
其特性包括:
-
支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB ElasticSearch,等等;
-
通过 RELP + TCP 实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种 可靠的数据传输通道供其他应用来使用);
-
精细的输出格式控制以及对消息的强大 过滤能力;
-
高精度时间戳;队列操作(内存,磁盘以及混合模式等); 支持数据的加密和压缩传输等。
查询rsyslog的配置文件
rpm -qc rsyslog
q——查询
c——列出配置文件
-
/etc/rsyslog.conf——rsyslogd主配置文件
-
/etc/sysconfig/rsyslog——rsyslogd相关文件,定义级别
-
/etc/logroate.d/syslog——和日志轮转相关
进入/etc/rsyslog.conf主配置文件进行修改
vim /etc/rsyslog.conf
规则RULES——用来约束程序的日志信息,是一套生成日志,以及存储日志的策略
语法格式:设备名.信息级别(由.分割开来) 路径
-
程序/设备名——同一类的应用程序,多种程序的集合
-
程序有其对应的类别,在程序设计时已经制定,操作系统将其划分,设备名相当于这个类别名
-
-
信息级别——决定什么级别的信息才能存放到日志文件(*代表所有信息)
-
路径——程序操作产生的信息所存放的日志文件的路径
设备facility——用来定义日志消息的来源,方便对日志进行分类
日志类型 | 日志内容 |
---|---|
kern | 内核信息 |
user | 用户程序产生的相关信息 |
邮件系统信息 | |
daemon | 守护进程产生的信息 |
auth | pam认证系统信息 |
syslog | 日志系统自身信息 |
authpriv | ssh、ftp等登录信息 |
cron | 系统执行定时任务产生的信息 |
lpr | 打印相关信息 |
mark | 服务内部的信息,时间标识 |
uucp | Unix-to-Unix Copy 两个unix之间的相关通信 |
local0-local7 | 保留,本地使用,用户自定义 |
日志级别priority——定义不同消息的级别
日志等级 | 说明(级别从低到高,记录信息越来越少) |
---|---|
debug | 包含详细的开发情报的信息,通常只在调试一个程序时使用。 |
info | 通用性信息,一般用来提供有用信息 |
notice | 正常信息,但是较为重要,可能需要处理 |
warning | 警告信息 |
error/err | 错误信息,某个功能或者模块不能正常工作的信息 |
crit | 严重级别,系统或整个软件不能正常工作的信息,例如硬盘错误 |
alert | 需要立刻修改的信息,如系统数据库被破坏,ISP连接丢失 |
emerg | 紧急情况,内核奔溃等重要信息 |
none | 什么也不记录 |
修改了主配置文件并不能及时生效,因为rsyslogd服务是在开机时启动的,运行时修改的内容并不会被程序识别,需要重新启动或加载
1、重启电脑
init 6
2、重启程序
systemctl restart rsyslog
不影响服务的情况下,可用以下命令重载:
ps aux |grep rsyslog——查看进程PID
kill -1 PID——重新加载程序配置文件
如果修改了日志文件路径,且加载之后还没有文件生成,可能是因为没有信息产生,所以不会生成文件
补充:
-
修改主配置文件,不要删除,加#号变为注释即可
-
在修改的地方加日期、修改人、修改信息等注释信息,以方便回头修改
logrotate日志轮转
由于磁盘空间是有限的,为了节省空间和整理方便,日志文件经常需要按时间或大小等维度分成多份,删除时间久远的日志文件
日志轮转就像飞机里的黑匣子,记录的信息再重要也只能记录最后一段时间发生的信息
logrotate 程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。
配置
主配置文件/etc/logrotate.conf——决定每个日志文件如何轮转,必须运行的文件,出错将影响系统运行
子配置文件/etc/logrotate.d——自定义配置,方便管理,出错影响小
主文件内容
轮转周期:决定日志文件每过多长时间切割一次
-
daily 指定转储周期为每天
-
weekly 指定转储周期为每周
-
monthly 指定转储周期为每月
日志轮转份数:切割后的日志文件保留的固定数量,超出数量会把最早的文件删除
-
rotate count 指定切割的日志文件保留的个数(不包括当前日志)
创建文件:创建新日志文件
-
create 权限 属主 属组 轮转时指定创建新文件的属性,如create 0777 nobody nobody
命名规则:切割的日志文件命名格式
-
dateext 使用当期日期作为命名格式
压缩:是否把日志文件进行压缩
-
compress 通过gzip 压缩转储以后的日志
-
nocompress 不做gzip压缩处理
-
delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
-
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩
表示包含/etc/logrotate.d文件,在运行这个文件时,也会执行所包含的文件
全局轮转:系统所有程序默认的轮转规则
指定轮转规则只对对应的文件生效,不会执行全局规则
missingok | 如果日志丢失,不报错继续滚动下一个日志 |
errors address | 转储时的错误信息发送到指定的Email 地址 |
ifempty | 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项 |
notifempty | 当日志文件为空时,不进行轮转 |
mail address | 把转储的日志文件发送到指定的E-mail 地址 |
nomail | 转储时不发送日志文件 |
olddir directory | 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统 |
noolddir | 转储后的日志文件和当前日志文件放在同一个目录下 |
sharedscripts | 运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本 |
prerotate | 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行 |
postrotate | 在logrotate转储之后需要执行的指令,例如重新启动 某个服务!必须独立成行 |
maxsize | 当日志文件超过指定大小时就转储,如有周期,则满足其任一条件就执行 |
minsize | 当日志文件达到指定的大小时才可以转储,周期和大小都满足才能转储 |
才可以转储,周期和大小都满足才能转储
在修改日志配置文件时,建议在子配置文件中修改——/etc/logrotate.d