linux系统中的日志管理
linux系统中的日志管理1 实验环境需要两台可以相互通信的linux虚拟机首先切换到真机的超级用户下,执行westos-vmctl create westos_node2虚拟机创建命令;然后输入westos-vmctl start westos_node2命令开启该虚拟机;再输入westos-vmctl view westos_node2命令直接显示虚拟机。进入新建的虚拟机,输入virt-man
Linux系统中的日志管理
1 实验环境
- 需要两台可以相互通信的linux虚拟机
- 首先切换到真机的超级用户下,执行westos-vmctl create westos_node2虚拟机创建命令;然后输入westos-vmctl start westos_node2命令开启该虚拟机;再输入westos-vmctl view westos_node2命令直接显示虚拟机。
- 在真机中输入virt-manager命令,点击进入灯泡,配置网卡。
- 在新建的虚拟机中,输入nm-connection-editor命令,把以太网里的东西删除,添加一个新的以太网,进入后写名称,选网卡;菜单栏ipv4里的选manual,添加ip 为172.25.254.236
- 关闭防火墙systemctl disable --now firewalld,两台虚拟机之间需要ping通
- 为了方便区分两台虚拟机,可以给他们重新修改名字 ,使用hostnamectl set-hostname westos_node1.westos.org命令,在真机中(已经登陆了服务器)修改服务器名字为westos_node1,修改完后,退出再重新登陆,可以看到名字修改成功
1)两台虚拟机之间相互ping通:
2)在真机中开启两个shell,分别登陆两个虚拟机:
3)修改虚拟机名字并重新登陆:
2 journald日志服务
- 服务名称:systemd-journald.service
系统中的日志是由每个程序自己生成的,生成后日志在内存中。对日志进行查看,可以使用用到systemd-journald.service服务,该服务默认情况是用来查看日志的
查看该服务的状态:
- 默认日志存放路径:/run/log
进入run/log/journal文件,使用ls命令可以看到,该目录下显示的内容是系统的Machine ID。输入hostnamectl命令可以查看到系统的 Machine ID和该目录下的内容是一样的。可以进入该ID,ls查看,可以看到system.journal。注意,run/log/journal里面的内容在系统重启后就会消失,所以查看的只有启动之后显示的日志。该服务是在企业7版本之后才有的。
2.1 journalctl命令的用法
参数 | 含义 |
---|---|
-n 3 | 日志的最新3条,该数字可根据自己的需求输入 |
–since “2021-02-03 11:00:00” | 显示11:00后的日志 |
–until “2021-02-03 11:05:00” | 显示日志到11:05; journalctl–since "10:00:00"也可以表示今天的该时间之后的日志;since和unit可以连起来,表示查看一个时间段的日志;可以不写前面具体的年月日,默认是今天 |
-o short | 经典模式显示日志 |
-o verbose | 显示日志的详细信息 |
-o export | 适合传出和备份的二进制格式 |
-o json | 适合传出和备份的二进制格式 |
-p | 显示指定级别的日志,级别越低,即数字越小的,严重性越高 |
-p 0 | emerg 系统的严重问题日志,会导致系统崩溃 |
-p 1 | alert 系统中立即要更改的信息,严重时会导致系统崩溃 |
-p 2 | crit 严重级别会导致系统软件不能正常工作 |
-p 3 | err 程序报错 |
-p 4 | warning 程序警告 |
-p 5 | notice 重要信息的普通日志 |
-p 6 | info 普通信息 |
-p 7 | debug 程序排错信息 |
-F PRIORITY | 查看可控日志级别 ,234567是可控的,0和1不可控 |
-u sshd | 查看某个服务的日志 |
- -disk-usage | 查看日志大小 ,用了多少硬盘的空间存储日志 |
- -vacuum-size=1G | 设定日志存放大小,即日志回滚,大小超过多少时,删除一次 |
–vacuum-time=1W | 日志在系统中最长存放时间,多久删除一次 |
-f | 监控日志。监控时,会生成一封,产生一封日志;也就是说,用客户端登陆服务器端,只要日志监控是开的,就会登陆一次,产生一次日志 |
journalctl _PID=10924 | 查看日志详细信息,下划线后面部分可自己替换。journalctl -o verbose 进入后,可以看到的内容,都可以直接加在下划线后面进行查看 |
1)直接输入journalctl可以查看日志,也可以输入关键字进行搜索:
关键字搜索:
关键字部分高亮显示:
2)显示最新三条日志:
3)显示16:30分之后的日志:
显示16:30到16:42之间的日志:
4)经典模式显示日志:
显示日志的全部内容:
适合传出和备份的二进制格式:
js格式显示输出:
5)系统的严重问题日志:
系统中立即要更改的信息:
严重级别会导致系统软件不能正常工作:
注意:这里的实验报错是因为,在虚拟机里做的实验,没有硬件设施,他会报告没有硬件可能就会导致软件无法正常运行
程序报错:
6)查看可控日志级别:
7)查看sshd服务的日志:
8)查看日志大小:
9)设定日志存放大小以及日志在系统中最长存放时间:
10)监控日志:
登陆远程主机:
产生新的日志:
11)查看sshd服务的ID,并通过该ID查看日志详细信息:
2.2 用journald服务永久存放日志
系统中默认日志在:/run/log/journal中,默认方式在系统重启后日志会被清理,想要永久保存日志,可以做如下操作:
注意:做完以上操作,并重启服务后,日志存放路径会被制定到/var/log/journal目录下,进入该目录下查看,可以看到机器码,进入该机器码进行查看,里面有一个system.journal文件,日志会被采集在里面。但是system.journal这个文件不能直接看,因为它是数据需要查看时可以直接输入journalctl命令查看
3 rsyslog日志服务
- 服务名称:rsyslog.service
- 配置文件:/etc/rsyslog.conf
- journalctl日志服务与rsyslog日志服务的区别:
journalctl服务会把日志信息采集到/run/log目录下;而rsyslog会把日志采集到/var/log中,该目录下的日志会自动分类,这是因为rsyslog服务是开启的,但即使该服务没开,也不会影响日志的生成。该服务的功能主要是,把日志采集到硬盘中,是个日志采集工具,而不是生成日志工具
日志存放 | 含义 |
---|---|
/var/log/messages | 系统服务日志,常规信息,服务报错 |
/var/log/secure | 系统认证信息日志 |
/var/log/maillog | 系统邮件日志信息 |
/var/log/cron | 系统定时任务信息 |
/var/log/boot.log | 系统启动日志信息 |
/var/log目录下的日志:
查看rsyslog服务状态:
/etc/rsyslog.conf配置文件中的内容查看:
注意:该文件rules处的内容表示,什么类型的,什么级别的日志,放在什么文件里,也就是xxx.xxx /xxx的形式,eg:cron.* /var/log/cron,表示,系统定时信息类的全部级别的日志,放在/var/log/cron文件下
3.1 自定义日志采集路径
日志类型 | 含义 |
---|---|
auth | 用户认证 |
authpriv | 服务认证 |
cron | 时间任务 |
kern | 内核类型 |
邮件 | |
news | 系统更新信息 |
user | 用户 |
日志级别 | 含义 |
---|---|
debug | 程序排错信息 |
info | 程序常规运行信息 |
notice | 重要信息的普通日志 |
waring | 程序警告 |
err | 程序报错 |
crit | 严重级别会导致系统软件不能正常工作 |
alert | 系统中立即要更改的信息 |
emerg | 系统的严重问题日志 |
none | 不采集 |
1)编辑vim /etc/rsyslog.conf文件,新添加内容表示,把系统中所有类型,所以级别的日志存放到/var/log/westos文件下。注意,修改之后,要systemctl restart rsyslog.service,重启这个服务,才能查看建立的文件:
2)将服务认证类型下的所有级别日志,放在/var/log/westos文件下
重启该服务,删除该目录下原本的日志信息,启动sshd服务,查看日志:
3)用node2登陆node1:
查看该目录下生成的日志文件:
3.2 更改日志采集格式
- 定义日志采集格式:
eg:$template WESTOS_FORMAT, “%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag%
%msg%\n”
这个格式改好了之后,要把你起的格式名称加到采集路径的后面,表示在采集该日志时,用的是WESTOS_FORMAT格式,eg:*.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS_FORMAT
注意:$template是固定不变的;WESTOS_FORMAT必须是大写,代表了一种日志采集的格式名称,可以自己确定该名称;若只写%FROMHOST-IP%这一个参数,代表采集日志的时候只会显示 ip;
更改的是接收方,在vim /etc/rsyslog.conf文件中作出更改;
改完格式,重启服务,清空日志,再用发送方发送,查看效果。
命令 | 含义 |
---|---|
WESTOS_FORMAT | 格式名称 |
%FROMHOST-IP% | 日志来源主机IP |
%timegenerated% | 日志生成时间 |
%syslogtag% | 日志服务来源 |
%msg% | 日志内容 |
\n | 换行 |
1)编辑接收方vim /etc/rsyslog.conf文件,格式名称为TEST,参数为日志来源主机IP:
在发送端生成日志内容:
重启服务,查看接收方日志:
2)编辑接收方vim /etc/rsyslog.conf文件,格式名称为TEST,参数为日志来源主机IP和日志内容:
重启服务,查看接收方日志:
3)编辑接收方vim /etc/rsyslog.conf文件,格式名称为TEST,参数为日志来源主机IP、日志内容和日志服务来源:
重启服务,查看接收方日志:
4)编辑接收方vim /etc/rsyslog.conf文件,格式名称为TEST,参数为日志来源主机IP、日志内容、日志服务来源和日志生成时间:
重启服务,查看接收方日志:
注意:以上方法只能使指定的文件按自定义格式输出,想要所有日志文件都按自己设定的格式,可以做如下操作:
- 编辑vim /etc/rsyslog.conf文件,约三十行处将#module(load=“builtin:omfile” Template=“RSYSLOG_TraditionalFileFormat”),改成module(load=“builtin:omfile” Template=“TEST”),即将Template里面的内容改成自定义名字即可。同时将原本加在文件名后面的指定名称也删掉
5)编辑接收方vim /etc/rsyslog.conf文件,编辑内容如下:
重启服务:
查看接收方日志:
3.3 日志的远程同步
1)将服务器上的日志,推送到客户端主机上,node1作为接受方,node2发送日志。可以使用man 5 rsyslog.conf 查看该文件的详细用法,注意远程主机用remote这个关键字,进入如下图,可见有三种通信模式:UDP(速度更快,只负责投递,不管是否接收,可用udp做日志同步)、TCP(最稳定,三次握手,四次挥手)、RELP:
2)接收方的配置(node1):
- 防火墙关闭,编辑 vim /etc/rsyslog.conf文件:
- 找它接口的开启地方,在17行左右,把端口号开启,下图为开启UDP接口的地方:
开启module和input:
- 重启rsyslog服务,并使用ss -alntupe | grep rsyslog查看端口号,设定成功:
3)发送方配置(node2):
- 编辑 vim /etc/rsyslog.conf文件,在rules那里写想要发送的日志类型及级别,@172.25.254.136(发送给谁)。如下所示,表示所有类型所有级别的日志发送给node1:
- 重启该服务:
- 使用 > /var/log/messages把接受方和发送法日志都清空:
4)测试:
- 在接收方,用 tail -f /var/log/messages 查看接收的内容:
- 在发送方使用logger +字符串,logger后面加什么内容,生成的日志内容就是什么:
查看接受情况:
4 timedatectl命令
命令 | 含义 |
---|---|
timedatectl set-time “2020-02-13 10:41:55” | 设定系统时间 |
timedatectl list-timezones | 显示系统的所有时区 |
timedatectl set-timezone “Asia/Shanghai” | 设定系统时区 |
timedatectl set-local-rtc 0 | 1 |
1)timedatectl命令可以单独使用,查看时间相关信息:
注意:CST表示本地当前时间;UTC表示伦敦时间(现在计算机计算时间方式就是UTC时间计算方式,即把硬件时间初始化为伦敦时间,而系统时间的计算方法是:硬件时间+时区值);RTC表示硬件时间
2)设定系统时间:
建立监控:
未修改系统时间前的监控:
设定系统时间后的结果,修改本地时间后,utc和rtc的时间都会改变,它会默认去修改硬件的时间,所以修改完后,再登陆windows系统,其时间会是错误的,因为硬件时间变了:
3)设定系统时间计算方式为1。1表示硬件不使用utc计算时间,输入1后硬件时间会与系统时间一致,这样设置在时间握手上会出现问题,导致认证不成功,所以会有警告。它实际上改的是/etc/adjtime文件:
查看监控,发现硬件时间会与系统时间一致:
查看该文件:
下面的LOCAL表示使用的是系统时间:
设定系统时间计算方式为0,0表示硬件使用utc时间:
查看监控,硬件时间和UTC时间一致:
查看/etc/adjtime文件,下面的UTC,表示为UTC计算时间方式:
4)显示系统的所有时区
5)设定系统时区:
查看监控,原本是Asia/Shanghai时区:
5 时间同步服务
- 即把多台主机的时间同步,可以让一台主机进行时间共享,然后其他主机同步时间
- 服务名称:chronyd.service
- 配置文件:/etc/chrony.conf
- 在企业6、3、4版本中,用的是ntp服务,在7之后,产生了chronyd.service服务,其本质是一样的
- 使用node2作为服务端共享时间,node1作为客户端
查看该服务状态:
1)服务端配置
-
编辑vim /etc/chrony.conf文件,在大约22行有# Allow NTP client access from local network,开启下面的allow ,若输入 allow 0.0.0.0/0表示所有人都可以访问;26行的#local stratum 10表示本地作为时间源,把它也开放即可:
重启服务:
2)客户端配置: -
在服务端建立监控watch -n1 timedatectl查看时间信息:
-
在客户端编辑vim /etc/chrony.conf文件,编辑第三行为pool 172.25.254.236 iburst:
重启服务在客户端建立监控,查看时间是否同步成功:
时间同步成功:
3)可以使用chronyc 命令查看时间效果,即在客户端输入chronyc sources -v命令:
注意:第一行显示,*=服务器;^表示已经同步过时间,所以分割线下面表示从236服务器端同步过时间
更多推荐
所有评论(0)