十二、在Linux中如何管理输出日志

运维学习笔记 十二、在Linux中如何管理输出日志

一、日志简单介绍

网络设备、系统及服务程序等,在运作时都会产生一个叫log的事件记录,每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。
Linux操作系统设计有各种各样的日志文件,如安全日志、系统日志、服务日志、DNS服务器日志等等,这些根据你的系统开启的服务的不同而有所不同。我们在系统上进行一些操作时,这些日志文件通常会记录下我们操作的一些相关内容,这些内容对系统运维人员相当有用。比如说有人对系统进行了IPC探测,系统就会在安全日志里迅速地记下探测者探测时所用的IP、时间、用户名等,用FTP探测后,就会在FTP日志中记下IP、时间、探测所用的用户名等。

二、实验环境布置

准备两台虚拟机
westos_node1: 172.25.254.10
westos_node2: 172.25.254.20

wesots_node1&westos_node2:

$sudo systemctl stop firewalld

三、命令介绍及实验操作

1.journald

服务名称: systemd-journald.service

默认日志存放路径: /run/log

实验 1 journalctl 命令的用法
journalctl
			-n 3  ##日志的最新 3 条
			--since "2020-05-01 11:00:00"  ##显示 11:00 后的日志
			--until "2020-05-01 11:05:00"  ##显示日志到 11:05
			-o  ##设定日志的显示方式
				# short    经典模式显示日志
				# verbose  显示日志的全部字节
				# export   适合传出和备份的二进制格式
				# json     js 格式显示输出
			-p  ##显示制定级别的日志
				#0 emerg 系统的严重问题日志
				#1 alert 系统中立即要更改的信息
				#2 crit 严重级别会导致系统软件不能正常工作
				#3 err 程序报错
				#4 warning 程序警告
				#5 notice 重要信息的普通日志
				#6 info 普通信息
				#7 debug 程序排错信息
			-F PRIORITY  ##查看可控日志级别
			-u sshd  ##指定查看服务
			--disk-usage  ##查看日志大小
			--vacuum-size=1G  ##设定日志存放大小
			--vacuum-time=1W  ##日志在系统中最长存放时间
			-f 	##监控日志
journalctl _PID=10924 _SYSTEMD_UNIT=sshd.service
实验 2 用 journald 服务永久存放日志

系统中默认日志在:/run/log/journal 中,默认方式在系统重启后日志会被清理,要永久保存日志请完成以下操作:

$sudo mkdir /var/log/journal
$sudo chgrp systemd-journal /var/log/journal
$sudo chmod 2775 /var/log/journal
$sudo systemctl restart systemd-journald.service

当服务重启日志存放路径会被制定到:/var/log/journal

2.rsyslog

服务名称:rsyslog.service
日志存放:

/var/log/messages #系统服务日志,常规信息,服务报错
/var/log/secure #系统认证信息日志
/var/log/maillog #系统邮件日志信息
/var/log/cron #系统定时任务信息
/var/log/boot.log #系统启动日志信息
配置文件:/etc/rsyslog.conf
实验 1.自定义日志采集路径
$sudo vim /etc/rsyslog.conf
日志类型.日志级别   日志存放路径
*.*               /var/log/westos
##把系统中所有级别的日志存放到 westos 中

*.*;authpriv.none  /var/log/westos
##把系统中所有级别的日志存放到westos 中,但是 authpriv 不存放到 westos 中
日志类型
auth     #用户认证
authpriv #服务认证
cron     #时间任务
kern     #内核类型
mail     #邮件
news     #系统更新信息
user     #用户

日志级别
debug   #程序排错信息
info    #程序常规运行信息
notice  #重要信息的普通日志
waring  #程序警告
err     #程序报错
crit    #严重级别会导致系统软件不能正常工作
alert   #系统中立即要更改的信息
emerg   #系统的严重问题日志
none    #不采集
实验 2.如何更改日志采集格式

1 定义日志采集格式
$template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"

#WESTOS_FORMAT: 格式名称
#%FROMHOST-IP%: 日志来源主机 IP
#%timegenerated%: 日志生成时间
#%syslogtag%: 日志生成服务
#%msg%: 日志内容
#\n: 换行

2 设定日志采集格式应用

*.*;authpriv.none    /var/log/westos;WESTOS
module(load="builtin:omfile" Template="WESTOS_FORMAT") ##默认采用 WESTOS_FORMAT格式
实验 3.日志的远程同步

westos_node2:172.25.254.20 存放日志作为日志接受端,所有人日志都存放到此台主机
westos_node1:172.25.254.10 发送日志到 westos_node2 主机中

1.在 westos_node2 中设定接受所有人的日志

$sudo systemctl stop firewalld
$sudo vim /etc/rsyslog.conf
	**19 module(load="imudp")##打开日志接受插件
	**20 input(type="imudp" port="514") ##指定插件使用接口
$sudo systemctl restart rsyslog

查询端口:
[root@westos_node2 ~]# netstat -antlupe | grep rsyslog

udp    0     0 0.0.0.0:514   0.0.0.0:*    0
67600 11115/rsyslogd
udp6   0     0 :::514        :::*         0
67601 11115/rsyslogd

2.westos_node1 中设定发送日志到 westos_node2 中

$sudo vim /etc/rsyslog.conf
	*.* @172.25.254.20
$sudo systemctl restart rsyslog

@ 表示使用 udp 传输日志
@@ 表示使用 tcp 传输日志
@172.25.254.20 把本机日志用 udp 的传输方式发送到 172.25.254.20 主机
测试:
在 westos_node1 和 westos_node2 中

$sudo > /var/log/messages  ##清空日志

在 westos_node1 中

$sudo logger westos test message

在 westos_node2 中可以看到 westos_node2 中生成的日志!!

3.timedatectl

$sudo timedatectl set-time "2020-12-17 10:41:55" ##设定系统时间
$sudo timedatectl list-timezones ##显示系统的所有时区
$sudo timedatectl set-timezone "Asia/Shanghai" ##设定系统时区
$sudo timedatectl set-local-rtc 0|1 ##设定系统时间计算方式
								##0 表示使用 utc 时间计算方式

4.时间同步服务

#服务名称: chronyd.service
#配置文件: /etc/chrony.conf
真机作为时间源 虚拟机同步真机时间
在真机中

$sudo vim /etc/chrony.conf
	26 allow 172.25.254.0/24 ##允许 172.25.254.0 网段主机同步时间
	29 local stratum 10 ##开启时间同步服务器功能并设定级别为 10
$sudo systemctl restart chronyd.service
$sudo systemctl stop firewalld

在虚拟机中

$sudo vim /etc/chrony.conf
	pool 172.25.254.11 iburst
$sudo systemctl restart chronyd

在虚拟机中查看时间,已经变成真机中的时间。
使用 chronyc 命令查看时间效果:

$sudo 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
||       Reachability register (octal) -.     | 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.11                10    6       17       15  -6970ns[+8437ns] +/- 180us
上一篇:shell脚本中关于变量的讲解


下一篇:Linux 基础操作