Linux中的系统日志管理
1.系统日志
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排除,一般这些日志永久存储 /var/log 目录中。
日志文件 | 用途 |
---|---|
/var/log/messages | 大多数系统日志信息记录在此处 |
/var/log/secure | 安全和身份认证相关的信息和错误的日志文件 |
/var/log/maillog | 与邮件服务器相关的日志文件 |
/var/log/cron | 与定时任务相关的日志文件 |
/var/log/boot,log | 与系统启动有关的日志文件 |
2.rsyslog 服务
rsyslog是一个开源工具,被广泛用于Linux系统以通TCP/UDP协议转发或接受日志消息。
rsyslog服务是用来采集系统日志的,它不会产生日志,只是起到采集作用
rsyslog服务的主配置文件为 /etc/rsyslog.conf
指定日志采集路径
什么类型的日志.什么级别的日志 /var/log/file ##日志采集规则
日志类型 | 说明 |
---|---|
auth | pam产生的日志 |
authpriv | ssh,ftp等登陆信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy, unix主机之间相关的通讯 |
local 1-7 | 自定义的日志设备 |
日志级别 | 级别说明 |
---|---|
debug | 有调式信息的(日志信息最多) |
info | 般信息的日志(最常用) |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别(阻止某个功能或者模块不能正常工作的信息) |
crit | 严重级别(组织整个系统或者整个软件不能正常工作的信息) |
alert | 需要立即修改的信息 |
emerg | 内核崩溃等严重信息 |
none | 什么都不记录 |
注意:
1.从上到下,级别从低到高,记录的信息越来越少
2.如果忘记日志类型和级别,可以通过man 3 syslog 查看手册
vim /etc/rsyslog.conf ##打开日志服务的配置文件
在55行添加信息:
*.* /var/log/westos ##把所有类型和所有级别的日志存放在/var/log/westos中
systemctl restart rsyslog ##重启日志服务
测试:
systemctl restart sshd ##命令目的为了生成日志
cat /var/log/westos ##此文件中出现了日志信息
3.日志的远程同步
在日志发送方:
vim /etc/rsyslog.conf ##打开日志服务的配置文件
*.* @接收方ip段
systemctl restart rsyslog ##重启日志服务
在日志接收方:
vim /etc/rsyslog.conf ##打开日志服务的配置文件
做如下修改:(开启日志接收端口)
systemctl restart rsyslog ##重启日志服务
systemctl stop firewalld ##关闭火墙
systemctl disable firewalld ##设定防火墙开机关闭
测试:
在发送方和接收方输入:
> /var/log/messages ##清空日志文件
在日志发送方:
logger test
在发送方和接收方输入:
cat /var/log/messages ##查看日志已经生成
4.日志采集格式的设定
vim /etc/rsyslog.conf ##打开日志配置文件
在配置文件中添加:
$template WESTOS, “%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n”
内容 | 注释 |
---|---|
%timegenerated% | 显示日志时间 |
%FROMHOST-IP% | 显示主机ip |
%syslogtag% | 日志记录目标 |
%msg% | 日志内容 |
\n | 换行 |
在指定的日志中采用WESTOS格式: *.* /var/log/westos;WESTOS
修改系统默认日志采集格式为WESTOS: $ActionFileDefauleTemplate WESTOS
systemctl restart rsyslog ##重启日志服务
重启服务后,日志会按照设定的格式采集
5.timedatectl管理系统时间
命令 | 功能 |
---|---|
timedatectl status | 显示当前时间信息 |
timedatectl set-time “时间” | 设定当前时间 |
timedatectl set-timezone 时区 | 设定当前时区 |
timedatectl set-local-rtc 0/1 | 设定是否使用utc时间 |
timedatectl set-ntp true/false | 是否启用网络时间(此设定要在关闭utc时间的基础上) |
timedatectl list timezones | 查看支持的所有时区 |
6.时间同步服务
服务名称 chronyd
在服务端:
vim /etc/chrony.conf ##打开配置文件
在22 29 行 作如下修改:
22 allow ip ##允许那些客户端同步本机时间
29 local stratum 10 ##本机作为时间源,不同步任何主机的时间
systemctl restart chronyd ##重启服务
在客户端:
vim /etc/chrony.conf ##打开配置文件
在其中修改:
server … iburst ##本机立即同步…主机的时间
systemctl restart chronyd ##重启服务
测试
在客户端:
chronyc sources -v ##查看有没有同步成功
7.journal
journalctl日志查看工具
命令 | 命令功能 |
---|---|
journalctl -n 3 | 查看最近3条日志 |
journalctl -p err | 查看错误的日志 |
journalctl -o verbose | 查看日志的详细参数 |
journalctl --since 时间 | 查看从什么时间开始的日志 |
journalctl --until 时间 | 查看到什么时间为止的日志 |
如何使用systemd-journald保存系统日志
默认systemd-journald是不保存系统日志到硬盘的
那么关机后再次开机只能看到本次开机后的日志 关机前的日志是无法查看的
做法:
mkdir /var/log/journal ##创建一个存放日志的路径
chgrp systemd-journal /var/log/journal ##修改所有组信息
chmod g+x /var/log/journal ##修改权限 使任何人在此目录中建立的文件都属于所有组
killall -1 systemd-journald ##在进程不关闭的情况下刷新该进程