管理
systemctl status rsyslogd , ps -e |grep rsysload 查看rsysload服务状态
systemctl restart ,start,stop 服务名称 重启服务,开启服务,停止服务
systemctl list-unit-files | grep rsysload 查看是否开启了rsysload 服务自启动
systemctl enable rsysload 加入启动项
netstat -an | grep 22 检查22号端口是否开启监听
日志概念
日志服务rsyslog取代了原先的syslogd rsyslogd特点: 1.基于Tcp网络协议传输日志信息 2.更安全的网络传输方式 3.有日志消息的及时分析框架 4.后台数据库 5.配置文件中可以写简单的逻辑判断 6.与syslog配置文件相兼容日志格式:会包含事件产生的时间,发生事件的服务器的主机名,产生事件的服务名或程序名,事件的具体信息。
日志文件
日志文件 | 说明 |
---|---|
/var/log/cron | 记录了系统定时任务的日志信息 |
/var/log/cups/ | 记录打印的日志信息 |
/var/log/dmesg | 记录系统开机时内核自检的日志信息 |
/var/log/btmp | 记录错误登陆的日志信息,该文件是二进制,用lastb命令 直接查看 |
/var/log/lastlog | 记录系统所有用户最后一次登陆时间的日志。该文件是二进制文件,用lastlog命令 直接查看 |
var/log/mail/ | 记录邮件信息 |
/var/log/messages | 记录系统中绝大多数重要信息 |
/var/log/secure | 记录验证和授权方面的信息,添加用户,修改密码,sudo授权 都会记录 |
/var/log/wtmp | 永久记录所有用户的登陆,注销信息,记录重启,关机事件 用last命令 直接查看 |
/var/run/utmp | 记录当前已经登陆的用户的信息,查看w命令直接查看 |
比如apache服务
/var/log/httpd/ apache 服务 | /var/log/mail/ apache邮件服务额外服务 |
/var/log/samba/ apachesamba服务的日志目录 | /var/log/sssd/ apache守护进程安全 服务目录 |
注:除了系统默认日志外,采用rpm包安装的服务也放在/var/log目录下;源码包安装的在指定目录下。
日志 /etc/rsyslog.conf配置文件
格式: 服务名称 [连接符号] 日志等级 日志记录位置
意义: 认证相关服务.所有日志等级 记录在/var/log/secure
服务名称 | 说明 | 连接符号 | 说明 | 等级名称 | 说明 |
---|---|---|---|---|---|
auth | 安全和认证相关消息 | * | 代表所有日志等级,若该服务指定该连接符,那么该服务产生的所有日志等级都记录 | debug | 一般调试信息的说明 |
authpriv | 安全认证相关消息(私有的) | . | 比如a.info 代表cron服务产生的日志,只要日志等级大于等于info等级都记录 | info | 基本的通知说明 |
cron | 系统定时任务cront和at产生的日志 | .= | 只记录所需等级的日志,比如a.=emerg,a服务产生的日志只记录emerg | notice | 普通信息,但是有一定的重要性 |
daemon | 和各个守护进程相关产生的日志 | warning | 警告信息,但是不影响服务器系统的运行 | ||
ftp | ftp守护进程产生的日志 | err | 错误信息,一般到err等级信息就会影响服务器系统的运行 | ||
kern | 内核产生的日志(不是用户进程产生的) | crit | 临界状况信息,比err等级还要严重 | ||
local(10-17) | 为本地使用预留的服务 | alert | 警告状态信息,比crit还要严重,必须立即采取行动 | ||
lpr | 打印产生的日志 | emerg | 疼痛等级信息,系统已经无法使用了 | ||
邮件收发信息 | |||||
news | 与新闻服务器相关的日志 | ||||
syslog | 有syslogd服务产生的日志信息(虽然服务名改名rsyslogd,许多配置还是用syslogd) | ||||
user | 用户等级类别的日志信息 | ||||
uucp | uucp子系统的日志信息,前期用于数据传递的协议,后来用在新闻组服务器中 |
日志记录位置
- 绝对路径,比如 " /var/log/secure"
- 系统设备文件,比如 " /dev/lp0"
- 转发给远程主机,比如 " @1992.168.105.1:54"
- 用户名,如 "root"
- 忽略或丢弃日志,如 "~"
[root@aubin aubin]# cat /etc/rsyslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
轮替logrotate
日志轮转原因: 日志文件时间一长,占用越来越多。可以通过日志轮替处理 轮替概念:日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。①若配置文件中有 "dateext"参数,则日志会用日期作为日志文件的后缀名,不需要对日志文件改名,删除多余的日志文件即可。
②若配置文件中没有 "dateext"参数,则第一次轮转日志会将当前日志改名为一个secure.1,并创建新的secure,
第二次将当前的secure改名为secure.1,之前的secure.1改名为secure.2, 就形成了 secure --> secure.1 --> secure.2 --> secure.3
logrotate文件参数
logrotate的配置文件的常用参数时间参数 日志保留的份数 错误处理 权限处理 脚本调用
yearly - 按年转存日志 rotate 5 转存保留5份日志 missingok - 转存时忽略任何错误 create 指定转存日志权限 prerotate/endscript -指定日志转存前调用脚本
monthly - 按月转存日志 eg: create 644 root root postrotate/endscript - 指定日志转存后调用脚本
weekly - 按周转存日志 日志的压缩 eg: prerotate
daily - 按日转存日志 compress - 转存的日志使用gzip压缩 空日志处理 脚本.sh
delaycompress- 不压缩最近一次的日志 notifempty - 不转存空日志 endscript
logrotate的配置文件
[root@aubin aubin]# vim /etc/logrotate.conf
weekly
# 每周对日志文件进行一次轮替
# keep 4 weeks worth of backlogs
rotate 4
#共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
# create new (empty) log files after rotating old ones
create
#创建新的空的日志文件,在日志轮替后
# use date as a suffix of the rotated file
dateext
# 使用日期作为日志轮替文件的后缀
# uncomment this if you want your log files compressed
#compress
# 日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# 包含 /etc/logrotate.d/ 目录中所有的子配置文件。也就 是说会把这个目录中所有子配置文件读取进来,
#下面是单独设置,优先级更高。
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly # 每月对日志文件进行一次轮替
create 0664 root utmp # 建立的新日志文件,权限是 0664 ,所有者是 root ,所属组是 utmp 组
minsize 1M # 日志文件最小轮替大小是 1MB 。也就是日志一定要超过 1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储
rotate 1 # 仅保留一个日志备份。也就是只有 wtmp 和 wtmp.1 日志保留而已
}
/var/log/btmp {
missingok # 如果日志不存在,则忽略该日志的警告信息
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
补充:
1.mail address 当日志轮替时,输出内容通过邮件发送到指定的邮箱地址 154548@126.com
2.notifempty: 如果日志为空文件,则不进行日志轮替
3.minsize大小:日志轮替的最小值,日志达到最小值才会轮替,时间到了也没用
4.size大小:日志只有大于指定大小才能进行日志轮替,而不是按照时间轮替
5.dateext:使用时间作为日志轮替文件的后缀。
logrotate命令
格式:logrotate 选项 配置文件名选项 | 功能 |
---|---|
-v | 显示日志轮替过程 |
-f | 强制进行日志轮替,不管日志轮替的条件是否符合。 |
显示强制轮替的信息
[root@aubin aubin]# logrotate -fv /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d
某软件日志的配置
vim /etc/logrotate.d/xxxx注: 日志的轮转一般是/etc/logrotate.conf默认设置,若转储的日志文件没有特殊配置,则遵循默认设置的参数。
比如
1.软件包的安装
yum install -y logrotate
2.定位日志配置文件
ls -l /var/log/wtmp
-rw-rw-r--. 1 root utmp 46464 Feb 9 08:48 /var/log/wtmp
3.编辑配置文件
vim /etc/logrotate.d/wtmp
配置如下:
/var/log/wtmp {
yearly
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root utmp
}
注:没有就创建,配置文件名称与日志文件名称一致(方便管理)
4.测试配置文件
logrotate -d /etc/logrotate.d/wtmp
5.手动运行配置文件(可选)
logrotate /etc/logrotate.conf 或 logrotate /etc/logrotate.d/wtmp
注:
prerotate和postrotate主要用于在日志轮替的同时,执行指定的脚本,一般用于日志轮替之后重启服务。
这里强调,如果你的日志是写入rsyslog服务的配置文件的,那么把新日志加入logrotate后,一定要重启rsyslog服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。
那是因为虽然logrotate知道日志轮替了,但是rsyslog服务却并不知道。
同理,如果你的日志不是被rsyslog管理,如源码包安装的Apache、Nginx等服务,则需要重启Apache或Nginx服务,否则日志也不能正常轮替。
所以通常操作的方式是,日志文件轮替完成之后,重启一下服务器,所有的相关服务都进行了重启,从而使轮替后的配置文件都能正常适用。
参考博客
https://blog.51cto.com/cmdschool/1896025
http://c.biancheng.net/view/1106.html
https://blog.csdn.net/liuyuelinjiayou/article/details/108001182
每日一评:どんなに苦しくても大変でも、じっと辛抱すれば必ず報われる。