目前,linux依旧使用syslogd作为日志监控进程,而在主流的linux发行版中依旧使用sysklog这个比较老的日志服务器套件。从前一篇日志可以看到,对其进行必要的配置能减少很多麻烦,并且可更有效的从系统日志监控到系统的状态。理解并完善一个syslog的配置,对于系统管理员来说显得尤为重要。
一、配置文件
    以红旗DC Server 5.0为例,默认的日志服务器就是sysklog套件:

引用
# rpm -qa|grep sysklogd
sysklogd-1.4.1-26_EL

其主要的配置文件有两个:

引用
/etc/sysconfig/syslog

这里定义syslog服务启动时可加入的参数。

引用
/etc/syslog.conf

这个是syslog服务的主要配置文件,根据定义的规则导向日志信息。

二、设置主配置文件
/etc/syslog.conf根据如下的格式定义规则:

引用
facility.level action
设备.优先级 动作

facility.level 字段也被称为seletor(选择条件),选择条件和动作之间用空格或tab分割开。
#号开头的是注释,空白行会自动跳过。

1、facility
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 -与自定义程序使用
* 通配符代表除了 mark 以外的所有功能

除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

2、level级别
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等消息。(除非使用=号定义)

3、selector选择条件
通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:

引用
* - 所有日志信息
= - 等于,即仅包含本优先级的日志信息
! - 不等于,本优先级日志信息除外

4、action动作
由前面选择条件定义的日志信息,可执行下面的动作:

引用
file-指定日志文件的绝对路径,默认为直接写入磁盘文件;但可以在路径前加上“减号” ,表示先放到缓存中,达到一定数量后再写入磁盘,这样能提高性能;但若期间机器出现问题,这些日志数据可能会丢失;因此,只建议用于日志数量大,但非必要的日志文件中,例如mail 等。
terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2
@host -远程的日志服务器
username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中 
named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径

※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理。

5、举例
例如:

引用
*.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主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。

6、测试
部分情况下,上述规的实际执行结果和定义的预想结果可能会有出入。这时,可使用logger程序辅助测试:

# logger -p user.notice 'Hello World!'

日志显示:

引用
Nov 12 13:40:04 dc5test root: Hello World!

其表示意思如下:

引用
第一列:日志产生时间
第二列:产生此日志的主机名称
第三列:产生此日志的应用程序或用户名称
第四列:日志信息

7、自定义日志级别
正如前面所说的,应用程序的日志级别是由应用程序所决定的。部分应用程序可通过配置,定义其日志级别。
例如,/etc/ssh/sshd_config文件中就有:

引用
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

把sshd的日志定义在authpriv.info级别。配合syslog.conf中的:

引用
authpriv.*    /var/log/secure

则日志文件被写入/var/log/secure文件中。

◎我们修改为:

引用
SyslogFacility local0

配合在syslog.conf中增加:

引用
local0.*    /var/log/sshd.log

保存后,重新启动sshd或syslog服务,则以后sshd服务的所有日志都会单独的放到sshd.log文件中了。

三、设置服务参数
默认情况下,syslog进程是不能接受其他日志服务器发过来的消息的。而通过修改其启动参数,可实现日志的大集中功能。
修改/etc/sysconfig/syslog文件:

引用
-r : 打开接受外来日志消息的功能,其监控514 UDP端口;
-x : 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m : 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次“--MARK--”信息;
-h : 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。

通过man syslogd可获得更详细的帮助,而具体到实际配置文件为:

引用
SYSLOGD_OPTIONS="-r-x-m 0"

保存后,重启服务即可:

# service syslog restart

此时,客户机只要通过修改syslog.conf,定义动作为@主机或IP,即可发送日志信息到本服务器中。
(在构建集中的日志服务器时,请务必配合ntp时间服务,以保证信息的有效性,避免不必要的麻烦)
另外,/etc/sysconfig/syslog配置文件中,还定义有klogd服务的启动参数:

引用
KLOGD_OPTIONS="-x"

详细帮助,请参考man 8 klogd或man klogd。

四、参考
http://www.rhce.com.tw/rhel/syslog/
http://blog.chinaunix.net/u1/33592/showart_351061.html
http://server.it168.com/server/2007-10-28/200710281631265_1.shtml
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2438&start=96&s=0

syslog日志系统的更多相关文章

  1. syslog之一:Linux syslog日志系统详解

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  2. syslog之三:建立Windows下面的syslog日志服务器

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  3. 【转载】scribe、chukwa、kafka、flume日志系统对比

    原文地址:http://www.ttlsa.com/log-system/scribe-chukwa-kafka-flume-log-system-contrast/ 1. 背景介绍许多公司的平台每天 ...

  4. atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.

    atitit. 日志系统的原则and设计and最佳实践总结. 1. 日志系统是一种不可或缺的单元测试,跟踪调试工具 1 2. 日志系统框架通常应当包括如下基本特性 1 1. 所输出的日志拥有自己的分类 ...

  5. scribe、chukwa、kafka、flume日志系统对比 -摘自网络

    1. 背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1) 构建应用系统和分析系统的桥梁 ...

  6. 开源日志系统 log4c 使用心得+总结

    http://blog.csdn.net/sky_qing/article/details/7208645 一.安装: 我看网上好多人介绍log4c安装的时候都说有两个步骤:先下载expat安装包并安 ...

  7. (转)syslog日志等级

    设施.优先级”(facility.priority)设施(facility): kern 0 内核日志消息 user 1 随机的用户日志消息 mail 2 邮件系统日志消息 daemon 3 系统守护 ...

  8. 【转载】CentOS日志系统组成详解

    日志系统有三部分组成:一.使用什么工具记录系统产生的日志信息?      syslog服务脚本管理的两个进程: syslogd.klogd 来记录系统产生的日志信息:      klogd     进 ...

  9. 开源日志系统比较:scribe、chukwa、kafka、flume

    1. 背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应用系统和分析系统的 ...

随机推荐

  1. Android MuPDF 阅读PDF文件

    MuPDF是一款轻量级的开源软件,可以用来阅读PDF文件.下载完源代码以后,想要运行成功,除了Android SDK之外,还需要Android NDK环境,因此有点麻烦. 但是一旦安装完必须的环境以后 ...

  2. leetcode Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  3. [知识点]Tarjan算法

    // 此博文为迁移而来,写于2015年4月14日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vxnx.html UPD ...

  4. 【BZOJ3673】&&【BZOJ3674】: 可持久化并查集 by zky 可持久化线段树

    没什么好说的. 可持久化线段树,叶子节点存放父亲信息,注意可以规定编号小的为父亲. Q:不是很清楚空间开多大,每次询问父亲操作后修改的节点个数是不确定的.. #include<bits/stdc ...

  5. Spring_手动获取Bean

    1.SpringContextHolder.java package com.lkb.util; import org.springframework.context.ApplicationConte ...

  6. FLEX SharedObject介绍及应用

    ShareObject介绍: 1 ShareObject,顾名思义共享对象,而通常意义上的共享,从B/S结构上来讲,无非是客户端(浏览器端)的共享和服务器端的共享了,不错,ShareObject刚好份 ...

  7. nginx 中 PHP 调用PEAR.php遇到的问题

    公司有个老项目,写了很多年了,是在apache 上面跑的,无意间,我想让它跑到nginx上,结果遇到了PEAR.php的问题,先安装pear 基本安富有就是 wget http://pear.php. ...

  8. About_AJAX_02

    学习AJAX基础: 首先要:掌握AJAX技术.掌握AJAX开发步骤.掌握采用AJAX进行实例开发 AJAX应用到的技术: AJAX(Asynchronous JavaScript And XML)涉及 ...

  9. 在springmvc中,获取Connection接口

    ServletContext context = request.getSession().getServletContext();WebApplicationContext wac = WebApp ...

  10. 关于web前端(知乎上收集)

    1988年的图灵奖得主Ivan Sutherland就是搞人机交互的,事情跟现在的前端是一个路子. 微博上@_Franky: 这和司机一个道理. 开车也是易学难精的.基本个把月就能上路. 而需要赛车手 ...