Linux系统管理日志,时间管理。rsyslog,journalctl,chrony,timedatectl等
1.日志服务: 所谓日志就是对系统程序的状况进行观测的记录,我们可以通过查看日志来对计算机系统的“健康状况”进行监测,即是预防或者修正系统中出现的问题。
(1).日志的生成方式:日志在内存中,rsyslog服务将日志从内存中采集到硬盘中并保存
由各个进程生成日志,一个程序采集日志(rsyslog.service)
(2).日志采集规则(配置文件/etc/rsyslog.conf)
执行vim/etc/rsyslog.conf,可看到如下,规定了日志生成以及观测的规则。格式如下
分别对应:“*”:日志类型. “*”:日志级别 存放日志的文件
I.日志类型
auth 用户登陆日志(pam程序产生日志)
authpriv 服务认证日志(sshd认证)
kern 内核日志
cron 定时任务日志
lpr 打印机日志
mail 邮件日志
news 新闻
user 用户相关程序日志
local 1-7 用户自定义日志
II.日志级别
debug 系统调试信息
info 常规信息
warning 警告信息
err 报错(级别低,阻止了某个功能的正常工作)
crit 报错(级别高,阻止整个软件或整个系统致使其不能正常工作)
alert 需要立即修改信息
emerg 内核崩溃
none 不采集任何日志信息
例:
*.info;mail.none;authpriv.none;cron.none /var/log/messages (除了邮件,认证服务,定时任务外的其他系统服务的日志都存放在/var/log/messages中)
可以通过"cat"指令来查看日志,还可以通过">"符号来清空日志信息。
查看:cat /var/log/messages
清空:>/var/log/messages;再执行cat /var/log/messages
/var/log/messages 所有日志级别的常规信息(不包含邮件,服务认证,定时任务)
/var/log/maillog 邮件日志
/var/log/secure 服务认证日志
/var/log/corn 定时任务日志
III.配置日志格式:$template
在/etc/rsyslog.conf 下进行对日志配置信息的进行修改(让程序按系统要求的方式进行运行)
注:配置文件是系统和程序进行交流的途径,即系统通过配置文件对程序进行一定规则方式的运行
修改配置文件后务必重启服务
vim /etc/rsyslog.conf
编辑如下:
$template + 格式名称,“日志采集格式”
*.info;mail.none;authpriv.none;cron.none /var/log/messages;格式名称
%timegenerated% 日志生成时间
%FROMHOST-IP% 日志来源主机的IP
%syslogtag% 日志生成来源程序
%msg% 日志内容
\n 换行
例子:
$template test,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"*.info;mail.none;authpriv.none;cron.none /var/log/messages;test
运行示例:
cat /usr/log/mesages后
注:可通过man rsyslog.conf来了解日志修改格式。
(3)日志的远程同步:对多个主机的日志进行管理
作为系统管理员。往往会遇到对不止一个主机的状况进行监控,一个一个的去看未免太过繁琐,这时候就可以将各个主机的日志同不到一个服务器中,进行观测。
具体操作如下:
在发送端:对发送端主机的rsyslog服务进行配置
*.* @IP 将日志发送到指定主机中
systemctl restart rsyslog 重启服务
在接收端:对接收端主机的rsyslog服务进行配置。
16 $UDPServerRun 514 通过514接口进行传输
systemctl stop firewalld 关闭防火墙 对防火墙进行关闭,否则将无法接收同步过来的日志
systemctl disable firewalld 开机不自动开启防火墙
并在接收方定义日志采集格式,方便观测,具体如上述配置日志格式: $template + 格式名称,“日志采集格式”
示例如下:
重启服务后,在接收端查看日志。
(4)实时日志监控指令 journalctl 注:企业7之后才有此命令
journalctl -n3 观测最新三行日志
journalctl -p err 对错误进行观测,(-p 后加指定的信息,)
journalctl -f 默认显示十行。随着匹配日志的增长而持续输出。只显示错误、冲突和重要告警信息 journalctl --since time --until time 监控指定时间段
journalctl -o verbose 查看日志详细参数 _PID=NUM
journalctl _PID=NUM
由于journalctl指令是对内存中的日志进行观测,在重启机器后会消失,当想要保存有用的日志时,就需要如下指令了
执行如下指令:
mkdir /var/log/journal 建立目录
chgrop systemd-journal /var/log/journal 修改目录所有组
chmod g+s /var/log/journal 修改权限
killall -1 systemd-journald 重新启动服务
验证是否保存
journalctl -n 3
date
reboot
journalctl
注:建立文件后的直至将会被保存到硬盘中,重新启动后也存在。
示例如下:
建立文件后
重启后:
可看到日志被保存下来。
2.进行时间同步
在进行日志同步时,两个主机时间如果不一致,将会导致判断错误等诸多问题,此时就需要对不同主机的系统时间进行同步了。
(1)重新设定时间 timedatectl set-time "xx:xx:xx"
timedatectl list-timezones 列出时区列表
timedatectl set-timezone Asia/Shanghai 设置成上海时间
timedatectl 列出详细信息
Local time: Sat 2018-04-14 16:05:17 CST
Universal time: Sat 2018-04-14 08:05:17 UTC
RTC time: Sat 2018-04-14 08:05:16
Timezone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
date
Sat Apr 14 16:05:23 CST 2018
timedatectl set-local-rtc 0 使用UTC时间 注:所谓UTC时间就是世界标准时间
date
Sat Apr 14 16:05:46 CST 2018
vim /etc/adjtime 查看使用的时间
timedatectl set-local-rtc 1 使用本地时间
(2)在服务器端共享时间
对时间同步的配置文件进行修改
第29行 local stratum 10 开启时间共享功能并设定共享级别,
开启此参数后本机不回去同步别机时间到本机
第22行 allow 172.25.151.0/24 允许此网段的主机进行时间同步(具体网段根据具体情况而定)
systemctl restart chronyd.service 重启服务
关闭时间服务器防火墙。
vim /etc/chrony.conf
server 服务端IP iburst
systemctl restart chronyd.service
chronyc sources -v 检测是否同步成功
示例如下:
在服务器端:
修改配置文件
重启服务,关闭防火墙
在客户端:
编辑配置文件
重启服务,验证同步结果