• linux日志


    linux日志管理

    一、日志文件位置

     

     二、日志服务rsysogd

    日志格式等级: 日志服务 [连接符号] 日志等级   日志记录位置

     

     日志记录位置:

      (1)绝对路径  

      (2)系统设备文件

      (3)远程主机:可以选择TCP协议和UDP协议传输日志信息。

          UDP : “@192.168.0.210:514”

          TCP :  “@@192.168.0.210:514”

      (4)用户名,mail.* * 把所有级别的日志发送给所有在线用户,如果发送给多个用户,用户名之间用 “,”分割。

    ·  日志等级为“none”,或者日志记录位置为“~”,代表不会记录。

    主配置文件 :/etc/rsyslog.conf 配置文件的内容

    [root@localhost ~]# vi /etc/rsyslog.conf
    #查看配置文件的内容
    # rsyslog v5 configuration file
    # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
    # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
    #### MODULES ####
    #加载模块
    $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
    #加载 imuxsock 模块,为本地系统登录提供支持
    $ModLoad imklog # provides kernel logging support (previously done by rklogd)
    #加载 imklog 模块,为内核登录提供支持
    #$ModLoad immark # provides --MARK-- message capability
    #加载 immark 模块,提供标记信息的能力
    # Provides UDP syslog reception
    #$ModLoad imudp
    #$UDPServerRun 514
    #加载 UPD 模块,允许使用 UDP 的 514 端口接收采用 UDP 协议转发的日志
    # Provides TCP syslog reception
    #$ModLoad imtcp
    #$InputTCPServerRun 514
    #加载 TCP 模块,允许使用 TCP 的 514 端口接收采用 TCP 协议转发的日志
    #### GLOBAL DIRECTIVES ####
    #定义全局设置
    # Use default timestamp format
    $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
    #定义日志的时间使用默认的时间戳格式
    # File syncing capability is disabled by default. This feature is usually not required,
    # not useful and an extreme performance hit
    #$ActionFileEnableSync on
    #文件同步功能。默认没有开启,是注释的。
    # Include all config files in /etc/rsyslog.d/
    $IncludeConfig /etc/rsyslog.d/*.conf
    #包含/etc/rsyslog.d/目录中所有的“.conf”子配置文件。也就是说这个目录中的所有
    #子配置文件也同时生效。
    #### RULES ####
    #日志文件保存规则
    # Log all kernel messages to the console.
    # Logging much else clutters up the screen.
    #kern.* /dev/console
    #kern 服务.所有日志级别 保存在/dev/console
    #这个日志默认没有开启,如果需要,则取消注释
    # Log anything (except mail) of level info or higher.
    # Don't log private authentication messages!
    *.info;mail.none;authpriv.none;cron.none /var/log/messages
    #所有服务.info 以上级别的日志保存在/var/log/messages 日志中。
    #mail,authpriv,cron 的日志不记录在/var/log/messages 日志文件中,因为它们都有自己的日志文件。
    #所以/var/log/messages 日志是最重要的系统日志文件,需要经常查看!
    # The authpriv file has restricted access.
    authpriv.* /var/log/secure
    #用户认证服务所有级别的日志保存在/var/log/secure 日志中
    # Log all the mail messages in one place.
    mail.* -/var/log/maillog
    #mail 服务的所有级别的日志保存在/var/log/maillog 日志中。
    #“-”号的含义是日志先在内存之中保存,当日志够多之后,再向文件中保存。
    # Log cron stuff
    cron.* /var/log/cron
    #计划任务的所有日志保存在/var/log/cron 日志中
    # Everybody gets emergency messages
    *.emerg *
    #所有日志服务的疼痛等级日志对所有在线用户广播。
    # Save news errors of level crit and higher in a special file.
    uucp,news.crit /var/log/spooler
    #uucp 和 news 日志服务的 crit 以上的日志保存在/var/log/sppoler 日志文件中。
    # Save boot messages also to boot.log
    local7.* /var/log/boot.log
    #loacl7 日志服务的所有日志写入/var/log/boot.log 日志中。
    #会把开机时的检测信息在显示到屏幕的同时,写入/var/log/boot.log 日志中
    # ### begin forwarding rule ###
    #定义转发规则
    # The statement between the begin ... end define a SINGLE forwarding
    # rule. They belong together, do NOT split them. If you create multiple
    # forwarding rules, duplicate the whole block!
    # Remote Logging (we use TCP for reliable delivery)
    #
    # An on-disk queue is created for this action. If the remote host is
    # down, messages are spooled to disk and sent when it is up again.
    #$WorkDirectory /var/lib/rsyslog # where to place spool files
    #$ActionQueueFileName fwdRule1 # unique name prefix for spool files
    #$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
    #$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
    #$ActionQueueType LinkedList # run asynchronously
    #$ActionResumeRetryCount -1 # infinite retries if host is down
    # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
    #*.* @@remote-host:514
    # ### end of the forwarding rule ##

    定义自己的日志

    [root@localhost ~]# vi /etc/rsyslog.conf
    #写入一下一句话
    *.crit /var/log/alert.log
    #把所有服务的“临界点”以上的错误都保存在/var/log/alert.log 日志中
    [root@localhost ~]# service rsyslog restart
    关闭系统日志记录器: [确定]
    启动系统日志记录器: [确定]
    #重启 rsyslog 服务
    [root@localhost ~]# ll /var/log/alert.log

    三、日志轮替

    1、日志文件的命名规则

      主要依靠 /etc/logrotate.conf 配置文件中“dateext”参数:

    2、logrotate 配置文件

    # no packages own wtmp and btmp -- we'll rotate them here
    #以下两个轮替日志有自己的独立参数,如果和默认的参数冲突,则独立参数生效。
    /var/log/wtmp {
    #以下参数仅对此目录有效
    monthly
    #每月对日志文件进行一次轮替
    create 0664 root utmp
    #建立的新日志文件,权限是 0664,所有者是 root,所属组是 utmp 组
    minsize 1M
    #日志文件最小轮替大小是 1MB。也就是日志一定要超过 1MB 才会轮替,否则就算
    #时间达到一个月,也不进行日志转储
    rotate 1
    #仅保留一个日志备份。也就是只有 wtmp 和 wtmp.1 日志保留而已
    }
    /var/log/btmp { #以下参数只对/var/log/btmp 生效 missingok #如果日志不存在,则忽略该日志的警告信息 monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.

    配置文件主要参数:

     

      prerotate 和 postrotate 主要用于在日志轮替的同时,执行指定的脚本,一般用于日志轮替之后重启服务。这里强调,如果你的日志是写入 rsyslog 服务的配置文件的,那么把新日志加入 logrotate后,一定要重启 rsyslog 服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。那是因为虽然 logrotate 知道日志轮替了,但是 rsyslog 服务却并不知道。同理,如果你的日志不是被 rsyslog 管理,如源码包安装的 Apache、Nginx 等服务,则需要重启 Apache 或 Nginx 服务,否则日志也不能正常轮替。

    3、把自己的日志加入日志轮替

    (1)直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略

    (2)在/etc/logrotate.d 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被“include”到主配置文件中。

    例子:

    [root@localhost ~]# chattr +a /var/log/alert.log
    #先给日志文件赋予 chattr 的 a 属性,保证日志的安全
    [root@localhost ~]# vi /etc/logrotate.d/alter
    #创建 alter 轮替文件,把/var/log/alert.log 加入轮替
    /var/log/alert.log {
    weekly 每周轮替一次
    rotate 6 保留 6 个轮替日志
    sharedscripts 以下命令只执行一次
    prerotate 在日志轮替之前执行
    /usr/bin/chattr -a /var/log/alert.log
    #在日志轮替之前取消 a 属性,以便让日志可以轮替
    endscript 脚本结束
    sharedscripts
    postrotate 在日志轮替之后执行
    /usr/bin/chattr +a /var/log/alert.log
    #日志轮替之后,重新加入 a 属性
    endscript
    sharedscripts
    postrotate
    /bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
    endscript
    #重启 rsyslog 服务,保证日志轮替正常
    }

    4、logrotate 命令

      我们日志轮替之所以可以在指定的时间备份日志,其实也要依赖系统定时任务。如果大家还记得/etc/cron.daily/目录,就会发现这个目录中是有 logrotate 文件,logrotate 通过这个文件依赖定时任务执行的。

    [root@localhost ~]# logrotate [选项] 配置文件名
    选项:
    如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
    -v: 显示日志轮替过程。加了-v 选项,会显示日志的轮替的过程
    -f: 强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有
    的日志进行轮替
  • 相关阅读:
    Multi-level CSS3 UL_LI Dropdown Menu
    10个优秀的 HTML5 & CSS3 下拉菜单制作教程
    MVC中@Html.Action的用法(类似自定义控件)
    ASP.NET MVC---自定义HtmlHelper方法
    FormsAuthentication登录ReturnUrl使用绝对路径
    asp.net mvc 身份验证中返回绝对路径的ReturnUrl
    asp.net 2.0 下的表单验证Cookieless属性
    IHttpModule在webconfig中的注册
    中国象棋棋谱浏览器
    刘永富-微信助手
  • 原文地址:https://www.cnblogs.com/yellowzunzhi/p/12815145.html
Copyright © 2020-2023  润新知