日志
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