zoukankan      html  css  js  c++  java
  • [RH124] 12-日志管理、NTP

    1.学会提问

    • 1.我在做什么?
    • 2.我要实现什么样的效果,而我的结果是什么?提供结果对比。
    • 报错信息是什么?
    • 日志怎么显示的?

    2.如何解决问题

    • 1.定位问题:通过查看日志。
    • 解决问题

    3.rsyslog

    Linux的日志是用一个服务来管理的。

      rsyslog:RHEL6开始就叫rsyslog。

      syslog:RHEL5以前叫syslog。

    这个日志管理服务是默认开机启动的。

    4.rsyslog的配置文件

    /etc/rsyslog.*

    rsyslog的配置文件,其中包含rsyslog.conf以及rsyslog.d里的listen.conf。

    rsyslog.conf文件解析:

    MODULES:MODULES段里的配置决定各个模块的开启与关闭。

    GLOBAL DIRECTIVES:rsyslog全局配置,一般保持默认,不用修改。

    RULES:定义各种日志。

    Linux系统中内置很多种事件(大概八九十种),每种事件都有以下级别。

    级别有以下几种:

    级别高低:emerg>aler>crit>err>warning>notice>info,debug只是调试使用。

    RULES格式:

       "事件.级别   file":意思是,事件的级别 >= 级别时,日志保存到file中。

    例如:

    这个配置的意思:

      "*"表示所有事件,*.info:即所有事件中,级别大于等于info的都写入日志/var/log/messages里。

      mail.none:表示关于邮件的事件,不写日志。同理authpriv.none和cron.none。

     

    为什么要将mail,authpriv,cron的日志去除掉,因为我们要把他们单独放到日志文件中。如图:

    意思是把authpriv、mail、cron相关的所有信息记录到对应的日志文件中。

     -/var/log/maillog 中的"-"是异步的意思,即将内存中的内容写到硬盘中是一批一批写入的,效率比同步写入要高。

     

    上图中:

    *.emerg:表示所有达到emerg级别的事件发生时,会触发":omusrmsg:*",系统会想所有在线终端发送通告。

    例如,我们模拟一个emerg事件:logger -p local5.emerg 'this is a test':模拟事件local5发生,级别是emerg,输出通告是"this is a test",这条通告会实时发送到每个终端。如图:

    模拟一个日志输出:

    1)我们在rsyslog.conf中,另起一行:

    2)重启rsyslog日志管理服务:systemctl restart rsyslog 

    3)然后我们模拟local5事件发生,级别为debug。

       logger -p local5.debug 'This is a log about local5.debug...' 

    4.看/var/log/xx.log中是否记录日志:

    5.日志服务器

    同时管理很多服务器的时候,不可能每台机器登录上去查看日志。

    那么我们可以配置一台日志服务器,来收集每台被管理服务器的日志。

    配置远程日志服务器:

    1)在host67(被监控机器)修改/etc/rsyslog.conf中:

    如果发生local6事件级别大于或等于debug,就将该日志发送给192.168.1.68服务器的rsyslog处理。

    2)重启host67的rsyslog服务。 systemctl restart rsyslog 

    3)在host68(日志服务器)上修改/etc/rsyslog.conf配置:

    打开UDP、TCP远程接收日志的模块。

    定义local6事件级别大于等于debug,如何处理。

    4)重启host68上的rsyslog服务。 systemctl restart rsyslog 

    5)在host67上模拟local6.info事件发生。

    6)检查host68的/var/log/messages和/var/log/yy.log里是否已写入日志:

    日志中的host67表示来自哪个主机(主机名),hanxinda表示日志产生时,登录的用户是哪个(su到其他用户的情况不算)。

     

    根据主机名来设置日志存放地点:

    如果节点服务器有很多,每一台都产生时间,并发送给日志服务器,那么服务器存放日志在同一个文件下就会很乱。我们可以根据主机名来分类的存放日志

    1)在日志服务器上配置/etc/host:

    2)在日志服务器/etc/rsyslog.conf中配置:

    3)这样,只要是来自host67的日志,都会先被写到host67.log日志文件中。同时该日志也会写到先前配置的yy.log中。因为/etc/rsyslog.conf配置文件的RULES是从上到下匹配的,只要匹配上,就会把日志写到指定的地方。

     

    设置远程日志放在一些文件中,不影响本地日志:

    在日志服务器/etc/rsyslog.conf配置:

    "~"表示匹配到的日志,就此打住,后面的规则就不用匹配的。所以,来自host67的日志,在写入host67.log后,就不会与本地日志混合了。

    6.如何查看日志

    journalctl:查看所有事件日志。
    journalctl -f:查看最近事件日志。
    journalctl -p err:查看err级别以上的日志。
    
    journalctl --since "2018-06-13 20:00:00":查看2018-06-13 晚8点以后的所有日志。
    journalctl --since "2018-06-13 20:00:00" --until "2018-06-20 20:00:00" :查看2018-6-13 晚8点到2018-6-20晚8点之间的日志。

    7.NTP服务

     date :查看时间

     date 122010002018 :设置时间为2018年12月20日10点00分。

     kwclock -s :把时间修改为bios时间。

    timedatectl命令:

    timedatectl status  # 查看时间详细信息。简写为timedatectl。
    timedatectl list-timezones  # 查看可用时区列表。
    timedatectl set-timezone Africa/abidjan  # 设置时区为Africa/abidjan。

    如果不适用timedatectl,如何修改时区呢:

    Linux系统时区文件都放在 /usr/share/zoneinfo 下,按 洲来存放。

    例如 /usr/share/zoneinfo/Asia/Shanghai 。

     

    我们要修改时区,只需要把该时区文件覆盖 /etc/localtime 就可以了。

     cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

    但是用这种方法修改后,时间是正常的,但是用timedatectl查看时区,还是显示的错误的

     

    timedatectl set-time "2018-07-03 12:00:00"  # 设置时间。同时会将系统时间和BIOS时间都设置了。
    timedatectl set-time 12:00:00  # 设置时间为12点。

    配置NTP服务:

    1)关闭默认NTP服务

    系统默认有一个NTP服务叫chronyd.service。

    我们设置不启动它:

     systemctl stop chronyd.service 

     systemctl disable chronyd.service 

    2)安装NTP服务:

    mount /dev/cdrom /mnt
    rpm -ivh /mnt/Packages/ntp-4.2.6p5-19.el7_0.x86_64.rpm
    rpm -ivh /mnt/Packages/ntpdate-4.2.6p5-19.el7_0.x86_64.rpm

    或者使用 yum install ntp -y 安装。

    3)配置/etc/ntp.conf

    允许192.168.1.0网段的机器向我进行同步。(不含noquery表示可以询问时间)

     

    127.127.1.0不是一个网段,而是一个IP地址(回环地址,主板芯片上的地址),表示我这个服务器去哪里同步时间,可以写多个。

     

    4)启动ntpd

    systemctl start ntpd.service
    systemctl enable ntpd.service

    5)在另外一台机器上使用ntpdate 192.168.1.67进行同步。

     

    设置向服务器自动同步时间:

    1)安装system-config-date软件。

     yum install system-config-date -y 

    2)配置:

    在界面中配置NTP服务器地址。

    运行 system-config-date & 

    可能出现界面上从网络同步时间的选项是灰色的(无法勾选

    这时:我们使用timedatectl查看时间详细信息,里面的

    我们需要通过 timedatectl set-ntp true 来启用。

    再次运行 system-config-date & 

    我们修改NTP Servers框里的服务器地址:

    3)使用 chronyc sources -v 查看是否同步成功。

    看到左下角的"*"表示同步成功。

     

    ===

  • 相关阅读:
    20034 #917
    loj3066
    P5391
    Hive on spark和Hive on mr在处理orc格式表格时数据不一致问题探究
    解决自定义Spark的jar包提交到yarn上使用cluster模式执行时报错keberos用户找不到问题
    三个文件教你写一个命令行终端[electron实战]
    按钮点击防止双击
    uniapp-base64加密解密(不会中文乱码)
    Android Studio 2021.3.1 阿里云盘分享地址
    Oracle——创建多个实例(数据库)、切换实例、登录数据库实例
  • 原文地址:https://www.cnblogs.com/leokale-zz/p/12531768.html
Copyright © 2011-2022 走看看