Linux运维学习--Linux系统日志管理

一、系统日志

进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排查。依照惯例,这些日志永久存储在/var/log目录中。

Redhat 7中系统的日志消息由两个服务负责处理,它们是system-journaldrsyslog

systemd-journald守护进程提供一种改进的日志管理服务,可以收集来自内核,启动过程的早期阶段,标准输出,系统日志,以及守护进程启动和运行期间错误消息。它将这些消息写入到一个结构化事件日志中,默认情况下不在重新启动之间保留。这允许系统日志错过的系统日志消息和事件收集到一个中央数据库中。

rsyslog服务随后根据类型(或者设备)和优先级排列系统日志消息,将它们写入到/var/log目录内的永久文件。

/var/log目录保管由rsyslog维护的各种特定系统和服务的日志文件。

日志文件 用途
/var/log/messages 服务信息日志
/var/log/secure 系统登陆日志
/var/log/cron 定时任务日志
/var/log/maillog 邮件日志
/var/log/boot.log 系统启动日志

二、rsyslog服务

1.rsyslog服务

rsyslog 是一个开源工具 , 被广泛用于 Linux 系统以通过 TCP/UDP 协议转发或接收日志消息

rsyslog 服务的主配置文件为 /etc/rsyslog.conf ,指定日志保存位置修改配置文件 , 修改后重启 rsyslog 服务生效

注意:此服务用来采集系统日至,本身不产生日至,只起到采集作用

2.指定日志采集路径

 vim /etc/rsyslog.conf   		##在RULES下添加:
 什么类型的日志.什么级别的日志		/var/log/file		##日志采集规则,将日志保存到/var/log/file

修改后重启 rsyslog 服务生效
其中,日志类型有:

日志类型 含义
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 警告级别
error 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert 需要立刻修改的信息
emerg 内核崩溃等严重信息
none 不记录任何信息

注意: 从上到下级别越来越高,记录的信息越来越少

更详细的信息可查看手册:man 3 syslog

实验:
修改配置文件/etc/rsyslog.conf,加入收集规则:

 auth.info                                               /var/log/westos

在这里插入图片描述
之后重启服务:
在这里插入图片描述
在没有认证之前没有westos文件,认证后该文件建立且包含认证信息:
在这里插入图片描述
3.日志的远程同步

发送端:在/etc/rsyslog.conf文件中添加规则(这里使用udp协议,若使用tcp协议则用@@接受端ip )

    *.* 				 @接受端ip 

之后重启rsyslog服务
示例:
在这里插入图片描述

接受端:在/etc/rsyslog.conf文件15、16行中打开插件和udp514接口,之后关闭火墙


在这里插入图片描述
改为:
在这里插入图片描述
更改完配置文件重启rsyslog服务
使用命令 systemctl stop firewalld.service 关闭火墙(也可以使用firewall-cmd --add-port 514/udp命令调整防火墙规则)

测试:
清空日志文件后,在发送端输入 logger 1111111111111
查看接受端日志文件/var/log/messages发现有从发送端主机client发送的日志:
Linux运维学习--Linux系统日志管理_第1张图片
4.日志采集格式设定

在接受端修改配置文件/etc/rsyslog.conf

 #### GLOBAL DIRECTIVES ####

 # Where to place auxiliary files
 $WorkDirectory /var/lib/rsyslog

 # Use default timestamp format
 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

下填入:

 $template NEWFORM,"%FROMHOST-IP% %timegenerated% %syslogtag% %msg%\n"

其中内容的含义为:

内容 含义
%FROMHOST-IP% 显示主机ip
%timegenerated% 显示日志时间
%syslogtag% 日志记录目标
%msg% 日志内容
\n 换行

在要更改日志类型的规则后写入新规则的名字:
Linux运维学习--Linux系统日志管理_第2张图片
之后查看日志发现格式以更改:
Linux运维学习--Linux系统日志管理_第3张图片

若要将全部日志的格式全部修改,则更改配置文件为:

 #### GLOBAL DIRECTIVES ####

 # Where to place auxiliary files
 $WorkDirectory /var/lib/rsyslog

 # Use default timestamp format
 #$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
 $ActionFileDefaultTemplate NEWFORM

三、系统时间调整工具timedatectl

1.timedatectl命令

使用timedatectl命令可以查看系统当前时间:

 [kiosk@foundation63 ~]$ timedatectl 
       Local time: Fri 2019-10-25 02:34:47 CST			#本地时间
   Universal time: Thu 2019-10-24 18:34:47 UTC			#世界时间
         RTC time: Thu 2019-10-24 18:34:48				#硬件时间
        Time zone: Asia/Shanghai (CST, +0800)			#时区
      NTP enabled: yes									#是否开启网络时间的同步
 NTP synchronized: no									#时间是否和网络时间同步过
  RTC in local TZ: no									
       DST active: n/a									#夏令制时间

2.更改时区

 timedatectl list-timezones			#列出所有时区

示例:
Linux运维学习--Linux系统日志管理_第4张图片
更改时区:

  timedatectl set-timezone Asia/Shanghai			#更改时区为上海

示例:
Linux运维学习--Linux系统日志管理_第5张图片
3.网络同步设置

 timedatectl set-ntp ture			#打开网络同步 false为关闭

注意:该命令需在使用utc时间的基础上使用

4.修改时间

 timedatectl set-time "2019-10-24 18:55:00"			#修改时间为2019-10-24 18:55:00

示例:
Linux运维学习--Linux系统日志管理_第6张图片
5.是否使用utc时间

 timedatectl set-local-rtc 0			#不使用utc时间,1表示使用

四、时间同步服务

1.chronyd服务

使用chronyd服务可以实现时间同步

2.在服务端

  vim /etc/chrony.conf			#打开配置文件

将22行:
在这里插入图片描述
修改为:

  22 allow 172.25.254.116/24			#允许哪些客户端来同步本机时间

将29行:
在这里插入图片描述
改为:
在这里插入图片描述

  systemctl restart chronyd.service		#重启服务

3.在客户端

  vim /etc/chrony.conf			#打开配置文件


在这里插入图片描述
改为:
在这里插入图片描述其中 server 172.25.254.216 iburst表示本机立即同步216主机的时间,之后:

  systemctl restart chronyd.service		#重启服务

4.测试

在客户端输入:

 chronyc sources -v

显示:
Linux运维学习--Linux系统日志管理_第7张图片
若显示^* 服务端ip 则表示成功同步

四、journalctl命令

journalctl 命令用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。默认不会将内存中的日志采集到硬盘中

用法:

 journalctl				#查看日志
 journalctl -n 3			#查看最近的三条日志
 journalctl --since 17:50		#查看从17:50到现在的日志
 journalctl --since 17:50 --until 17:52   	#查看从17:50到17:52的日志
 journalctl -o verbose			#查看日志详细信息
 journalctl _PID=82 _COMM=systemd-journal		#指定日志信息查看日志
 journalctl -p err			#查看错误日志

使用systemd-journald保存系统日志

默认systemd-journald不保存日志到硬盘,关机后再次开机只能看到开机后的日志,上次关机之前的日志无法查看
通过以下命令即可实现系统日志的保存:

 mkdir /var/log/journal						#建立目录
 chgrp systemd-journal /var/log/journal		#更改目录组
 chmod g+s /var/log/journal/			#增加目录及其包含文件的权限
 killall -1 systemd-journald			#在服务不关闭的情况下刷新服务
 ls /var/log/journal					#发现有一个机器码

重启后发现重启之前的日志也被保存下来:
Linux运维学习--Linux系统日志管理_第8张图片

你可能感兴趣的:(运维,linux,运维)