Linux下的sysylog与syslog-ng
一台服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来介绍下linux系统的syslog日志服务器.
syslog 是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况。syslog 系统日志记录着linux系统启动及运行的过程中产生的信息, RHEL 5.x系统上默认自带了syslog 的配置文件是/etc/syslog.conf. syslog默认有两个守护进程,klogd,syslogd。klogd 进程是记录系统运行的过程中内核生成的日志,而在系统启动的过程中内核初始化过程中 生成的信息记录到控制台(/dev/console)当系统启动完成之后会把此信息存放到/var/adm或/var/log/目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围。 通过使用syslog.conf文件,可以对生成的日志的位置及其相关信息进行灵活的配置。
Syslogd 进程是记录非内核以外的信息: centos 6.x的syslogd被改名为rsyslogd,其默认的配置文件是/etc/rsyslog.conf
该配置文件指明了syslogd守护程序记录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。
这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作.
每个选择域都是由消息类型和优先级组成.当指明一个优先级时,syslogd将记录一个拥有相同或者更高优先级的消息。
Syslog.conf基本语法格式:
[facility].[priority] [action]
消息类型.优先级 动作域
2.1 Facility可以理解为日志来源或类别,消息类型
1. auth # 认证相关的
2. authpriv # 权限,授权相关的
3. cron # 任务计划相关的
4. daemon # 守护进程相关的
5. kern # 内核相关的
6. lpr # 打印相关的
7. mail # 邮件相关的
8. mark # 标记相关的
9. news # 新闻相关的
10. security # 安全相关的,与auth 类似
11. syslog # syslog自己的
12. user # 用户相关的
13. uucp # unix to unix cp 相关的
14. local0 到 local7 # 用户自定义使用
15. * # *表示所有的facility
2.2 priority优先级,从高到低
1.emerg/oanic # 会导致系统不可用的
2.alert # 必须马上处理的
3.crit # 比较严重的
4.err/error # 错误信息
5.warning/warn # 可能影响系统功能,需要提醒用户的重要事件
6.notice # 不影响正常功能,需要注意的消息
7.info # 一般信息
8.debug # 程序或系统的调试信息
9.* # 表示所有的日志级别
10.none # 跟* 相反,表示啥也没有
例如:“mail.*”将把所有优先级的消息都发送到操作动作指定的/var/log/mail文件里。使用“*”限定符与使用“debug”优先级的效果完全一样,后者也将把所有类型的消息发送到指定地点。
2.3 action表示日志记录位置
1. 系统上的绝对路径 # 普通文件 如: /var/log/xxx
2. | # 管道 通过管道送给其他的命令处理
3. 终端 # 终端 如:/dev/console
4. @HOST # 远程主机 如: @10.0.0.1
5. 用户 # 系统用户 如: root
6. * # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的
2.4 一些例子:
1.mail.info /var/log/mail.log # 表示将mail相关的,级别为info及 info以上级别的信息记录到/var/log/mail.log文件中
2.auth.=info @10.0.0.1 # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去,前提是10.0.0.1要能接收其他主机发来的日志信息
3.user.!=error # 表示记录user相关的,不包括error级别的信息
4.user.!error # 与user.error相反
5.*.info # 表示记录所有的日志信息的info级别
6.mail.* # 表示记录mail相关的所有级别的信息
7.*.* # 你懂的.
8.cron.info;mail.info # 多个日志来源可以用";" 隔开
9.cron,mail.info # 与cron.info;mail.info 是一个意思
10.mail.*;mail.!=info # 表示记录mail相关的所有级别的信息,但是不包括info级别的
11.uucp,news.crit /var/log/spooler #UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为\"err\"或更高
12. **.emerg @linuxaid.com.cn #当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。
13.#kern.* /dev/console #有时syslogd将产生大量的消息。例如内核(\"kern\"设备)可能很冗长,用户很难看得清楚明了,那么用户可能想把内核消息记录到/dev/console中。表明内核日志记录被注释掉了
2.5 如下解析一下rhel5.x系统上自带的syslog的配置文件/etc/syslog.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 表示将所有facility的info级别,但不包括mail,authpriv,cron相关的信息,记录到 /var/log/messages文件 *.info;mail.none;authpriv.none;cron.none /var/log/messages # 表示将权限,授权相关的所有基本的信息,记录到/var/log/secure文件中.这个文件的权限是600 authpriv.* /var/log/secure # 表示将mail相关的所有基本的信息记录到/var/log/maillog文件中,可以看到路径前面有一个"-" # "-" 表示异步写入磁盘, mail.* -/var/log/maillog # 表示将任务计划相关的所有级别的信息记录到/var/log/cron文件中 cron.* /var/log/cron # 表示将所有facility的emerg级别的信息,发送给登录到系统上的所有用户 *.emerg * # 表示将uucp及news的crit级别的信息记录到/var/log/spooler文件中 uucp,news.crit /var/log/spooler # 表示将local7的所有级别的信息记录到/var/log/boot.log文件中, # 上面说过local0 到local7这8个是用户自定义使用的,这里的local7记录的是系统启动相关的信息 local7.* /var/log/boot.log |
|
|
如果需要重新启动syslog守护进程(/etc/syslog.conf的修改只有在syslog守护进程重新启动后才会生效),并且只想重新启动syslog守护进程而不是整个系统,在Red Hat Linux机器上,执行以下两条命令之一即可:/etc/rc.d/init.d/syslogstop;/etc/rc.d/init.d/syslogstart/etc/rc.d/init.d/syslogrestart
2.6 使用syslog接口
加载sys/syslog.h文件
openlog:打开日志设备,以供读取和写入,与文件系统调用的open类似;
syslog:写入日志,与文件系统调用的write类似;
closelog:关闭日志设备,与文件系统调用的close类似;
vsyslog:它和syslog功能一样,负责写入日志,只是参数格式不同。
(1)openlog函数
该函数的声明如下:
void openlog(const char *ident, int option, int facility);
此函数用来打开一个到系统日志记录程序的连接,打开之后就可以用syslog或vsyslog函数向系统日志里添加信息了。而closelog函数就是用来关闭此连接的。
第一个参数ident是一个标记,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记。
第二个参数 option一般是下列选项值取“与”运算(使用“|”表示,如“LOG_CONS | LOG_PID”)的结果:
LOG_CONS:如果送到system logger时发生问题,直接写入系统终端;
LOG_NDELAY:立即开启连接,通常连接是在第一次写入消息时才打开的;
LOG_PERROR:将消息也同时送到stderr设备;
LOG_PID:将进程PID含入所有消息中。
第三个参数facility指明记录日志的程序的类型,它主要具有如下几类日志类型:
LOG_AUTH :安全/授权消息
LOG_AUTHPRIV:安全/授权消息
LOG_CRON:时间守护进程(cron和at)专用
LOG_DAEMON:其它系统守护进程
LOG_KERN:核心消息
LOG_LOCAL0到LOG_LOCAL7:系统保留
LOG_LPR:printer子系统
LOG_MAIL:mail子系统
LOG_NEWS:USENET新闻子系统
LOG_SYSLOG:syslogd进程内部所产生的消息
LOG_USER(缺省):一般使用者缺省使用消息
LOG_UUCP:UUCP子系统
LOG_FTP:FTP子系统使用
(2)syslog函数
syslog函数的声明如下:
void syslog(int priority, const char * message, ...);
第一个参数是消息的紧急级别priority,第二个参数是消息及其格式,之后是格式对应的参数,如同C语言里面printf输出函数一样使用,具体的格式这里就不再详述,它不是本书介绍的重点。
这里还需要详细介绍一下第一个参数priority,它是由severity level和facility组成的。Facility已经在上面介绍了,下面介绍一下severity level,也就是消息的重要级别,它主要包括:
LOG_EMERG:紧急状况
LOG_ALERT:高优先级问题,比如说数据库崩溃等,必须要立即采取反应行动
LOG_CRIT:重要状况发生,比如硬件故障
LOG_ERR:错误发生
LOG_WARNING:警告发生
LOG_NOTICE:一般状况,需要引起注意
LOG_INFO:信息状况
LOG_DEBUG:调试消息
在实际使用中,如果我们的程序要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,后面随时用syslog函数写日志就行了。
(3)closelog函数
相对上述2个函数来说,该函数非常简单,其声明如下:
void closelog( void );
值得注意的是,虽然该函数的使用和调用情况非常简单,但是是必不可少的,因为在Linux系统中,打开的日志也是资源,如果只使用openlog函数打开日志,而忘记使用closelog关闭日志的话,当打开的日志数量累积到一定程度,便会造成内存不足,从而引起系统问题。所以,提醒用户在使用中特别注意
syslog-ng (syslog-Next generation) 是syslog的升级版,syslog-ng有两个版本,一个是收费的,一个是开源的,那么作为syslog的下一代产品,功能是可想而知,肯定比syslog的功能强大的多,如
高性能 可靠的传输 支持多平台 高可靠性 众多的用户群体 强大的日志过滤及排序 事件标签和关联性 支持最新的IETF标准 等....
3.1 syslog-ng 的设计原则:
通过正规表达式协助,除支持原facitily/level方式,还支持内容过滤等以建立更好的消息过滤机制;
支持主机链,即使日志消息经过多重网络转发,仍可找到原发出主机的信息和整个消息链;
支持强大的自定义配置,并且清晰、明了。
开源版本的主页 http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/overview
3.2 syslog-ng 安装:
1.rhel5.x的系统上安装方法:
yum install gcc*
cd /usr/src
wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12.tar.gz
wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz
tar xvf eventlog_0.2.12.tar.gz
cd eventlog-0.2.12
./configure --prefix=/usr/local/eventlog
make
make install
cd /usr/src
tar xvf syslog-ng_3.3.5.tar.gz
cd syslog-ng-3.3.5
export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
./configure --prefix=/usr/local/syslog-ng
make
make install
2.Ubuntu 2.6.x上的安装方法
Sudo apt-get install syslog-ng
3.3 syslog-ng 原理:
LOG STATEMENTS『SOURCES - FILTERS -DESTINATIONS』
消息路径 『消息源 - 过滤器 - 目的站』
也就是说,通过定义多个消息源,把匹配上若干个过滤器的消息导向到指定的目的地,从而组成一个消息路径。
3.4 syslog-ng 配置详解:
文件:$/etc/syslog-ng.conf
1. syslog-ng.conf文件里的内容有以下几个部分组成,
2. # 全局选项,多个选项时用分好";"隔开
3. options { .... };
4. # 定义日志源,
5. source s_name { ... };
6. # 定义过滤规则,规则可以使用正则表达式来定义,这里是可选的,不定义也没关系
7. filter f_name { ... };
8. # 定义目标
9. destination d_name { ... };
10. # 定义消息链可以将多个源,多个过滤规则及多个目标定义为一条链
11. log { ... };
12. 详解如下
13. ----------------------------------------------------------------
14. options { long_hostnames(off); sync(0); perm(0640); stats(3600); };
15. 更多选项如下
16. chain_hostnames(yes|no) # 是否打开主机名链功能,打开后可在多网络段转发日志时有效
17. long_hostnames(yes|no) # 是chain_hostnames的别名,已不建议使用
18. keep_hostname(yes|no) # 是否保留日志消息中保存的主机名称
19. use_dns(yes|no) # 是否打开DNS查询功能,
20. use_fqdn(yes|no) # 是否使用完整的域名
21. check_hostname(yes|no) # 是否检查主机名有没有包含不合法的字符
22. bad_hostname(regexp) # 可通过正规表达式指定某主机的信息不被接受
23. dns_cache(yes|no) # 是否打开DNS缓存功能
24. dns_cache_expire(n) # DNS缓存功能打开时,一个成功缓存的过期时间
25. dns_cache_expire_failed(n) # DNS缓存功能打开时,一个失败缓存的过期时间
26. dns_cache_size(n) # DNS缓存保留的主机名数量
27. create_dirs(yes|no) # 当指定的目标目录不存在时,是否创建该目录
28. dir_owner(uid) # 目录的UID
29. dir_group(gid) # 目录的GID
30. dir_perm(perm) # 目录的权限,使用八进制方式标注,例如0644
31. owner(uid) # 文件的UID
32. group(gid) # 文件的GID
33. perm(perm) # 文件的权限,同样,使用八进制方式标注
34. gc_busy_threshold(n) # 当syslog-ng忙时,其进入垃圾信息收集状态的时间一旦分派的对象达到这个数字,syslog-ng就启动垃圾信息收集状态。默认值是:3000。
35. gc_idle_threshold(n) # 当syslog-ng空闲时,其进入垃圾信息收集状态的时间一旦被分派的对象到达这个数字,syslog-ng就会启动垃圾信息收集状态,默认值是:100
36. log_fifo_size(n) # 输出队列的行数
37. log_msg_size(n) # 消息日志的最大值(bytes)
38. mark(n) # 多少时间(秒)写入两行MARK信息供参考,目前没有实现
39. stats(n) # 多少时间(秒)写入两行STATUS信息,默认值是:600
40. sync(n) # 缓存多少行的信息再写入文件中,0为不缓存,局部参数可以覆盖该值。
41. time_reap(n) # 在没有消息前,到达多少秒,即关闭该文件的连接
42. time_reopen(n) # 对于死连接,到达多少秒,会重新连接
43. use_time_recvd(yes|no) # 宏产生的时间是使用接受到的时间,还是日志中记录的时间;建议使用R_的宏代替接收时间,S_的宏代替日志记录的时间,而不要依靠该值定义。
44.
45. source s_name { internal(); unix-dgram("/dev/log"); udp(ip("0.0.0.0") port(514)); };
46.
47. file (filename) # 从指定的文件读取日志信息
48. unix-dgram (filename) # 打开指定的SOCK_DGRAM模式的unix套接字,接收日志消息
49. unix-stream (filename) # 打开指定的SOCK_STREAM模式的unix套接字,接收日志消息
50. udp ( (ip),(port) ) # 在指定的UDP端口接收日志消息
51. tcp ( (ip),(port) ) # 在指定的TCP端口接收日志消息
52. sun-streams (filename) # 在solaris系统中,打开一个(多个)指定的STREAM设备,从其中读取日志消息
53. internal() # syslog-ng内部产生的消息
54. pipe(filename),fifo(filename) # 从指定的管道或者FIFO设备,读取日志信息
55.
56. filter f_name { not facility(news, mail) and not filter(f_iptables); };
57. 更多规则函数如下
58. facility(..) # 根据facility(设备)选择日志消息,使用逗号分割多个facility
59. level(..) # 根据level(优先级)选择日志消息,使用逗号分割多个level,或使用“..”表示一个范围
60. program(表达式) # 日志消息的程序名是否匹配一个正则表达式
61. host(表达式) # 日志消息的主机名是否和一个正则表达式匹配
62. match(表达式) # 对日志消息的内容进行正则匹配
63. filter() # 调用另一条过滤规则并判断它的值
64. 定义规则的时候也可以使用逻辑运算符and or not
65.
66. destination d_name { file("/var/log/messages"); };
67. 更多动作如下
68. file (filename) # 把日志消息写入指定的文件
69. unix-dgram (filename) # 把日志消息写入指定的SOCK_DGRAM模式的unix套接字
70. unix-stream (filename) # 把日志消息写入指定的SOCK_STREAM模式的unix套接字
71. udp (ip),(port) # 把日志消息发送到指定的UDP端口
72. tcp (ip),(port) # 把日志消息发送到指定的TCP端口
73. usertty(username) # 把日志消息发送到已经登陆的指定用户终端窗口
74. pipe(filename),fifo(filename) # 把日志消息发送到指定的管道或者FIFO设备
75. program(parm) # 启动指定的程序,并把日志消息发送到该进程的标准输入
76.
77. log { source(s_name); filter(f_name); destination(d_name) };
3.5 syslog-ng.conf 例子:
1. options { long_hostnames(off); sync(0); perm(0640); stats(3600); };
2.
3. source src {
4. internal();
5. unix-dgram("/dev/log");
6. # 表示日志来源为本机udp的514端口,
7. udp(ip("0.0.0.0") port(514));
8. };
9.
10. filter f_iptables { facility(kern) and match("IN=") and match("OUT="); };
11.
12. filter f_console { level(warn) and facility(kern) and not filter(f_iptables)
13. or level(err) and not facility(authpriv); };
14.
15. filter f_newsnotice { level(notice) and facility(news); };
16. filter f_newscrit { level(crit) and facility(news); };
17. filter f_newserr { level(err) and facility(news); };
18. filter f_news { facility(news); };
19.
20. filter f_mailinfo { level(info) and facility(mail); };
21. filter f_mailwarn { level(warn) and facility(mail); };
22. filter f_mailerr { level(err, crit) and facility(mail); };
23. filter f_mail { facility(mail); };
24.
25. filter f_cron { facility(cron); };
26.
27. filter f_local { facility(local0, local1, local2, local3,
28. local4, local6, local7); };
29.
30. filter f_acpid_full { match('^acpid:'); };
31. filter f_acpid { level(emerg..notice) and match('^acpid:'); };
32.
33. filter f_acpid_old { match('^\[acpid\]:'); };
34.
35. filter f_netmgm { match('^NetworkManager:'); };
36.
37. filter f_messages { not facility(news, mail) and not filter(f_iptables); };
38. filter f_warn { level(warn, err, crit) and not filter(f_iptables); };
39. filter f_alert { level(alert); };
40.
41. destination console { pipe("/dev/tty10" owner(-1) group(-1) perm(-1)); };
42. log { source(src); filter(f_console); destination(console); };
43.
44. destination xconsole { pipe("/dev/xconsole" owner(-1) group(-1) perm(-1)); };
45. log { source(src); filter(f_console); destination(xconsole); };
46.
47. destination newscrit { file("/var/log/news/news.crit"
48. owner(news) group(news)); };
49. log { source(src); filter(f_newscrit); destination(newscrit); };
50.
51. destination newserr { file("/var/log/news/news.err"
52. owner(news) group(news)); };
53. log { source(src); filter(f_newserr); destination(newserr); };
54.
55. destination newsnotice { file("/var/log/news/news.notice"
56. owner(news) group(news)); };
57. log { source(src); filter(f_newsnotice); destination(newsnotice); };
58.
59. destination mailinfo { file("/var/log/mail.info"); };
60. log { source(src); filter(f_mailinfo); destination(mailinfo); };
61.
62. destination mailwarn { file("/var/log/mail.warn"); };
63. log { source(src); filter(f_mailwarn); destination(mailwarn); };
64.
65. destination mailerr { file("/var/log/mail.err" fsync(yes)); };
66. log { source(src); filter(f_mailerr); destination(mailerr); };
67.
68. destination mail { file("/var/log/mail"); };
69. log { source(src); filter(f_mail); destination(mail); };
70.
71. destination acpid { file("/var/log/acpid"); };
72. destination null { };
73. log { source(src); filter(f_acpid); destination(acpid); flags(final); };
74.
75. log { source(src); filter(f_acpid_full); destination(null); flags(final); };
76.
77. log { source(src); filter(f_acpid_old); destination(acpid); flags(final); };
78.
79. destination netmgm { file("/var/log/NetworkManager"); };
80. log { source(src); filter(f_netmgm); destination(netmgm); flags(final); };
81.
82. destination localmessages { file("/var/log/localmessages"); };
83. log { source(src); filter(f_local); destination(localmessages); };
84.
85. destination messages { file("/var/log/messages"); };
86. log { source(src); filter(f_messages); destination(messages); };
87.
88. destination firewall { file("/var/log/firewall"); };
89. log { source(src); filter(f_iptables); destination(firewall); };
90.
91. destination warn { file("/var/log/warn" fsync(yes)); };
92. log { source(src); filter(f_warn); destination(warn); };
93.
94. filter f_ha { facility(local5); };
95. destination hamessages { file(/var/log/ha); };
96. log { source(src); filter(f_ha); destination(hamessages); };
3.6 syslog-ng 的扩展项:
syslog-ng除了有全局选项参数外,不同的函数还可以定义其参数,其中包括:
1、扩展file的宏 引用
HOST 日志消息的源发主机名。如果日志消息穿过几个主机,并且chain_hostname()功能已经打开,就使用第一个主机名。
FACILITY :日志消息来自的日志设备
PRIOPRITY/LEVEL :日志消息的优先级
PROGRAM :发送日志消息的程序
YEAR :发送日志消息的年份,这个宏既可以指定日志消息送出的时间,也可以指定日志消息收到的时间。这由use_time_recvd()选项控制
MONTH :发送日志消息的月份
DAY :发送日志消息的日子
HOUR :小时
MIN : 分钟
SEC :秒
2、file的参数
例如:log_file_size()、sync()、owner()、perm()等,请参考上面的全局设定
3、tcp和upd的参数 引用
ip(xxx.xxx.xxx.xxx): 定义绑定的IP地址
port(n):定义绑定的端口
max-connections(n) : 定义最大连接数
※TCP基于连接方式传输,不会造成日志丢失,而UDP则不同。但因为传统的syslog基于UDP的514端口,所以,UDP方式也经常会使用到。
另外,514也是rshell的默认端口,请注意冲突。
举例:
destination d_mail { file("/var/log/maillog" sync(10)); };
这里定义的sync(10)会覆盖全局配置,表示若写入的日志数量达到10,才写入maillog文件。
3.6 syslog-ng 的扩展项template选项用法:
1.例1:設定存入資料庫的目的:
destination d_mysql {pipe("/tmp/mysql.pipe"template("INSERT INTO logs (host, facility, priority, level, tag, date, time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));};
#temple定义输出格式(时间,日志级别,信息),具体参考file宏
2.例2:
template ws_fmt {template("$DATE $PRIORITY $MSG\n"); template_escape(no); };
3.7 syslog-ng 关于垃圾收集状态:
当满足一定的条件,syslog-ng即会进入垃圾收集状态,而暂时不再接受日志信息。这时,会造成非连接的传输协议的日志丢失(例如UDP)。通过设置下面两个选项可以控制:
gc_idle_threshold(n) :
意思是,一旦被分派的对象到达这个数字,并且当syslog-ng空闲时(100微秒内没有日志消息到达)。此时,syslog-ng就会启动垃圾信息收集状态。
已分配的对象可通过-v命令行参数指定其的最小值。而syslog-ng这个值应该比较小,但比已分配的对象要大即可。
例如,空闲状态,syslog-ng会显示:
Nov 13 16:35:35 syslogng syslog-ng[4510]: STATS: dropped 0
Nov 13 16:45:35 syslogng syslog-ng[4510]: STATS: dropped 0
当忙时:
gc_busy_threshold(n) :当syslog-ng忙时,一旦分派的对象达到这个数字,syslog-ng就进入垃圾信息收集状态的时间。该值应该比较高,以保证正常情况下不会打断日志消息的收取。
3.8 使用方法及案例:
如:
1.安装:ubuntu下安装方法: apt-get install syslog-ng
2.配置syslog-ng.conf文件,在目录:/etc/syslog-ng/syslog-ng.conf
3.将配置好的syslog-ng.conf替换源文件
4.配置syslog-ng文件,在目录:/etc/logrotate.d/syslog-ng
5.启动log服务:/etc/init.d/syslog-ng restart
若不增加其他设定,可以通过下面的简单命令即可替换原syslog服务:
# service syslog stop
# service syslog-ng start
3.9 参考资料:
man syslog-ng.conf
man 8 syslog-ng