全部博文(93)
分类: LINUX
2010-10-12 17:49:55
Target4 log日志服务器搭建
1. 何为日志服务器
Sa平日里关注最多的应该算是日志了,哪个服务出了问题,系统启动报错等等问题,首先要查看日志,日志功能也是linux的特点之一,任何重要的信息包括出错的信息,警告信息都会保存到日志里,这样管理人员只要分析日志就能很快的找出问题所在。服务器数量较少的时候,我们可以直接登录到服务器上面,查看日志;但是如果管理服务器数量较多时(如几十台,几百台,甚至上千台),再这样操作就太麻烦了。
那我们是不是可以搭建一台这样的服务器,所有的服务器的日志都集中到这台服务器上面,我们就可以只要登录这台服务器就可以查看其余服务器的日志了呢?
其实,简单的说实现集中管理日志功能的服务器就是日志服务器(个人总结)
2. 日志服务器的相关配置文件
/etc/sysconfig/syslog 主要配置文件
/etc/syslog.conf(其他服务器需配置的文件) 关于服务器日志信息的配置文件,决定生成的日志存放路径
1) /etc/sysconfig/syslog文件的内容如下:
# -m 0 disables 'MARK' messages.
# -r enables logging from remote machines //-r 启用接收远程服务器日志的功能,将监控UDP 514端口
# -x disables DNS lookups on messages recieved with –r //关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-r -m 0" //这一项主要是设置日志服务器的服务模式
# Options to klogd
# -2 prints all kernel oops messages twice; once for klogd to decode, and
# once for processing with 'ksymoops'
# -x disables all klogd processing of oops messages entirely
# See klogd(8) for more details
KLOGD_OPTIONS="-x"
#
SYSLOG_UMASK=077
# set this to a umask value to use for all log files as in umask(1).
# By default, all permissions are removed for "group" and "other".
2) /etc/syslog.conf
# 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
syslog.conf文件规则的设置格式:
facility.level action
facility: 定义日志消息的范围,其可使用的key有:
auth -由 pam_pwdb 报告的认证活动。
authpriv -包括特权信息如用户名在内的认证活动
cron -与 cron 和 at 有关的计划任务信息。
daemon -与 inetd 守护进程有关的后台进程信息。
kern -内核信息,首先通过 klogd 传递。
lpr -与打印服务有关的信息。
mail -与电子邮件有关的信息
mark - syslog内部功能用于生成时间戳
news -来自新闻服务器的信息
syslog -由 syslog 生成的信息
user -由用户程序生成的信息
uucp -由 uucp 生成的信息
local0-local7 -与自定义程序使用
level: 定义消息的紧急程度。按严重程度由高到低顺序排列为
emerg -该系统不可用,等同panic
alert -需要立即被修改的条件
crit -阻止某些工具或子系统功能实现的错误条件
err -阻止工具或某些子系统部分功能实现的错误条件,等同error
warning -预警信息,等同warn
notice -具有重要性的普通条件
info -提供信息的消息
debug -不包含函数条件或问题的其他信息
none -没有重要级,通常用于排错
* 所有级别,除了none
其中,panic、error、warn均为旧的标识符,不再建议使用。
在定义level级别的时候,需要注意两点:
1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;
2)低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。(除非使用=号定义)
selector选择条件
通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:
* - 所有日志信息
= - 等于,即仅包含本优先级的日志信息
! - 不等于,本优先级日志信息除外
Action 执行的动作
由前面选择条件定义的日志信息,可执行下面的动作:
file-指定日志文件的绝对路径
terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2
@host -远程的日志服务器
username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中
named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径
※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理。
举例
*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。
mail,news.=info /var/adm/info
#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。
mail.*;mail.!=info /var/adm/mail
#把邮件的除通知性消息外都写入mail文件中。
mail.=info /dev/tty12
#仅把邮件的通知性消息发送到tty12终端设备
*.alert root,joey
#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
*.* @finlandia
#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)
※注意:每条消息均会经过所有规则的,并不是唯一匹配的。
也就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。
3. 日志服务器的布署流程
案例:
192.168.1.8做日志服务器,将192.168.1.41的登录日志,及info日志发送到192.168.1.8上。
1) 安装syslogd软件包,由于大部分系统都默认装有这软件,所以直接使用默认安装的软件包。
[root@test8 lib]# rpm -qa|grep syslog*
syslog-ng-3.0.3-1.rhel5
2) vi /etc/sysconfig/syslog
将SYSLOGD_OPTIONS改为SYSLOGD_OPTIONS="-r -x -m 10"
:wq
3) 客户端(192.168.1.41)
Vi /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none @192.168.1.8
authpriv.* @192.168.1.8
(其它略)
:wq
3) 重启服务包括客户端都要重启log服务
Service syslog restart
4) 部署完成
注: 此过程中客户端生成的日志不在保存本地,而是直接发送到远程的日志服务器,其存放路径默认与日志服务器本地日志的路径相对应。如*.info…..日志,log server的本地路径为 /var/log/messeges,那么客户端产生的日志也存放在此路径下。
如要单独指定,需要脚本来实现。脚本另提供。
整理于2010-09-07
chinaunix网友2010-10-13 19:55:45
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com