1.11 系统日志管理

日志

kernel --> 物理终端(/dev/console) --> /var/log/dmesg
# dmesg 或 # cat /var/log/dmesg

/sbin/init

常用log日志类型及位置

  • /var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
  • /var/log/maillog:邮件系统产生的日志信息
  • /var/log/secure:与安全相关的日志信息

信息详细程度:日志级别

系统日志服务

  • centos5系统日志服务

    • syslog:
  • rsyslog:centos6,是syslog的升级版

    • 特性:
      • 多线程
      • 支持UDP,TCP,SSL,TLS协议
      • 支持使用MySQL、PGSQL和Oracle实现日志存储
        • 默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志
      • 强大的过滤器,可实现过滤系统日志信息中的任何部分
      • 自定义输出格式
        • elasticsearch,logstash,kibana = elk
        • elasticsearch:存储,分析日志
        • logstash:日志收集工具
        • kibana:前端展示工具
  • syslog和rsyslog服务均有两个进程:
    - syslogd:系统,非内核产生的日志信息。
    - klogd:内核,专门负责记录内核产生的日志信息。

  • syslog服务的配置文件:/etc/syslog.conf

  • rsyslog服务的配置文件:/etc/rsyslog.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 #跟*相反,表示啥也没有

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

  • 系统上的绝对路径 #普通文件,如:/var/log/xxx

  • | COMMAND #管道,通过管道送给其他的命令处理

  • 终端 #终端,如:/dev/console

  • @HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1

  • 用户 #系统用户,如:root

  • * #登录到系统上的所有用户,一般emerg级别的日志是这样定义的

  • 定义格式例子:

    • mail.info /var/log/maillog 表示将mail相关的,级别为info及info以上级别的信息同步记录到/var/log/maillog文件中
    • mail.* -/var/log/maillog 表示将mail相关的所有日志信息异步记录到/var/log/maillog文件中,路径前的“-”表示异步模式
    • 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级别的
  • 文件记录(/var/log/message)的日志的格式:

    • 事件产生的日期时间 主机 进程(pid): 事件内容
  • 有些日志记录为二进制格式:/var/log/wtmp,/var/log/btmp

    • /var/log/wtmp:当前系统成功登录的日志,可使用last命令查看其内容
    • /var/log/btmp:当前系统失败的登录尝试的日志,可使用lastb命令查看其内容
    • lastlog命令:显示当前系统每一个用户最近一次的登录时间

配置rsyslog服务器:

  • 编辑配置文件(/etc/rsyslog.conf),将下列内容前面的注释(#)去掉,然后重启rsyslog服务即可:
    # Provides UDP syslog reception
    #$ModLoad imudp
    #$UDPServerRun 514
    
    # Provides TCP syslog reception
    #$ModLoad imtcp
    #$InputTCPServerRun 514
    
    示例:
    配置本地主机:
    [root@yusyang ~]# vim /etc/rsyslog.conf
    .....
    # The authpriv file has restricted access.	//修改以下登录状态存储日志位置为@[服务器地址IP]
    authpriv.*                                              @192.168.80.130
    ......
    
    配置rsyslog服务器:
    [root@localhost ~]# vim /etc/rsyslog.conf
    ......
    # Provides UDP syslog reception
    $ModLoad imudp
    $UDPServerRun 514
    # Provides TCP syslog reception
    $ModLoad imtcp
    $InputTCPServerRun 514
    ......
    # Save boot messages also to boot.log		//添加local0接收日志存储日志为/var/log/secure
    local0.*        /var/log/secure
    local7.*                                                /var/log/boot.log
    [root@localhost ~]# systemctl restart rsyslog		//配置有修改必须重启
    [root@localhost ~]# systemctl stop firewalld	//关闭服务器防火墙,否则会被拦截
    [root@localhost ~]# tail -f var/log/secure
    
  • 配置使用基于mysql存储日志信息的rsyslog服务器:假定此处的mysql和rsyslog是两台不同的主机
    • 注意:请关闭防火墙和SELINUX
    • a) 确保mysql服务正常
    • b) 在rsyslog服务器上安装rsyslog-mysql模块(yum install rsyslog-mysql)
    • c) 在mysql服务器上授权一个用户能够对Syslog数据库有写权限
      • GRANT ALL ON Syslog.* TO ‘syslog’@‘172.16.%.%’ IDENTIFIED BY ‘syslogpassword’;
    • d) 配置mysql服务器,在主配置文件(/etc/my.cnf)中添加下面两行内容,并重启mysql服务
      • skip_name_resolve = on
      • innodb_file_per_table = on
    • e) 在rsyslog服务器上执行sql语句
      mysql -usyslog -h172.16.100.9 -psyslogpassword < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
    • f) 配置rsyslog服务器能使用mysql存储日志。编辑/etc/rsyslog.conf文件并重启rsyslog服务
      在### MODULES ###段下面添加如下内容:
      $ModLoad ommysql
      在### RULES ###段下面添加如下内容:
      *.info;mail.none;authpriv.none;cron.none :ommysql:172.16.100.9,Syslog,syslog,syslogpassword
      ommysql:表示使用ommysql模块存储日志至mysql
      Syslog:表示mysql中的Syslog数据库
      syslog:表示连接mysql的用户
      syslogpassword:表示连接mysql的密码
    • g) 配置webserver,支持php
      yum install httpd php php-mysql php-gd
      service httpd start
    • h) 配置前端展示界面(loganalyzer软件)
      tar xf loganalyzer-3.6.5.tar.gz
      mv loganalyzer-3.6.5/src /var/www/html/loganalyzer
      cp -a loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/
      cd /var/www/html/loganalyzer/
      chmod +x *.sh
      ./configure.sh
      ./secure.sh
      chmod 666 config.php #如果没有此文件则手动touch一个即可
      在浏览器上输入:http://IP/loganalyzer/install.php
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值