学习目标
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 服务的主配置文件为 /etc/rsyslog.conf 。指定日志保存位置修改配置文件 , 修改后重启 rsyslog 服务生效。
什么类型的日志.什么级别的日志 /var/log/file ##日志采集规则
日志类型为:
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 ##什么都不记录
##注意:从上到下,级别从低到高,记录的信息越来越少
3.日志远程同步
在日志发送方:
vim /etc/rsyslog.conf
*.* @172.25.254.100 ##@表示udp协议发送,@@表示tcp协议发送
(*.*所有类别的所有日志)
systemctl restart rsyslog
在日志接受方:
vim /etc/rsyslog.conf
15 $ModLoad imudp ##开启接口模块
16 $UDPServerRun 514 ##开启接收端
systemctl restart rsyslog.service
systemctl stop firewalld.service ##关闭防火墙
systemctl disable firewalld.serv ##设定防火墙开机不启动
测试
在日志发送和接受方都清空日志
> /var/log/messages
在日志发送方
logger test
在发送方和接受方都可以查看到日志
cat /var/log/messages
##日志采集的格式##
vim /etc/rsyslog.conf
$template LOGTMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% #显示日志时间
%FROMHOST-IP% #显示主机IP
%syslogtag% ##日志记录目标
%msg% #日志内容
*.* /var/log/westos;LOGFMT
systemctl restart rsyslog.service
在日志发送方:
logger test
在日志接受方:
cat /var/log/westos
4.时间同步服务
服务名称
chronyd
##在服务端
vim /etc/chronyd.conf
22 allow 172.25.254.0/24 ##允许哪些客户端来同步本机时间
29 local stratun 10 ##本机不同步任何主机的时间,本机作为时间源
systemctl restart chronyd.service
##在客户端
vim /etc/chrony.conf
server 172.25.254.203 iburst #本机立即同步203这台主机的时间
systemctl restart chronyd.service
##测试:
#在客户端
[root@client ~]# chronyc sources -v #查看是否同步成功
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| / xxxx = adjusted offset,
|| Log2(Polling interval) -. | yyyy = measured offset,
|| \ | zzzz = estimated error.
|| | |
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 172.25.254.203 10 6 377 19 +280us[ -105us] +/- 172us
##timedatectl 管理系统时间命令##
timedatectl ##管理系统时间
timedatectl set-time ##设定当前时间
timedatectl set-timezone ##设定当前时区
timedatectl set-local-rtc 0|1 ##设定是否使用utc时间
timedatectl list-timezone ##查看支持的所有时区
timedatectl set-time "2018-11-11 11:11:11"
5.journal命令
1.journalctl ##日志查看工具
journalctl -n 3 ##查看最近3条日志
-p err ##查看错误日志
-o verbose ##查看日志的详细参数
journalctl --since "2018-10-23 03:00" --until "2018-10-23 03:20" ###查看从什么时间开始的日志到什么时间为止的日志
2.如何使用systemd-journal 保存系统日志
默认情况下 ,systemd 日志保存在 /run/log/journal 中 , 这意味着系统重启时会被清除 , 那如果将日志保存在 /var/log/journal 目录 , 这样做的优点是启动后就可以利用历史数据 , 形成永久日志。
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod g+s /var/log/journal
ps aux | grep systemd-journal ##查看所有进程中有关systemd-journal的
killall -1 systemd-journald ##进程重新加载配置
ls /var/log/journal