/var/log/messages # 系统服务日志,包括服务的信息,报错等等
/var/log/secure # 系统认证信息日志
/var/log/maillog # 系统邮件服务日至
/var/log/cron # 系统定时任务日志
/var/log/boot.log # 系统启动日志
[root@desktop Desktop]# > /var/log/messages # 清空desktop的messages日志
[root@desktop Desktop]# cat /var/log/messages
[root@desktop Desktop]# systemctl restart sshd.service # 可以任意重启一个服务
[root@desktop Desktop]# cat /var/log/messages # 会生成日志
auth # pam产生的日志
authpriv # ssh,ftp等登录信息的验证信息
cron # 时间任务相关
kern # 内核
lpr # 打印
mail # 邮件
mark(syslog)–rsyslog # 服务内部的信息,时间标识
news # 新闻组
user # 用户程序产生的相关信息
uucp # unix to unix copy, 即unix主机之间相关的通讯
local 1~7 # 自定义的日志设备
debug # 有调式信息的,日志信息最多
info # 般信息的日志,最常用
notice # 最具有重要性的普通条件的信息
warning # 警告级别
err # 错误级别,阻止某个功能或者模块不能正常工作的信息
crit # 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert # 需要立刻修改的信息
emerg # 内核崩溃等严重信息
none # 什么都不记录
注意:从上到下,级别从低到高,记录的信息越来越少,详细的可以查看手册: man 3 syslog连接符号
格式:
日志类型.日志级别 日志处理方式
注:如果有多个规则可以用分号隔开
举例:
*.* /var/log/westos # 所有级别,所有类型的日志都存放在/var/log/westos里
*.*;authpriv.none /var/log/westos # 在所有级别,所有类型中除了authpriv.none日志,其余的都放在/var/log/westos里
[root@desktop Desktop]# vim /etc/rsyslog.conf
55 *.* /var/log/westos # 所有类型所有级别的日志都记录在/var/log/westos中
[root@desktop Desktop]# ll /var/log/westos # 查看自己刚才定义的日志文件,发现不存在,因为没有重启服务,更改文件还没有生效
ls: cannot access /var/log/westos: No such file or directory
[root@desktop Desktop]# systemctl restart rsyslog.service # 改完配置文件之后记得重启服务
[root@desktop Desktop]# ll /var/log/westos
-rw-r--r-- 1 root root 487 Oct 13 03:51 /var/log/westos
udp协议 # 快(类似于发短信),不需要回应
tcp协议 # 慢,但稳定(类似于打电话),需要回应
在日志发送方
vim /etc/rsyslog.conf
*.* @172.25.254.1 # 通过udp协议把日志发送到1主机
*.* @@172.25.254.1 # 通过tcp协议把日志发送到1主机
在日志接收方
vim /etc/rsyslog.conf # 日志规则的主配置文件
15 $ModLoad imudp # 日志接收插件
16 $UDPServerRun 514 # 日志接收插件所使用的端口
[root@server ~]# vim /etc/rsyslog.conf # 在server端(日志发送方)设定日志同步对象(以udp协议的方式同步)
55 *.* @172.25.254.138
[root@server ~]# systemctl restart rsyslog.service
# 在desktop端(日志接收方)打开接收日志的接口(server端开启的是哪个接口,desktop端就开哪个接口,即此处开启udp的接口)
[root@desktop Desktop]# vim /etc/rsyslog.conf
14 # Provides UDP syslog reception
15 $ModLoad imudp
16 $UDPServerRun 514
[root@desktop Desktop]# systemctl restart rsyslog.service # 重启服务
[root@desktop Desktop]# systemctl stop firewalld # 关闭防火墙
# 在客户(server)端测试:
[root@server ~]# logger hello # 在server端生成测试日志
[root@server ~]# logger hello
[root@server ~]# logger hello
[root@server ~]# logger hello
[root@server ~]# cat /var/log/messages # 先在本机查看是否生成
[root@desktop Desktop]# cat /var/log/messages # 再在desktop端查看是否同步成功
$template 格式名称 ,"日志采集格式"
%timegenerated% # 日志生成时间
%FROMHOST-IP% # 日志来源主机的ip
%syslogtag% # 日志生成程序
%msg% # 日志内容
\n # 换行
# 在服务(desktop)端
[root@desktop ~]# vim /etc/rsyslog.conf
47 $template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS
[root@desktop ~]# systemctl restart rsyslog.service
[root@desktop ~]# > /var/log/messages
# 在客户(server)端
[root@server ~]# logger test # 生成日志
[root@server ~]# logger test
[root@server ~]# logger test
[root@server ~]# cat /var/log/messages # 先查看是否在本机生成日志
# 在服务(desktop)端
[root@desktop ~]# cat /var/log/messages # 查看同步过来的日志,格式是否改变
# 在服务端(desktop端)设置时间同步
[root@desktop ~]# vim /etc/chrony.conf
22 allow 172.25.254/24 # 允许谁看
172.25.254 # 所属网段
24 # 子网掩码
注:如果设置成0.0.0.0,则表示任何人都可以访问
29 local stratum 10 # 自己作为时间源
[root@desktop ~]# systemctl restart chronyd.service
# 在客户端(server端)查看同步
[root@server ~]# vim /etc/chrony.conf # 设置同步138这台主机的时间
3 server 172.25.254.138 iburst # iburst表示使得设定立即生效
[root@server ~]# systemctl restart chronyd.service
[root@server ~]# chronyc sources -v # 检测时间是否同步成功
^ # 表示138这台主机是一个服务器
* # 表示已经同步过了
watch # 监控进程
tail # 监控文件
journalctl主要保证日志的时效性和详细性,保存,备份,以及定时删除日志不是他的特长,但是,他也可以实现
注:journalctl查到的是系统当前生成的日志;系统重启之后,内存断过电,保存的日志就会丢失,用journalct就查看不到日志;而/var/log/messages文件里记录的是被采集过的日志,系统重启不影响其对日志的记录
journalctl # 查看系统当前的所有日志
journalctl -n 3 # 查看最新的三条日志
journalctl -p err # 查看报错日志
journalctl -f # 监控日志
journalctl --since --until # -从什么时间到什么时间的日志
journalctl -o verbose # 显示日志能够使用的详细进程参数
[root@desktop ~]# journalctl # 查看所有日志
[root@desktop ~]# journalctl -n 3 # 查看最新的三条日志
[root@desktop ~]# journalctl --since 9:00 # 查看从9点开始的日志
[root@desktop ~]# journalctl --since 9:00 --until 9:01 # 查看9点到9:01的日志,但是发现并没有9:01的日志
[root@desktop ~]# journalctl --since 9:00 --until 9:01:50 # 此时就可以看到9:01的日志
[root@desktop ~]# journalctl -p err # 查看错误日志
# 当有两个相同的进程,但是进程的PID不同,想要查找其中一个进程的日志时,/var/log/messages就不能满足我们
[root@desktop ~]# systemctl status sshd
[root@desktop ~]# systemctl restart sshd.service
[root@desktop ~]# systemctl status sshd
[root@desktop ~]# journalctl -o verbose # 查看日志的详细信息,包括PID等
[root@desktop ~]# journalctl _PID=1254 _COMM=sshd # 根此时就可以据自己的需求来查找特定的日志
[root@desktop ~]# journalctl _PID=2426 _COMM=sshd
对systemd-journald的管理
默认此程序只负责对日志进行查看而不对日志进行保存和采集,那么关机后再开机,对日志进行查看,
只能查看开机后的日志,系统之前的日志全部都保存在内存里,关机后内存释放后就被清空了,开机
后用journalctl看不到
# 如何让journalctl 采集日志,即系统重启之后还可以通过journalctl查看到日志(让systemd-journald保存日志到硬盘中)
[root@desktop ~]# mkdir /var/log/journal # 建立目录存放journalctl 采集的日志
[root@desktop ~]# ll -d /var/log/journal
drwxr-xr-x 2 root root 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# chgrp systemd-journal /var/log/journal/ # systemd-journal
[root@desktop ~]# ll -d /var/log/journal
drwxr-xr-x 2 root systemd-journal 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# chmod g+s /var/log/journal/ # 使得产生的日志全部属于systemd-journal组
[root@desktop ~]# ll -d /var/log/journal
drwxr-sr-x 2 root systemd-journal 6 Oct 14 10:14 /var/log/journal
[root@desktop ~]# ps aux | grep systemd-journal # 查看systemd-journal的进程号
root 358 0.0 0.2 40864 2160 ? Ss 09:00 0:00 /usr/lib/systemd/systemd-journald
root 2784 0.0 0.0 112640 940 pts/0 R+ 10:15 0:00 grep --color=auto systemd-journal
[root@desktop ~]# kill -1 358 # 为了让更改生效,但是不想重启系统,就用这条命令实现
[root@desktop ~]# cd /var/log/journal/
[root@desktop journal]# ls
946cb0e817ea4adb916183df8c4fc817
[root@desktop journal]# bootctl # 查看系统的id,可以看到与上面一致
[root@desktop journal]# ll 946cb0e817ea4adb916183df8c4fc817
total 8192-rw-r----- 1 root systemd-journal 8388608 Oct 14 10:16 system.journal
[root@desktop journal]# date # 查看重启之前的时间
[root@desktop journal]# reboot
[root@desktop ~]# cd /var/log/journal/
[root@desktop journal]# ls
946cb0e817ea4adb916183df8c4fc817
[root@desktop journal]# cd 946cb0e817ea4adb916183df8c4fc817/
[root@desktop 946cb0e817ea4adb916183df8c4fc817]# ls
system.journal user-42.journal
[root@desktop 946cb0e817ea4adb916183df8c4fc817]# journalctl # 此时就可以看到重启之前的日志了
注:user-42.journal采集的是日志数据,而不是文件,所以不能用cat user-42.journal来查看日志,直接进入到user-42.journal所在目录,用journalctl 命令直接查看日志即可
timedatectl status # 显示当前时间信息
timedatectl set-time # 设定当前时间
timedatectl set-timezone # 设定当前时区
timedatectl set-local-rtc 0|1 # 设定是否使用utc时间,可以解决双系统时间错乱问题,0表示开启,1表示不开启
timedatectl list-timezones # 查看支持的所有时区
UTC # 世界时间
RTC # 硬件时间(bios time)
CST # 本地时间
[root@desktop ~]# timedatectl
[root@desktop ~]# timedatectl list-timezones
[root@desktop ~]# timedatectl set-timezone Asia/Shanghai
[root@desktop ~]# timedatectl
[root@desktop ~]# timedatectl set-local-rtc 1 # 这个命令相当于修改/etc/adjtime文件
[root@desktop ~]# cat /etc/adjtime
[root@desktop ~]# timedatectl
[root@desktop ~]# timedatectl set-local-rtc 0
[root@desktop ~]# cat /etc/adjtime
[root@desktop ~]# timedatectl set-time "2018-08-08 22:22:22" # 临时更改时间
[root@desktop ~]# date # 更改成功
Wed Aug 8 22:22:24 CST 2018
注:如果临时修改时间没有成功,可能是时间同步打开了,关闭即可
[root@desktop ~]# timedatectl set-time "2019-05-15 12:52"
Failed to set time: Automatic time synchronization is enabled
[root@desktop ~]# timedatectl set-ntp no # 关闭同步
[root@desktop ~]# timedatectl set-time "2019-05-15 12:52" # 临时修改成功
[root@desktop ~]# date
Wed May 15 12:52:09 CST 2019