Linux日志:
其存储位置是 /var/log/messages, secure,
会以时间顺序将系统发生的事记录到此文件中来.
会记录事件的内容以及发生的时间,
日志还有日志级别, log level
centos5 系统
日志系统分两个服务进程,
syslogd : 系统进程相磁的日志
klogd: 内核事件相关的日志
在centos6系统上,进化为rsyslog,比起centos5的系统多了很多优点和特性
支持 TCP,SSL,TLS,RELP
还支持将数据存储到数据库中,
能过滤syslog信息中的任意部分.
可以自定义输出格式,
特别适用企业级的日志中继功能.
facility :具体记录日志的工具,可以从功能上,或者程序上进行分类,并交由专门的工具负责记录其日志
auth 与认证相关
authpriv 与认证授权相关
cron 为周期性计划任务记录日志
daemon 为守护进程记录日志
kern 为内核
lpr 打印
mail 邮件
mark 防火墙标记
news 新闻系统?
security 安全
syslog 日志系统本身的日志
user 与用户相关
uucp
local0 - local7 自定义的日志记录
priority :日志级别
debug =>事无巨细,全部记录
info 详细信息
notice 注意
warn, warning 警告 ==>在此级别以上的,都要引起重视了
err, error 错误
crit 蓝色警界
alert 橙色警界
emerg, panic 红色警界, 恐慌
记录日志,需要在配置文件中指明,什么类型的什么级别的系统日志,需要记录在什么位置.在系统配置文件中定义/etc/rsyslog.conf [还有扩展的 /etc/rsyslog.d/ 下的所有.conf后缀文件]
例如 /etc/rsyslog.conf 文件中的定义
*.info;mail.none;authpriv.none;cron.none /var/log/messages
所有info级别以上的信息,都记录到 /var/log/messages里, 但是 authpriv cron 除外
比如,有一些级别的日志生成特别多, 我们需要单独的记录在某一文件中
mail.=info /var/log/maill.log =>只记录 邮件在info级别上的日志, 记录位置是/var/log/mail.log
mail.* -/var/log/maillog
# Everybody gets emergency messages
*.emerg * =>恐慌级别的所有信息, 向当前系统上所有登陆的用户都发送
# Log all the mail messages in one place.
mail.* -/var/log/maillog 所有邮件日志都以异步方式写入/var/log/maillog文件中
日志信息格式:
时间 主机 进程(PID): 事件
在生产环境中,集群中的主机,每天都会产生很多日志,不方便管理,一般统一集中在一台日志服务器上做日志记录.
那么我们就得启用日志服务器功能
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp ==>启用imudp 模块
$UDPServerRun 514 并监听在udp 514端口
# Provides TCP syslog reception
$ModLoad imtcp ==>启用imtcp 模块
$InputTCPServerRun 514 并监听在tcp514端口
举个例子,现在
172.16.26.6主机,作为日志服务器 172.16.26.14作为需要记录日志的客户机
编辑 14 的/etc/rsyslog.conf 文件
将除了邮件,authpriv认证授权 cron周期性计划任务以外的日志信息都记录到6主机上
*.info;mail.none;authpriv.none;cron.none @172.16.26.6
[root@php5_6 etc]# tail -3 /var/log/messages
Aug 9 13:25:57 php5_6 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2024" x-info="http://www.rsyslog.com"] start
Aug 19 08:04:15 php_14 kernel: imklog 5.8.10, log source = /proc/kmsg started. ==>现在,能记录到14主机上的内核重新装载了配置
Aug 19 08:04:15 php_14 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="21841" x-info="http://www.rsyslog.com"] start
=>14主机上的rsyslogd 重新启动了
现在想配置将系统日志记录到mysql数据库中,怎么办呢?
如果主机上没有安装mysql,那么得先安装
[root@php5_6 etc]# yum install mysql-server
还要安装rsyslog-mysql ,以实现rsyslogd 与mysql的交互
[root@php5_6 etc]# yum install rsyslog-mysql
我们查看,安装的 rsyslog-mysql 模块,为我们生成了什么文件
[root@php5_6 etc]# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so ==>日志输出到mysql数据库所需要的模块
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql 数据库表
此时,我们需要在系统日志的主配置文件中,写入配置,让其加载/lib64/rsyslog/ommysql.so
$ModLoad ommysql => 装载写入mysql的模块
同时还需要指明哪些日志以什么身份写到哪个数据库中 ,
*.info;mail.none;authpriv.none;cron.none:ommysql:127.0.0.1,Syslog,log,log123
建立记录日志的数据库,以及库中的表
[root@php5_6 etc]# mysql -u root -p < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
mysql> grant all on Syslog.* to log@'172.16.26.%' IDENTIFIED BY 'log123';
Query OK, 0 rows affected (0.00 sec)
[root@php5_6 ~]# service rsyslog restart 重启日志服务
在14主机上卸载 tree
[root@php_14 ~]# yum remove tree
查看日志服务器上的SystemEvents表
有相关日志记录
当然,这样看用户体验很差,我们可以安装一个web版的查看系统
通过yum快速安装一个lamp环境
yum install httpd
yum install php
yum install mysql-server
yum install rsyslog-mysql
yum install php-gd
loganalyzer-3.6.5.tar.gz ==>下载此项目包
将/loganalyzer-3.6.5/src下所有的文件解压到/var/www/html目录
在浏览器中输入主机ip地址访问
http://172.16.26.6/index.php
警告信息不用管,直接下一步
点击下一步后,会出现一个警告信息,
提示没有./config.php文件,我们去创建一个
[root@php5_6 html]# touch config.php
此时提示,该文件没有写权限,OK,给它加上就是了
[root@php5_6 html]# chmod 666 config.php
ok,有权限了,下一步
这一步,默认的显示样式按自己的需求修改,这里使用默认的,不作修改
正确的填写自己的数据库名,继续下一步
点击finish完成安装
OK,大功告成!