Linux的系统日志
当守护进程工作时,它们将任务的详细信息记录进日志文件中,作为它们做过什么的“历史”信息。这些守护进程的工作内容涵盖从使用原子钟同步时钟到管理网络连接。所有这些都被记录进日志文件,这样当有错误发生时,你可以通过查阅特定的日志文件来看出发生了什么。
日志采集 rsyslog
进程和操作系统内核需要能够为发生的事情记录日志,这些日志可用于系统的审核和问题的故障排除,一般这些日志永久的储存在 /var/log 目录中。
日志采集目录
日志文件 | 用途 |
/var/log/messages | 服务信息日志,大多数系统日志信息记录在此 |
/var/log/secure | 系统登陆日志,安全和身份认证系相关的信息和错误的日志文件 |
/var/log/cron | 邮件日志,与邮件服务器相关的日志文件 |
/var/log/maillog | 定时任务日志,与定时任务相关的日志文件 |
/var/log/boot.log | 系统启动日志 |
rsyslog 服务
rsyslog 是一个开源的工具,负责采集日志和分类存放日志,被广泛用于 Linux 系统以 TCP/UDP 协议转发或接收日志的消息
rsyslog 服务的主配置文件为 /etc/rsyslog.conf
日志采集规则
vim /etc/rsyslog.conf 打开日志采集的配置文件
* . * /var/log/westos
第一个星号表示日志的类别,第二个星号表示日志的级别
日志类别
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 | 什么都不记录 |
- 每次配置完文件后,一定要重启服务才能生效
systemctl restart rsyslog.service ##重启日志服务
- 从上到下,级别从低到高,记录的信息越来越少
- 详细的可以查看手册:man 3 syslog
日志的远程同步
发送端配置
vim /etc/rsyslog.conf 配置日志采集文件
将所有类型所有级别的日志同步到ip地址为172.25.254.xxx的主机中,
@ip表示采用UDP的传输协议同步,@@表示采用TCP的方式传输协议进行同步
接收端配置
vim /etc/rsyslog.conf 配置日志采集文件
去掉15、16行的注释符如果采用TCP传输协议同步,需要去掉19、20行的注释符
每次设置完成必须重启日志服务,关闭防火墙,使配置生效
systemctl restart rsyslog.service 重启日志服务
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 关闭防火墙开机自启
清空日志内容,并指定日志内容,分别在接收端额发送端查看
> /var/log/messages 清空日志文件
logger test 指定文件test到日志中
日志采集格式的设定
vim /etc/rsyslog.conf 打开配置文件,设定采集格式
格式设定的内容
%timegenerated% | 显示日志时间 |
%FROMHOST-IP% | 显示主机ip |
%syslogtag% | 显示记录目标 |
%msg% | 日志内容 |
\n | 换行 |
systemctl restart rsyslog.service 重启日志服务
系统时间调整工具 timedatectl
timedatectl | 管理系统时间 |
timedatectl status | 显示当前时间信息 |
timedatectl set-timezone “Asia/Shanghai” | 设置当前时区,更改当前时区分为东8区 |
timedatectl set-time “2016-08-08 12:12” | 设置当前时间 |
timedatectl set-local-rtc 0/1 | 设置是否使用utc时间 |
timedatectl list-timezones | 查看支持的时区 |
timedatectl 管理系统时间
timedatectl status 显示当前时间信息
timedatectl set-timezone "Asia/Shanghai" 设置当前时区,更改当前时区分为东8区
timedatectl set-time "2016-08-08 12:12" 设置当前时间
timedatectl set-local-rtc 0/1 设置是否使用utc时间
timedatectl list-timezones 查看支持的时区
timedatectl status 显示当前时间信息
timedatectl set-timezone "Asia/Hong_Kong" 设置当前时区,更改当前时区为香港的时区
timedatectl set-local-rtc 0/1 设置是否使用utc时间
timedatectl list-timezones 查看支持的时区
时间同步服务 chronyd
在服务端打开 vim /etc/chrony.conf 时间同步配置文件,配置相关参数
允许指定ip或者网络位相同的的客户端来同步本机时间
设定服务端的时间优先级为10(本机不同步任何主机的时间,本机作为时间源)
在客户端打开 vim /etc/chrony.conf 时间同步配置文件,配置相关参数
server 172.25.254.205 iburst ##本机立即同步205主机的时间
完成后重启服务
systemctl restart chronyd.service 重启时间同步服务
查看内存中的日志 journalctl
journalctl -n 5 | 查看最近5条日志 |
journalctl -p err | 查看错误日志 |
journalctl -o verbose | 查看日志的详细参数 |
journalctl --since “:” | 查看从**:**开始的日志 |
journalctl --until “:” | 查看到**:**为止的日志 |
journalctl -n 5 查看最近5条日志
journalctl -p err 查看错误日志
journalctl -o verbose 查看日志的详细参数
journalctl --since "00:00" 查看从00:00开始的日志
journalctl --until "00:02" 查看到00:02为止的日志
利用 systemd-journalctl 采集日志
mkdir /var/log/journal 新建一个存放目录
chgrp systemd-journal /var/log/journal 指定目录的所有组为
systemd-journalchmod g+s /var/log/journal 给用户所有组权限
killall -l systemd-journald
ls /var/log/journal
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817
reboot 重启虚拟机
ls /var/log/journal
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817
需要注意的是,默认systemd-journald(内存中的日志)不保存到硬盘中
所以关机后再次开机只能看到本次开机之后的日志,上一次关机之前的日志是无法查看的