Linux下日志集中管理.docx
- 文档编号:15198149
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:14
- 大小:20.56KB
Linux下日志集中管理.docx
《Linux下日志集中管理.docx》由会员分享,可在线阅读,更多相关《Linux下日志集中管理.docx(14页珍藏版)》请在冰点文库上搜索。
Linux下日志集中管理
Linux下日志集中管理
1、linux日志管理回顾
2、使用php-syslog-ng实现日志集中管理
1)使用RPM安装和配置LAMP
2)上传日志管理前端对应的查询页面,并且导入数据库模板
3)安装新的日志服务器支持日志的mysql管理,代替原来旧的syslog日志服务器
4)配置日志客户端
5)通过WEB界面访问收集到的日志
6)配置日志滚动
1、linux日志管理回顾(sysklogd)
linux系统中有两大类日志:
1、内核日志-->/dev/log
2、系统日志(软件日志)-->/proc/kmsg
1)默认日志文件介绍:
ls/var/log/--此目录下很多系统日志都存放在此,需要独立分区
/var/log/messages--非常重要的日志文件,几乎所有系统发生的重要错误都会记录在此
/var/log/secure--sshftptelnetpop3等有关
/var/log/dmesg--开机时核心检测过程中所产生的信息
/var/log/cron--查看时间任务有关的日志
/var/log/wtmp--用last查看,不能直接cat
/var/log/btmp--用lastb查看,登录失败的记录,不能直接cat
/var/log/lastlog--用lastlog查看
/var/log/boot--boot相关
/var/log/rpmpkgs--rpm相关
/var/log/maillog--mail相关
/var/log/spooler--news,uucp
/var/log/acpid--高级电源管理
/var/log/yum.log--yum程序相关的日志
还有一种日志就是每个服务所保存的日志,路径因服务会有所不同
一般是在/var/log/服务名/下
httpd:
/var/log/httpd/
2)日志服务器的软件组:
#rpm-qlsysklogd-1.4.1-44.el5
/etc/logrotate.d/syslog--日志滚动配置文件
/etc/rc.d/init.d/syslog--启动脚本
/etc/sysconfig/syslog--扩展配置文件
/etc/syslog.conf--主配置文件
/sbin/klogd--监控内核日志的命令
/sbin/syslogd--临近系统日志的命令
3)#cat/etc/rsyslog.conf文件中的元素:
日志设备:
(facility)
auth--pam产生的日志
authpriv--包括权限,登录相关的信息
cron--时间任务相关的信息,crontab,at
mail--邮件相关的信息
kern--内核产生的信息
uucp--unixtounxicopy指的是unix系统之间拷贝协议相关的信息
news--新闻组相关的信息
local0到local7--程序自定义的日志设备
日志级别(local0-local7):
(local7)debug--调试,产生的日志是最多的一个级别
(local6)info--一般信息的日志,最常用
(local5)notice--最具有重要性的普通条件的信息
(local4)warning或warn--警告级别
(local3)error--错误级别,阻止某个功能或者模块不能正常工作的信息
(local2)crit--严重级别,阻止整个系统或者整个软件不能正常工作的信息
(local1)alert--需要马上修改的信息
(local0)emerg或panic--内核崩溃等严重错误
none--什么都不记录
--上面的日志级别,从上往下级别从低到高,记录的信息是多到少,级别低的记录的信息包括级别高的
设备.日志级别的使用语法:
连接符号
.记录大于等于此等级
.=只记录等于此等级的信息
.!
不等于此等级,也就是记录此等级之外的信息
;可以写多个日志的定义
输出设备:
*.info;mail.none;authpriv.none;cron.none/var/log/messages
1、文件
2、tty[1-6]ttyS0
3、远程日志@
解释默认日志配置文件:
#cat/etc/rsyslog.conf
#kern.*/dev/console
--/dev/console指的是一种外接的终端设备,有些封闭主机(没有screen,keyboard,mouse等),可能会需要外接设备连接
*.info;mail.none;authpriv.none;cron.none/var/log/messages
--记录所有日志类型的info级别的信息到/var/log/messages,除了mail,authpriv,cron的信息
authpriv.*/var/log/secure
--记录authpriv的所有级别的信息到/var/log/secure
mail.*-/var/log/maillog
--记录邮件的所有级别的信息到/var/log/maillog,关于减号-的意思为:
因为邮件的信息相比于其他的来说是比较大的,所以是采用异步的方式,先存放在内存里,然后按一定的事件触发,或者到达一定的大小写到磁盘,而不是象其他的日志那样,产生了就马上写到磁盘。
cron.*/var/log/cron
--记录时间任务所有级别的信息到/var/log/cron
*.emerg*
--记录所有日志设备的emerg信息以wall的方式发送给每个登录到系统的人知道
uucp,news.crit/var/log/spooler
--记录uucp,new的crit信息到/var/log/spooler
local7.*/var/log/boot.log
--把bootmessages记录到/var/log/boot.log
4)配置实例
例1:
只记录mail的info级别信息到/var/log/newmaillog(.=只记录等于此等级的信息)
mail.=info/var/log/newmaillog
例2:
记录时间任务的info级别以上的所有信息(除了err外)到/var/log/newcron
cron.info;cron.!
err/var/log/newcron
cron.err/var/log/cron.err
例3:
开启debug日志(当服务配置时发生错误,而又无法得知错误是如何造成):
#vim/etc/syslog.conf
*.debug/var/log/debug.log
例4:
远程日志(日志集中管理):
client(*)-->server
服务端配置:
#vi/etc/sysconfig/syslog
SYSLOGD_OPTIONS="-r-x-m0"
-renablesloggingfromremotemachines
-xdisablesDNSlookupsonmessagesrecievedwith-r
#servicesyslogrestart
#netstat-unlp|grep:
514
日志客户端配置:
#vim/etc/syslog.conf
*.*@server_ip
logrotate-rotates,compresses,andmailssystemlogs
日志轮转rotate日志切割
#rpm-qlogrotate--确认软件是否已经安装
logrotate-3.7.4-9
#rpm-qllogrotate
/etc/cron.daily/logrotate--crontab按天来执行logrotate
/etc/logrotate.conf--主配置文件
/etc/logrotate.d--扩展配置文件
/usr/sbin/logrotate
常见的默认已经定义轮转的日志有:
/var/log/messages
/var/log/cron
/var/log/boot.log
/var/log/maillog
/var/log/secure
#vim/etc/logrotate.conf--配置文件
#see"manlogrotate"fordetails
#rotatelogfilesweekly
weekly--默认是一个星期rotate一次
#keep4weeksworthofbacklogs
rotate4--默认保留4个
#createnew(empty)logfilesafterrotatingoldones
create--rotate后,创建一个新的代替
#uncommentthisifyouwantyourlogfilescompressed
#compress--默认没有打开日志压缩功能
#RPMpackagesdroplogrotationinformationintothisdirectory
include/etc/logrotate.d--这表示/etc/logrotate.d目录下的所有配置文件都生效
#nopackagesownwtmp--we'llrotatethemhere
/var/log/wtmp{--针对wtmp单独的配置,这里是绝对路径
monthly--一个月rotate一次,取代上面的全局配置里的一个星期一次
minsize1M--指定最小大小为1M,才rotate,就算是时间到了,大小没有1M,也不rotate
create0664rootutmp--定义创建的为属性为0664,属主为root,属组utmp
rotate1--保留一个
}
#vim/etc/logrotate.d/syslog
/var/log/messages/var/log/secure/var/log/maillog/var/log/spooler/var/log/boot.log/var/log/cron{
sharedscripts
prerotate
echo"beforerotate"|mailroot--轮转前发邮件
endscript
sharedscripts
postrotate
/bin/kill-HUP`cat/var/run/syslogd.pid2>/dev/null`2>/dev/null||true
/bin/kill-HUP`cat/var/run/rsyslogd.pid2>/dev/null`2>/dev/null||true
echo"endrotate"|mailroot--轮转后发邮件
endscript
}
#logrotate-vf/etc/logrotate.conf--强制轮转日志,并查看轮转的过程
给/var/log/debug.log做日志滚动:
#vim/etc/logrotate.d/debug
/var/log/debug.log{
missingok
notifempty
size50k
rotate365
daily
compress
dateext
create0600rootuser01
postrotate
/bin/kill-HUP`cat/var/run/syslogd.pid2>/dev/null`2>/dev/null||true
endscript
}
#/usr/sbin/logrotate/etc/logrotate.conf--按照配置文件来作日志滚动,如果不符合滚动要求,则放弃。
#/usr/sbin/logrotate-vf/etc/logrotate.conf--强制滚动日志
总结:
1、配置文件有两个,logrotate.conf全局的配置文件,/etc/logrotate.d/*局部配置文件
2、如果全局配置文件与局配置文件中有冲突,以局部配置文件中的选项为准
3、手工滚动:
/usr/sbin/logrotate/etc/logrotate.conf或强制:
/usr/sbin/logrotate-vf/etc/logrotate.conf
4、自动滚日志crontab-->/etc/cron.daily/logrotate
2、使用php-syslog-ng+LAMP+syslog-ng实现日志集中管理
服务器上安装的软件组成:
LAMP
syslog-ng--日志服务器
php-syslog-ng--前端查询页面
客户端需要安装的软件:
syslog-ng-client--日志客户端
1)使用RPM安装和配置LAMP
#yum-yinstallhttpdphpphp-mysqlmysql-server
#servicehttpdstart
#chkconfighttpdon
#servicemysqldstart
#chkconfigmysqldon
2)上传日志管理前端对应的查询页面,并且导入数据库模板
上传页面:
#tarxzvfphp-syslog-ng-2.9.1r10.tar.gz
#cp-rhtml/*/var/www/html/
新建数据库和对应账号:
mysql>createdatabasesyslog;
QueryOK,1rowaffected(0.00sec)
mysql>grantallonsyslog.*todbuser@'localhost'identifiedby'123';
QueryOK,0rowsaffected(0.00sec)
导入数据:
#mysql-udbuser-p123syslog
3)安装新的日志服务器支持日志的mysql管理,代替原来旧的syslog日志服务器
#rpm-ivhsyslog-ng-3.0.9-1.rhel5.i386.rpm
#chkconfig--list|grepsyslog
syslog-ng0:
off1:
off2:
on3:
on4:
on5:
on6:
off
修改syslog-ng默认配置文件,支持从网络接受来自其它服务器发送过来的日志,另外把接收到的日志和本地日志写入数据库对应的库和表中:
#vim/opt/syslog-ng/etc/syslog-ng.conf--把原来的配置清空,加入以下内容
@version:
3.0
sources_all{
internal();
unix-stream("/dev/log");
file("/proc/kmsg"program_override("kernel"));
udp(
ip(0.0.0.0)
port(514)
);
tcp(
ip(0.0.0.0)
port(514)
);
};
destinationd_mysql{
pipe("/var/log/mysql.pipe"
template("INSERTINTOlogs
(host,facility,priority,level,tag,datetime,program,msg)
VALUES('$HOST','$FACILITY','$PRIORITY','$LEVEL','$TAG','$YEAR-$MONTH-$DAY$HOUR:
$MIN:
$SEC',
'$PROGRAM','$MSG');\n")template-escape(yes));
};
log{
source(s_all);
destination(d_mysql);
};
重启服务:
#/etc/init.d/syslog-ngrestart
#netstat-nlp|grep:
514
tcp000.0.0.0:
5140.0.0.0:
*LISTEN4283/syslog-ng
udp000.0.0.0:
5140.0.0.0:
*4283/syslog-ng
通过脚本把syslog-ng接收到的所有日志都写入mysql中
#vim/root/syslog2myssql.sh
#!
/bin/bash
if[!
-e/var/log/mysql.pipe]
then
mkfifo/var/log/mysql.pipe
fi
while[-e/var/log/mysql.pipe]
do
mysql-udbuser-p123syslog/dev/null
done
在后台运行这个程序
#nohup/bin/bash/root/syslog2myssql.sh&--使用nohup的方式启动,这样脚本运行时不需要依赖任何的端终
设置开机自启动:
#vim/etc/rc.local
nohup/bin/bash/root/syslog2myssql.sh&
4)配置日志客户端
#scpsyslog-ng-client-3.0.9-1.rhel5.i386.rpm192.168.1.11:
/root
#rpm-ivhsyslog-ng-client-3.0.9-1.rhel5.i386.rpm--安装此客户端后,同样原来的日志服务器也会被关闭,使用新的日志服务器
#vim/opt/syslog-ng/etc/syslog-ng.conf
@version:
3.0
options{
};
sources_local{
internal();
unix-stream("/dev/log");
file("/proc/kmsg"program_override("kernel"));
};
destinationd_messages{file("/var/log/messages");};--两个日志目标,一个本地,一个远程日志服务器
destinationd_logserver{udp("192.168.0.1");};
log{
source(s_local);
destination(d_messages);
destination(d_logserver);
};
重启服务:
#servicesyslog-ngrestart
5)通过WEB界面访问收集到的日志
1、验证server(192.168.1.10)和clinet(192.168.1.11)的日志有没有被写入数据库
在192.168.1.10登录数据库查看
mysql>select*fromlogs;
+--------------+----------+----------+--------+------+---------------------+-----------+-------------------------------------------------------------------------------------------------------+-----+
|host|facility|priority|level|tag|datetime|program|msg|seq|
+--------------+----------+----------+--------+------+---------------------+-----------+-------------------------------------------------------------------------------------------------------+-----+
|logserver|syslog|info|info|2e|2011-09-2515:
26:
47|syslog-ng|Terminationrequestedviasignal,terminating;|19|
|logserver|syslog|notice|notice|2d|2011-09-2515:
26:
47|syslog-ng|syslog-ngshuttingdown;version='3.0.9'|20|
|192.168.1.11|syslog|info|info|2e|2011-09-2515:
26:
54|syslog-ng|Terminationrequestedviasignal,terminating;|22|
|192.168.1.11|syslog|notice|notice|2d|2011-09-2515:
26:
54|syslog-ng|syslog-ngshuttingdown;version='3.0.9'|23|
2、为了方便日志的查询及管理使用php-syslog-ng提供WEB界面的日志管理
#chown-Rapache/var/www/html/config
#firefoxhttp:
//192.168.1.10/install--保证以下都是通过检测的,不然无法进行后续的安装
记住密码,然后点击ViewSite访问站点页面,并使用对应的账号和密码登录,部署到此结束。
6)配置日志滚动(最小滚动周期1天)
#vim/var/www/html/config/config.php
7define('LOGROTATERETENTION',30);--定义保存多少份旧日志
手工滚动日志:
#vim/var/www/html/scripts/logrotate.php
6$APP_ROOT='/var/www/html';
#/var/www/html/scripts/logrotate.php
自动滚动:
#crontab-e
5523***/www/html/scripts/logrotate.php
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 日志 集中 管理