我们首先要明白,日志是程序本身产生的,那么日志储存在哪里,该如何查看呢?
一、查看日志
先来了解以下日志的类型和日志的级别。
1.日志的类型
auth ##pam产生的日志
suthpriv ##ssh,ftp等登陆信息的验证信息
cron ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rlog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to unix copy,unix主机之间相关的通讯
local 1~7 ##自定义的日志设备
2.日志的级别
debug ##有调式信息的,日志信息最多
info ##一般信息的日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等严重信息
none ##什么都不记录
注意:从上到小,级别从低到高,记录的信息越来越少。
3.系统产生的日志在/var/log下,分类有:服务信息messages、服务认证secure、邮件服务日志maillog、定时日志cron等。
[root@node2 ~]# cat /var/log/messages
上条命令可以查看日志中的服务日志。
二、采集日志
如果我们要采集一些主机里的日志信息时,需要完成以下的步骤,这里我将ip为172.25.254.130的node1作为管理日志方(以下称为接受方),将ip为172.25.254.230的node2作为发送日志的一方(以下成为发送方):
接受方:
1.使用 systemctl stop firewalld
关闭火墙
2.使用vim /etc/rsyslog.conf
编辑日志文件,让日志接口打开(把第15、16行的注释去掉)
3.使用systemctl restart rsyslog.service
重启
发送方:
1.使用vim /etc/rsyslog.conf
编辑日志文件,在RULES下面添加发送端的ip,如图
2.使用systemctl restart rsyslog.service
重启
3.使用>/var/log/messages
清除日志,方便等下测试
4.建立一个测试日志logger test
,在接受方使用cat /var/log/messages
查看
如果出现/etc/rc.d/rc.local等文件的话,使用> /etc/rc.d/rc.local
然后reboot
,然后重新连接退出的这个id:ssh @ip,重新测验:logger westos
,之后使用cat查看:cat /var/log/messages
,可以发现/etc/rc.d/rc.local等文件没了。
既然node1采集的是node2的日志,那么日志时间应该和node2的一致,但是在完成以上操作时,发现node1接受到的日志时间和node2是不一致的。
此时需要将采集日志的格式进行规定,同时同步时间。
-
1 设定日志格式
vim /etc/rsyslog.conf
进去后在rules下一行加:
$template WESTOS,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
,并且要在57行最后加上;WESTOS
重启:
systemctl restart rsyslog.service
之后就可以使用WESTOS了
如下图:
-
2 同步时间
1.先在接收端编辑:
vim /etc/chrony.conf
在第22行修改:
allow 172.25.254/24
重启:
systemctl restart chronyd.service
2.在发送端编辑:
vim /etc/chrony.conf
编辑第3行,改成:
server 172.25.254.130 iburst
编辑第26行 打开ocal stratum 10这一行
重启:
systemctl restart chronyd.service
- 3 怎么查看发送端是否和接收端的时间同步
在发送方使用:
chronyc sources -v
来进行查看
发现左下角有172.25.254.130,说明时间同步了。
如果在接收端重新更改时间,需要在发送端先重启一下
此时发送端不会同步更改后的时间,也需要同步一下并稍微等待一会儿
三、手动设置时间信息timedatectl
使用date查看时间信息,有时候时间信息会和硬件时间不一致。
1.设置时区(本地时间)
1)先使用:
timedatectl list-timezones
来查看时区
2)再用:
timedatectl set-timezone Asia/Shanghai
设置时区
2.重新查看timedatectl
#bios time 硬件时间#
为了让硬件时间是本地时间
1)timedatectl set-local-rtc 0
(先关闭)
timedatectl
查看各个时间
2)timedatectl set-local-rtc 1
(再开启)
timedatectl
查看
更改时间
1)timedatectl set-time "2018-11-14 09:25:11"
2)使用date
查看
四、使用journalctl采集目录
使用journalctl -n 5
查看最新的5条
按时间查看日志
从某个时间开始 journalctl --since 09:20
某时刻到某时刻 journalctl --since 09:20 --until 09:01:50
错误日志 journalctl -p err
有时候使用systemctl status sshd
查看服务信息时,(如下图ssh的id是1213)
当我使用systemctl restart sshd.service
重启服务后,
再使用systemctl status sshd
,(如下图,发现id改变了)
id改变,journalctl
查看的是哪一次的操作不清楚
可以查看所有日志详细参数 journalctl -o verbose
查看之后可以输入自己想看的id信息,
比如journalctl _PID=30053 _COMM=sshd
##采集目录
因为关机之后日志会被释放,所以要建一个journal目录来保存日志
1)mkdir /var/log/journal/
2)查看journal权限ll -d /var/log/journal/
3)改组名:
chgrp systemd-journal /var/log/journal/
4)列出进程并过滤:
ps aux | grep systemd-journald
5)给组加权限,只能组员更改:
chmod g+s /var/log/journal/
6)ls -ld /var/log/journal
查看journal权限
7)kill -1 361
重启
8)重启后继续查看日志在不在:
cd /var/log/journal/
9)ls
发现有一串码
10)bootctl
查看机器码
11)ll 946cb0e817ea4adb916183df8c4fc817