Chinaunix首页 | 论坛 | 博客
  • 博客访问: 525178
  • 博文数量: 93
  • 博客积分: 2479
  • 博客等级: 大尉
  • 技术积分: 1008
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 11:59
文章分类

全部博文(93)

文章存档

2012年(2)

2011年(41)

2010年(24)

2009年(21)

2008年(5)

分类: 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
其中,panicerrorwarn均为旧的标识符,不再建议使用。

在定义level级别的时候,需要注意两点:

1)优先级是由应用程序在编程的时候已经决定的,除非修改源码编译,否则不能改变消息的优先级;
2
)低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖noticewarningerrcritalertemerg等消息。(除非使用=号定义)

                   selector选择条件

通过小数点符号“.”facilitylevel连接在一起则成为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
#
如果rootjoey用户已经登陆到系统,则把所有紧急信息通知他们
*.*                          @finlandia
#
把所有信息都导向到finlandia主机(通过/etc/hostsdns解析其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

阅读(2057) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-13 19:55:45

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com