zoukankan      html  css  js  c++  java
  • 系统日志管理

    系统日志管理

    日志文件的分类(日志保存在/var/log下)

    内核及系统日志

    由系统服务syslog统一进行管理

      

    /var/log/messages 内核及公共消息日志 /var/log/cron 计划任务日志 /var/log/dmesg 系统引导日志 /var/log/maillog 邮件系统日志 /var/log/secure 记录与访问限制相关日志

    用户日志

    记录系统用户登录及退出系统的相关信息

      /var/log/lastlog    最近的用户登录事件
        /var/log/wtmp        用户登录、注销及系统开关机
        /var/log/btmp         失败的用户登陆事件
        /var/run/utmp        当前登录的每个用户详细信息    

    程序日志

    由各种应用程序独立管理的日志文件,记录格式不统一
    Web服务的access_log、error_log
    Squid代理服务的access.log、cache.log
    FTP服务的Xferlog

    用户日志分析

    users    
    who    比w更加简洁
    w    查看当前登陆的用户
    last    最近系统登陆情况
    lastb    最近系统登陆失败的情况

    系统及内核日志格式

    时间标签       主机名    子系统名称    消息

    syslogd管理日志:5版本

    配置文件:/etc/syslog.conf

    格式如下

    服务类别.日志级别        日志消息发送位置 

    配置文件定义格式为:

     facility.priority        action 

    facility,可以理解为日志的来源或设备目前常用的facility有以下几种:

     auth                  # 认证相关的 
        authpriv              # 权限,授权相关的 
        cron                  # 任务计划相关的 
        daemon                # 守护进程相关的 
        kern                  # 内核相关的 
        lpr                   # 打印相关的 
        mail                  # 邮件相关的 
        mark                  # 标记相关的 
        news                  # 新闻相关的 
        security             # 安全相关的,与auth 类似  
        syslog               # syslog自己的 
        user                 # 用户相关的 
        uucp                 # unix to unix cp 相关的 
        local0 到 local7     # 用户自定义使用 
        *                    # *表示所有的facility 

    priority(log level)日志的级别,一般有以下几种级别(从低到高)

     debug           # 程序或系统的调试信息 
        info            # 一般信息
        notice          # 不影响正常功能,需要注意的消息 
        warning/warn    # 可能影响系统功能,需要提醒用户的重要事件 
        err/error       # 错误信息 
        crit            # 比较严重的 
        alert           # 必须马上处理的 
        emerg/panic     # 会导致系统不可用的 
        *               # 表示所有的日志级别 
        none            # 跟* 相反,表示啥也没有 

    日志消息的级别

    0  EMERG(紧急)        会导致主机系统不可用的情况
    1  ALERT(警告)        必须马上采取措施解决的问题
    2  CRIT(严重)        比较严重的情况
    3  ERR(错误)        运行出现错误
    4  WARNING(提醒)    可能会影响系统功能的事件
    5  NOTICE(注意)    不会影响系统但值得注意
    6  INFO(信息)        一般信息
    7  DEBUG(调试)        程序或系统调试信息等

    表示消息类别,例如:

    auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user

    action(动作)日志记录的位置

    系统上的绝对路径    # 普通文件 如: /var/log/xxx 
        |                   # 管道  通过管道送给其他的命令处理 
        终端              # 终端   如:/dev/console 
        @HOST               # 远程主机 如: @10.0.0.1      
        用户              # 系统用户 如: root 
        *                   # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的 

    定义格式例子:

    mail.info   /var/log/mail.log # 表示将mail相关的,级别为info及 
                                  # info以上级别的信息记录到/var/log/mail.log文件中 
    auth.=info  @10.0.0.1         # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 
                                  # 前提是10.0.0.1要能接收其他主机发来的日志信息 
    user.!=error                  # 表示记录user相关的,不包括error级别的信息 
    user.!error                   # 与user.error相反 
    *.info                        # 表示记录所有的日志信息的info级别 
    mail.*                        # 表示记录mail相关的所有级别的信息 
    *.*                           # 你懂的. 
    cron.info;mail.info           # 多个日志来源可以用";" 隔开 
    cron,mail.info                # 与cron.info;mail.info 是一个意思 
    mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的 

    rsyslog管理日志:6版本

    配置文件:/etc/rsyslog.conf
    格式如下

    服务类别.日志级别           日志消息发送位置 

    日志消息的级别

    0  EMERG(紧急)        会导致主机系统不可用的情况
    1  ALERT(警告)        必须马上采取措施解决的问题
    2  CRIT(严重)        比较严重的情况
    3  ERR(错误)        运行出现错误
    4  WARNING(提醒)    可能会影响系统功能的事件
    5  NOTICE(注意)        不会影响系统但值得注意
    6  INFO(信息)        一般信息
    7  DEBUG(调试)        程序或系统调试信息等

    连接符号

    . 记录大于等于此等级
    .= 只记录等于此等级的信息
    .! 不等于此等级,也就是记录此等级之外的信息

    表示消息类别,例如:

    auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user

    配置文件定义格式为:

    facility.priority        action 

    facility,可以理解为日志的来源或设备目前常用的facility有以下几种:

      auth                  # 认证相关的 
        authpriv              # 权限,授权相关的 
        cron                  # 任务计划相关的 
        daemon                # 守护进程相关的 
        kern                  # 内核相关的 
        lpr                   # 打印相关的 
        mail                  # 邮件相关的 
        mark                  # 标记相关的 
        news                  # 新闻相关的 
        security             # 安全相关的,与auth 类似  
        syslog               # syslog自己的 
        user                 # 用户相关的 
        uucp                 # unix to unix cp 相关的 
        local0 到 local7     # 用户自定义使用 
        *                    # *表示所有的facility 

    priority(log level)日志的级别,一般有以下几种级别(从低到高)

      debug           # 程序或系统的调试信息 
        info            # 一般信息
        notice          # 不影响正常功能,需要注意的消息 
        warning/warn    # 可能影响系统功能,需要提醒用户的重要事件 
        err/error       # 错误信息 
        crit            # 比较严重的 
        alert           # 必须马上处理的 
        emerg/panic     # 会导致系统不可用的 
        *               # 表示所有的日志级别 
        none            # 跟* 相反,表示啥也没有 

    action(动作)日志记录的位置

    系统上的绝对路径    # 普通文件 如: /var/log/xxx 
        |                   # 管道  通过管道送给其他的命令处理 
        终端              # 终端   如:/dev/console 
        @HOST               # 远程主机 如: @10.0.0.1      
        用户              # 系统用户 如: root 
        *                   # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的 

    定义格式例子:

    mail.info   /var/log/mail.log # 表示将mail相关的,级别为info及 
                                  # info以上级别的信息记录到/var/log/mail.log文件中 
    auth.=info  @10.0.0.1         # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 
                                  # 前提是10.0.0.1要能接收其他主机发来的日志信息 
    user.!=error                  # 表示记录user相关的,不包括error级别的信息 
    user.!error                   # 与user.error相反 
    *.info                        # 表示记录所有的日志信息的info级别 
    mail.*                        # 表示记录mail相关的所有级别的信息 
    *.*                           # 你懂的. 
    cron.info;mail.info           # 多个日志来源可以用";" 隔开 
    cron,mail.info                # 与cron.info;mail.info 是一个意思 
    mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的 

    日志的管理策略

    一般化措施

    重要日志做好备份/延长保存期限
    控制日志的访问权限

    集中管理日志

    方便消息的统一收集、整理和分析
    避免日志的意外丢失、防恶意篡改记录

    logrotate日志轮转

    logrotate轮转

    减小日志大小,降低分析难度
    丢弃过期日志节省空间
    结合cron每天执行

    软件包

    logrotate

    主配置文件/etc/logrotate.conf(daily, weekly, monthly, or yearly)

      weekly      轮转频率,默认每周
        rotate 4      保留4个轮转备份
        create      执行轮转后创建新文件
        #compress      是否压缩日志
        dateext        以年月日时间取代后缀1 2 3 ...
        include /etc/logrotate.d          包含此目录下的配置
        /var/log/wtmp {          启用轮转的日志文件
                monthly          每月轮转一次
            missingok          丢失不提示
                notifempty         如果为空则不轮转
                minsize 1M          日志达到1MB才开始轮转
                create 0664 root utmp      建新文件并设权限
                rotate 1          只保留一个备份
            }    

    轮询完会生成一个空的message文件

    如何轮询:

    1.假如以星期为轮询周期。如果系统有一个message文件,过了一周后会生成一个空的message文件和message1(原来的message),第二周就会生成message2文件(message1改为message2),依次类推

    logrotate    手工执行轮转

    -v    启动显示模式
        -f    强制rotate

    /var/lib/logrotate.status

    ** size生效的话,会忽略轮转频率
        ** 轮转频率生效的话,会忽略size
        ** 配置的顺序:后生效的会覆盖之前的语句
  • 相关阅读:
    关于消息队列的使用
    关于Redis中交互的过程
    关于Redis的启动过程
    【分布式】Zookeeper与Paxos
    【分布式】Chubby与Paxos
    【分布式】一致性协议
    【分布式】分布式架构
    【知识积累】try-catch-finally+return总结
    【面试】判断一棵二叉树是否为二叉排序树
    【面试】用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/zhongguiyao/p/9182510.html
Copyright © 2011-2022 走看看