您的位置:首页 > 运维架构 > Linux

Linux系统日志管理和时间同步服务

2020-01-15 03:50 197 查看

一、系统日志管理
1、rsyslog ##此服务是用来采集系统日志的,他不产生日志,只起到采集的作用
2、rsyslog 的管理
日志的说明:

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

指定日志采集路径:
什么类型的日志.什么级别的日志 /var/log/file ##日志采集规则

日志的类型:

日志 作用
auth pam产生的日志
authpriv ssh、ftp等登陆信息的验证信息
cron 时间任务相关
kern 内核
mail 邮件
mark(syslog)-rsyslog 服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix to unix copy unix主机之间相关的通讯
local 1~7 自定义的日志设备

日志的级别分为:

日志名称 作用
debug 有调试信息的,日志信息最多
info 一般信息的日志,最常用
notice 最具有重要性的普通条件的信息
warning 警告级别
err 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert 需要立即修改的信息
emerg 内核崩溃等严重信息
none 什么都不记录

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

操作示例:
目的:
把系统中所有日志采集到/var/log/westos文件中
操作:
vim /etc/rsyslog.conf
* . * /var/log/westos
systemctl restart rsyslog
测试:
systemctl restart sshd ##命令目的是为了生成日志
cat /var/log/westos ##此文件中出现日志信息

3、日志的远程同步
在日志的发送方:
vim /etc/rsyslog.conf

* . * @172.25.254.200##“@”表示udp协议发送,“@@”表示tcp协议发送

将任意类型任意级别的日志文件远程传输到200这台主机:

重新启动rsyslog:
systemctl restart rsyslog

在日志的接受方:
vim /etc/rsyslog.conf

修改第15,16行:
15 $ModLoad imudp ##日志接收模块
16 $UDPServerRun 514 ##开启接收端口

重新启动rsyslog:
systemctl restart rsyslog

在接收方查看网络端口514是否开启:

systemctl stop firewalld ##关闭火墙
systemctl disable firewalled ##设定火墙开机关闭
查看防火墙的状态:

dead表示关闭,disabled表示开机不启动。

测试:
在发送方和接收方都清空日志文件
> /var/log/messages
在日志的发送方
logger test

cat /var/log/messages ##查看日志已经生成
从结果可以看出,实现了日志的远程同步。

注意:在日志同步的过程中可能会出现以下问题
此时,日志文件虽然同步了过来,但是存在多余信息,在出现此问题的主机上执行以下操作,重启虚拟机可以解决此问题。
4、日志采集格式的设置
日志采集格式如下:

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

1>指定日志采集格式设定:

  • vim /etc/rsyslog.conf #编辑日志配置文件
    第48行输入以下内容:
    意思是设定一个叫WESTOS的日志采集格式,此采集格式包含主机ip,日志时间,记录目标,日志内容和换行。
    再写入以下内容:
    将所有类型所有级别的日志文件以WESTOS的形式传输到指定的文件中。
    重启rsyslog服务:
    查看日志,按照我们要求的格式显示日志信息:

    2>修改系统默认日志采集格式:
  • vim /etc/rsyslog.conf #编辑日志配置文件
    第30行输入以下内容:
    修改系统默认日志采集格式为WESTOS。
    重启日志服务并进行测试:
    5、时间同步服务
    服务名称:chronyd
    在服务端:
    编辑时间服务文件

    修改第22行和第29行的内容:
    允许那些客户端来同步本机时间:

    本机不同步任何主机的时间,本机作为时间源:

    重启时间服务:

    关闭防火墙:

    在客户端:

    编辑以下内容:
    重启时间同步服务:

    执行以下命令:

    显示结果如下,出现^和*表示时间同步成功:
    查看两台主机的时间是否一致:
    服务端的时间为:

    客户端的时间为:
    结果表明时间同步成功。
    6、timedatectl命令
    timedatectl ##管理系统时间
timedatectl status 显示当前时间信息
timedatectl set-time 设置当前时间
timedatectl set-timezone 设置当前时区
timedatectl set-local-rtc 0或1 设置是否使用utc时间
timedatectl list-timezone 查看支持的所有时区

timedatectl status 显示当前时间信息

此时时区为America/New_York

  • timedatectl list-timezones #查看支持的时区
  • timedatectl set-timezone Asia/Shanghai #设置当前时区为上海时区
  • timedatectl set-local-rtc 1 #设置使用utc时间
  • timedatectl set-time "2019-10-21 15:41:25 " #设置当前时间
  • timedatectl set-ntp false #设置NTP关闭

    7、日志查看工具
    1>journalctl #日志查看工具
journalctl -n 3 查看最近三条日志
journalctl -p err 查看错误日志
journalctl -o verbose 查看日志的详细参数
journalctl --since 查看从什么时间开始的日志
journalctl --until 查看到什么时间为止的日志
  1. journalctl -n 3 #查看最近三条日志

  2. journalctl -p err # 查看错误日志

  3. journalctl -o verbose #查看日志的详细参数

  4. journalctl --since #查看从什么时间开始的日志

    2>将日志保存在系统硬盘中
    默认systemd-journal是不保存系统日志到硬盘中的,关机之后再开机只能看到开机以后的系统日志,关机前的日志无法查看,此实验目的就是关机重启之后还能看到关机之前的系统日志。
    实验过程如下:

    1、在/var/log下创建一个文件夹journal
    2、将/var/log/journal的所属组改成systemd-journal,这样这个文件才会被系统所识别去记录日志
    3、是这个目录下的所有文件的所属组都是systemd-journal
    4、重新加载日志服务
    具体实现代码如下:

    重启主机之后查看日志文件,从时间上可以看出,关机的之前日志得以保存:

  • 点赞
  • 收藏
  • 分享
  • 文章举报
WangTynl 发布了46 篇原创文章 · 获赞 1 · 访问量 919 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: