zoukankan      html  css  js  c++  java
  • 日志分析及管理

    日志分析及管理
    知识要点
    日志的作用
    rsyslog服务介绍
    日志文件的存放位置
    常见日志文件内容介绍
    用户验证相关日志
    常用日志操作命令
    日志管理策略
    日志转储功能(logrotate)
    日志分析及管理
    日志的作用
    用于记录系统、程序运行中发生的各种事件
    通过阅读日志,有助于诊断和解决系统故障
    [root@localhost ~]# yum install -y httpd
    //日志的位置 /var/log/messages
    [root@localhost ~]# tail -f /var/log/messages 
    Jan  7 06:45:36 localhost acpid: 1 client rule loaded
    Jan  7 06:45:37 localhost automount[1550]: lookup_read_master: lookup(nisplus): couldn't locate nis+ table auto.master
    Jan  7 06:45:38 localhost kdump: kexec: loaded kdump kernel
    Jan  7 06:45:38 localhost kdump: started up
    Jan  7 06:45:43 localhost abrtd: Init complete, entering main loop
    Jan  7 09:50:42 localhost abrtd: Got signal 15, exiting
    Jan  7 09:50:44 localhost init: rc main process (3505) killed by TERM signal
    Jan  7 09:50:44 localhost kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
    Jan  7 09:50:44 localhost abrtd: Init complete, entering main loop
    Jan  7 09:50:45 localhost init: start-ttys main process (3990) terminated with status 1
    日志文件的分类
    内核及系统日志
    由系统服务rsyslog统一进行管理,日志格式基本相似
    用户日志
    记录系统用户登录及退出系统的相关信息
    程序日志
    由各种应用程序独立管理的日志文件,记录格式不统一
    日志格式
    日志记录的一般格式
    [root@localhost ~]# tail  -5  /var/log/messages
    Sep 14 11:22:44 localhost kernel: sdb: cache data unavailable
    Sep 14 11:22:44 localhost kernel: sdb: assuming drive cache: write through
    Sep 14 11:22:44 localhost kernel:  sdb: sdb1
    Sep 14 11:23:37 localhost kernel: VFS: Can't find ext3 filesystem on dev sdb1.
    Sep 14 16:54:48 localhost NetworkManager: <information> starting...
    //     时间标签  主机名    子系统名         消息字段
    rsyslog系统日志
    由系统服务 rsyslog统一管理
    软件包:rsyslog-5.8.10-8
    [root@localhost ~]# rpm -q rsyslog
    rsyslog-5.8.10-10.el6_6.x86_64
    主要程序:/sbin/rsyslogd
    配置文件:/etc/rsyslog.conf
    [root@localhost ~]# grep  -v  "^#"  /etc/rsyslog.conf |  grep  -v  ^$
    *.info;mail.none;authpriv.none;cron.none           /var/log/messages
    authpriv.* /var/log/secure
    mail.* -/var/log/maillog
    cron.* /var/log/cron
    //设备类别,日志级别                               // 消息 发送位置
    配置文件:/etc/rsyslog.conf语法
    日志设备(类型).(连接符号)日志级别 日志处理方式(action)
    日志设备(可以理解为日志类型):
    日志的级别
    日志级别
    NONE: 什么都不记录
    EMERG(紧急):会导致主机系统不可用的情况
    ALERT(警告):必须马上采取措施解决的问题
    CRIT(严重):比较严重的情况
    ERR(错误):运行出现错误
    WARNING(提醒):可能会影响系统功能的事件
    NOTICE(注意):不会影响系统但值得注意
    INFO(信息):一般信息
    DEBUG(调试):程序或系统调试信息等
    从上到下,级别从高到低,记录的信息越来越多
    连接符号
    . :记录大于等于后面的级别日志
    .=:只记录等于后面的级别日志
    .!=:只记录不等于后面的级别日志
    日志处理方式
    本地文件:通常就是文件的绝对路径
    打印机:例如 /dev/lp0 这个打印机装置
    用户名称:显示给用户
    远程主机:例如 @202.100.100.1
    *:所有在线的用户
    规则:
    #### RULES ####

    # Log all kernel messages to the console.
    # Logging much else clutters up the screen.
    #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

    # The authpriv file has restricted access.
    authpriv.* /var/log/secure

    # Log all the mail messages in one place.
    mail.* -/var/log/maillog


    # Log cron stuff
    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

    # Save boot messages also to boot.log
    local7.* /var/log/boot.log
    系统日志文件
    系统日志保存位置
    默认位于:/var/log 目录下
    主要日志文件介绍
    • 内核及公共消息日志:/var/log/messages
    • 计划任务日志:/var/log/cron
    • 系统引导日志:/var/log/dmesg
    • 邮件系统日志:/var/log/maillog
    程序日志文件
    由相应的应用程序独立进行管理
    Web服务:/var/log/httpd/
    access_log、error_log
    代理服务:/var/log/squid/
    access.log、cache.log、squid.out、store.log
    FTP服务:/var/log/xferlog
    ……
    分析工具
    文本查看、grep过滤检索、Webmin管理套件中查看
    awk、sed等文本过滤、格式化编辑工具
    Webalizer、Awstats等专用日志分析工具
    用户日志文件
    保存了用户登录、退出系统等相关信息
    数据文件,cat无法查看
    /var/log/lastlog:最近的用户登录事件
    /var/log/wtmp:用户登录、注销及系统开、关机事件
    /var/run/utmp:当前登录的每个用户的详细信息
    /var/log/secure:与用户验证相关的安全性事件
    用户登录分析
    who、w、users、last、ac、lastlog
    日志命令
    主动记录日志工具
    logger:从命令行直接向系统日志文件写入一行信息
    [root@localhost ~]# ping -c2 10.10.10.20 | logger -it "this is a test" -p authpriv.info
    [root@localhost ~]# tail -5 /var/log/secure 
    Aug  4 09:40:44 localhost this is a test[10351]: 64 bytes from 10.10.10.20: icmp_seq=2 ttl=64 time=0.276 ms
    Aug  4 09:40:44 localhost this is a test[10351]: 
    Aug  4 09:40:44 localhost this is a test[10351]: --- 10.10.10.20 ping statistics ---
    日志管理策略
    及时作好备份和归档
    控制日志访问权限
    日志中可能会包含各类敏感信息,如账户、口令等
    集中管理日志
    使用日志服务器便于日志的统一收集、整理和分析
    杜绝日志信息的意外丢失、恶意篡改或删除
    日志服务器
    应用示例:
    调整rsyslog服务设置,建立集中管理的日志服务器
    将客户机B中所有日志消息,自动发送到服务器A的日志文件中
    在服务器上配置:
    1、修改/etc/rsyslog.conf文件,把以下2项的注释取消
    [root@localhost ~]#  vim /etc/rsyslog.conf
    $ModLoad imudp
    $UDPServerRun 514
    2、重启rsyslog服务
    [root@localhost ~]# service rsyslog restart
    service rsyslog restart
    在客户机上配置:
    1、修改/etc/rsyslog.conf文件,在最后加一行,内容如下:、、
    *.* @172.16.88.189 服务器IP
    2、重启rsyslog服务
    service rsyslog restart
    3、发送
    [root@localhost log]# echo “123445” | logger -it "from88.189" -p local5.info
    报错:
    [root@localhost ~]# tail -1 /var/log/messages
    Jan 11 21:34:43 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3462" x-info="http://www.rsyslog.com"] start
    关闭防火墙
    [root@localhost ~]# service iptables stop
    iptables: Setting chains to policy ACCEPT: filter          [ OK ]
    iptables: Flushing firewall rules: [ OK ]
    iptables: Unloading modules: [ OK ]
    测试
    在客户机通过logger添加日志
    注意:
    关闭selinux,Linux的一种安全保护
    [root@localhost ~]# vim /etc/selinux/config 
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled  //将此处修改为disabled*****
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    在服务器上查看日志
    [root@localhost ~]# tail -1 /var/log/messages
    Jan  8 20:00:55 localhost from88.189[3696]: hello2 world
    日志转储功能
    介绍
    系统时时刻刻都在产生日志,如果不及时清理,很快就会填满硬盘,但如果要手工清理,又很麻烦。这种情况下,logrotate 这个程序很好的完成这个任务。
    logrotate 用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据天数来转储,这个过程一般通过crond进程来执行,logrotate 还可以用于压缩日志文件
    Logrotate的次要配置文件:
    /etc/logrotate.d/*
    每个文件代表一种日志的配置
    [root@localhost ~]# cat /etc/logrotate.d/syslog
    /var/log/messages  /var/log/secure  /var/log/maillog  /var/log/spooler /var/log/boot.log /var/log/cron {
        sharedscripts
        postrotate
     /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
     /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
        endscript
    }
    日志转储
    logrotate -v /etc/logrotate.conf
    -f:强制转储
    [root@localhost ~]# logrotate -vf /etc/logrotate.conf  
    rotating log /var/log/messages, log->rotateCount is 4
    renaming /var/log/messages.4 to /var/log/messages.5 (rotatecount 4, logstart 1, i 4), 
    renaming /var/log/messages.3 to /var/log/messages.4 (rotatecount 4, logstart 1, i 3), 
    renaming /var/log/messages.2 to /var/log/messages.3 (rotatecount 4, logstart 1, i 2), 
    [root@localhost ~]# logrotate -v /etc/logrotate.conf  
    reading config file /etc/logrotate.conf
    including /etc/logrotate.d
    ..
    rotating pattern: /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron  weekly (4 rotations)
    empty log files are rotated, old logs are removed
    considering log /var/log/messages
      log does not need rotating
    本章总结
    理解syslog的运行机制
    掌握syslog.conf文件的语法
    掌握基本的日志查询命令
    理解日志轮转(logrotate)的运行机制
    掌握logrotate.conf文件的语法
    练习
    将主机2上与计划任务相关的日志都发到主机1上去;修改主机1配置文件,将计划任务相关的日志记录到日志文件/var/log/newcron.log,注意该文件不能被随意删除和篡改;设定该日志文件的轮转,每周轮转一次,若该文件大于5M,则自动轮转,保留6个备份
    配置:
    主机1
    1、vim /etc/rsyslog.conf
    新建规则
    cron.* /var/log/newcron.log
    取消注释:
    $ModLoad imudp
    $UDPServerRun 514
    2、重启服务
    srevice rsyslog restart
    主机2
    1、vim /etc/rsyslog.conf
    新建规则
    cron.* @1
    2、重启服务
    srevice rsyslog restart
    发送消息:
    主机2:echo "123" | logger -it "from88.188" -p cron.info
    查看消息:
    主机1:cat /var/log/newcron.log
    控制权限:
    chmod 600 /var/log/newcron.log
    配置次要文件
    主机1: cd /etc/logrotate.d/
    touch newcron
    vim newcron
    /var/log/newcron.log {
    weeekly
    size 5M
    rotate 6
    postrotate
    srevice rsyslog restart
    endscript
    }
  • 相关阅读:
    编写属于自己的Linux Service命令
    Cloudera Manager和CDH4.1的安装
    html5基础教程收集整理精华
    Javascript跳转页面和打开新窗口等方法
    VK值列表
    标准C++之fstream
    PeekMessage用法
    Web系统常用测试方法
    VC控件的一些原理
    Visual C++ 文件操作
  • 原文地址:https://www.cnblogs.com/qluzzh/p/10306210.html
Copyright © 2011-2022 走看看