zoukankan      html  css  js  c++  java
  • Linux从入门到精通——系统日志管理

    ####系统日志管理###        程序产生日志

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

    1.rsyslog      vim /etc/rsyslog.conf

        Syslog 守护进程 — 一个用来接收、处理和发送 syslog 信息的程序。它可以远程发送 syslog 到一个集中式的服务器或写入到一个本地文件。常见的例子包括 rsyslogd 和 syslog-ng。在这种使用方式中,人们常说“发送到 syslog”。
    Syslog 协议 — 一个指定日志如何通过网络来传送的传输协议和一个针对 syslog 信息(具体见下文) 的数据格式的定义。它在 RFC-5424 中被正式定义。对于文本日志,标准的端口是 514,对于加密日志,端口是 6514。在这种使用方式中,人们常说“通过 syslog 传送”。
         rsyslog是一个开源工具,广泛用于linux系统以通TCP/UDP协议转发或者接受日志消息
         此服务是用来采集日志,不生成日志,收集日志并且搬到指定位置
         此服务的主配置文件为/etc/rsyslog.conf
         指定日志保存位置修改配置文件,修改后需要重启rsyslog服务才能生效
           *.*   /var/log/student.log

    2.rsyslog的管理
         /var/log/message    ##服务信息日志,大多数系统日志信息在这里
         /var/log/secure     ##安全和身份认证相关的消息和错误的日志文件
         /var/log/maillog    ##与邮件服务器相关的日志文件
         /var/log/cron       ##与定时人物相关的日志文件
         /var/log/boot.log   ##与系统启动有关的日志文件

             【UDP:直接发送  TCP:询问后才发送】
       

               "什么类型.什么级别"           /var/log/file                  ##日志采集规则

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


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

           【注意:从上到下,级别从低到高,记录的信息越来越少】
           【详细的可以查看手册:man 3 syslog】
      
    3.日志的远程同步
       (1)在日志发送方:
         vim /etc/rsyslog.conf
         *.*   @172.25.254.210  ## @表示udp协议发送 @@表示tcp协议发送
               日志接受方IP
                                          

         systemctl restart rsyslog
                【如果光在发送方开启同步日志,接受方是收不到同步日志的】

       (2)在日志接受方:
         vim /etc/rsyslog.conf
         15 $ModLoad imudp      ##日志接受模块
         16 ¥UDPServerRun 514  ##开启接受端口
                【开启端口但是有防火墙还是收不到同步的日志】
                                         

         systemctl restart rsyslog
         systemctl stop firewalld         ##关闭火墙
         systemctl disable firewalld      设定火墙开机关闭

                                          

      

       (3)测试:
          在发送方和接受方都清空日志文件
          > /var/log/messages      ##方便查看结果

       (4)在日志接受方查看
          cat /var/log/messages

                                            

    4.日志采集格式的设定
         vim  /etc/rsyslog.conf
         $template LOGFMT, "%timegenerated% %FROMHOST-IP% %syslogtag% %msg% "
         

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

          *.*              /var/log/westos;LOGFMT

          cat /var/log/westos

     

    5.时间同步服务
       (1)服务名称:chronyd

      Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。

      它由两个程序组成:chronyd和chronyc。

      chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

      chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

      在很多情况下,chrony相对于ntp程序来说,都有不少优势

       

       (2)在服务端vim /etc/chronyd.conf
          22.allow 172.25.254.0/24         ##允许那些客户端同步本机时间
          29.local stratum 10            ##本机不同步任何主机的时间,本机作为时间源

                                                   

          systemctl restart chronyd
          timedatectl set-timezone Asia/Shanghai   ##更改当前时区为东8区
       (3)在客户端:vim /etc/chrony.conf
          server 172.25.254.110 iburst       ##本机立即同步110主机时间
          systemctl restart chronyd

                                                      

          timedatectl set-timezone Asia/Shanghai    ##更改当前时区为东8区
       (4)测试:
          chronyc sources -v
          210 Number of source = 1

    6.timedatectl命令

      timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。

          timedatectl                  ##管理系统时间
          status                         ##显示当前时间信息
          set-time                      ##设定当前时间
          set-timezone               ##设定当前时区
          set-local-rtc 0|1          ##设定是否使用utc时间
          list-timezone               ##查看支持的所有时区

      (1).显示系统的当前时间和日期

      timedatectl
      # timedatectl status
      # 两条命令效果等价

    [root@rhel1 ~]# timedatectl 
           Local time: Sat 2017-10-07 10:55:22 CST
       Universal time: Sat 2017-10-07 02:55:22 UTC
             RTC time: Sat 2017-10-07 02:55:22
            Time zone: Asia/Shanghai (CST, +0800)
          NTP enabled: no
    NTP synchronized: yes
      RTC in local TZ: no
           DST active: n/a

      注意NTP synchronized值,只有时间服务器自己同步完成时间之后,才能为其它服务器提供时间同步服务。

      (2).设置日期与时间

      timedatectl set-time "YYYY-MM-DD HH:MM:SS"

      timedatectl set-time "YYYY-MM-DD"

      timedatectl set-time "HH:MM:SS"
      (3).查看所有可用的时区

      timedatectl list-timezones    # 亚洲

      timedatectl list-timezones |  grep  -E "Asia/Shanghai*"  #中国上海

      (4).设置时区

      timedatectl set-timezone Asia/Shanghai

      

      手动修改时间时,必须把NTP enabled 设置为no.

      [root@rhel1 ~]# date
        Sun Oct  8 11:00:51 CST 2017
      [root@rhel1 ~]# timedatectl
             Local time: Sat 2017-10-07 11:31:45 CST
          Universal time: Sat 2017-10-07 03:31:45 UTC
               RTC time: Sun 2017-10-08 03:01:57
              Time zone: Asia/Shanghai (CST, +0800)
             NTP enabled: no
        NTP synchronized: no
          RTC in local TZ: no
             DST active: n/a

      如果把NTP enabled 修改为yes时,表示开启自动同步时间,此时,是不能手动修改时间的。

      如果为No时,表示关闭自动同步时间。

      [root@rhel1 ~]# timedatectl set-ntp yes
      [root@rhel1 ~]# timedatectl set-time "2017-10-08 11:00:50"
        Failed to set time: Automatic time synchronization is enabled
      [root@rhel1 ~]# timedatectl set-ntp no
      [root@rhel1 ~]# timedatectl set-time "2017-10-08 11:00:50"
      [root@rhel1 ~]# date
      Sun Oct  8 11:00:51 CST 2017



    7.journal

      systemd-journald和rsyslog:

      • 一种改进的日志管理服务,是 syslog 的补充,收集来自内核、启动过程早期阶段、标
        准输出、系统日志,守护进程启动和运行期间错误的信息
      • 将消息写入到结构化的事件日志中(数据库),默认情况下重启后删除
      • syslog 的信息也可以由 systemd-journald 转发到 rsyslog 中进一步处理
      • 默认情况下,systemd 的日志保存在 /run/log/journal 中,系统重启就会清除,这是RHEL7的新特性。通过新建 /var/log/journal目录,日志会自动记录到这个目录中,并永久存储。
      • rsyslog 服务随后根据优先级排列日志信息,将它们写入到 /var/log目录中永久保存

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

                                                 

       (2)如何是使用systemd-journald保存系统日志
         

         默认情况下,systemd日志保存在/run/log/journal中,systemd-journald是不保存系统日志到硬盘的,那么关机后再开机只能看到本次开机之后的日志,上次关机之前的日志是无法查看的。如果将日志保存在/var/log/journal目录,这样做的优点是启动后就可以利用历史数据,形成永久日志

            实现步骤:
          mkdir /var/log/journal
          chgrp systemd-journal /ver/log/journal
          chmod g+s /ver/log/journal
          killall -1 systemd-journald

          ls /ver/log/journal
      

  • 相关阅读:
    URL 中使用 Base64 编码
    一个简单实用的C#日志类(第二版)
    C# 对象XML序列化
    VS2010安装项目的系统必备中添加.NET 2.0
    .NET Framework 4 安装程序
    使用ExeConfigurationFileMap读写配置文件
    C# 生成 XML
    Bug管理工具和测试管理工具介绍
    Android学习系列(19)App离线下载
    Android拓展系列(5)CyanogenMod源码下载和编译(Android ROM定制基础篇)
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9367234.html
Copyright © 2011-2022 走看看