[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
syslog-ng 学习心得与配置说明
时间:
2016-09-23 14:45:23
阅读:
169
评论:
0
收藏:
0
[点我收藏+]
配置说明
syslog-ng
的主配置文件存放在:
/etc/syslog-ng/syslog-ng.conf
一、基础
系统自带版本:
引用
# rpm -qa|grep syslog-ng
syslog-ng-1.6.7-1
syslog官方网站:
点击
最新版本是2.0.5。
为方便使用,暂以系统自带的版本1.6.7说明,以后再提供更新的
rpm
包。
1、前提
使用syslog-ng前,建议先详细了解
syslog
的概念。
例如,什么是facility(设备),level(等级)。可以参考这里:
点击
否则,后面的说明可能会有点不知所云的。
2、使用
若不增加其他设定,可通过下面的简单命令即可替换原
syslog
服务:
# service syslog stop
# service syslog-ng start
3、设计原则
syslog-ng替代
syslog
是基于以下的设计原则的:
引用
a、通过
正规表达式
协助,除支持原facility/level方式,还支持
内容过滤
等以建立更好的消息过滤机制;
b、支持
主机
链,即使日志消息经过
多重网络
转发,仍可找到原发出主机的信息和整个消息链;
c、支持强大的自定义配置,并且清晰、明了。
来源:
http://baike.baidu.com/link?url=RIrrxKxJKd5Vr98mwHHIA85pEEE4CFF-c16fBQb0M6gazaqzrUxZmqzlvvHY92ImW1qYES-6qKAujvMLBz_QxK
1
、架构
syslog-ng
的配置基于下面的架构:
引用
LOG STATEMENTS
『
SOURCES
-
FILTERS
-
DESTINATIONS
』
消息路径『消息源-过滤器-目的站』
也就是说,
通过定义多个消息源,把匹配上若干个过滤器的消息导向到指定的目的地,从而组成一个消息路径。
2
、消息源
SOURCES
定义格式为:
引用
source
{ sourcedriverparams; sourcedriverparams; ... };
含义:
引用
:一个消息源的标识
sourcedriver
:消息源驱动器,可以支持若干参数,并使用分号
“
;
”
隔离多个消息源驱动器
消息源驱动器有:
引用
file (filename)
:从指定的文件读取日志信息
unix-dgram (filename)
:打开指定的
SOCK_DGRAM
模式的
unix
套接字,接收日志消息
unix-stream (filename)
:打开指定的
SOCK_STREAM
模式的
unix
套接字,接收日志消息
udp ( (ip),(port) )
:在指定的
UDP
端口接收日志消息
tcp ( (ip),(port) )
:在指定的
TCP
端口接收日志消息
sun-streams (filename)
:在
solaris
系统中,打开一个(多个)指定的
STREAM
设备,从其中读取日志消息
internal()
:
syslog-ng
内部产生的消息
pipe(filename),fifo(filename)
:从指定的管道或者
FIFO
设备,读取日志信息
例如:
引用
source s_sys {
file ("/proc/kmsg" log_prefix("kernel: "));
unix-stream ("/dev/log");
internal();
# udp(ip(0.0.0.0) port(514)); #
如果取消注释,则可以从
udp
的
514
端口获取消息
};
※
linux
使用
/dev/log
作为
SOCK_STREAM unix
的套接字,
BSD
使用
/var/run/log
;
参数需要使用括号括住。
3
、过滤器
FILTERS
定义格式为:
引用
filter
{ expression; };
含义:
引用
:一个过滤器标识
expression
:表达式
表达式支持:
引用
逻辑操作符:
and
(和)、
or
(或)、
not
(非);
函数:可使用正规表达式描述内容
过滤函数有:
引用
facility(,)
:根据
facility
(设备)选择日志消息,使用逗号分割多个
facility
level(,)
:根据
level
(优先级)选择日志消息,使用逗号分割多个
level
,或使用
“..”
表示一个范围
program(regexp)
:日志消息的程序名是否匹配一个正则表达式
host(regexp)
:日志消息的主机名是否和一个正则表达式匹配
match(regexp)
:对日志消息的内容进行正则匹配
filter()
:调用另一条过滤规则并判断它的值
例如:
引用
filter f_filter2 { level(info..emerg) and
not facility(mail,authpriv,cron); };
※
这里的
level
定义
info
,相当于
syslog
的
.=info
,并不包括更低的等级;
若需要包括更低的等级,请使用
“..”
表示一个等级范围;
另外,
filter(DEFAULT)
,用于捕获所有没有匹配上的日志消息。
filter(*)
是无效的。
4
、目的地
DESTINATIONS
定义格式为:
引用
destination
{ destdriverparams; destdriverparams; ... ;};
含义:
引用
:一个目的地的标识
destdriver
:目的地驱动器
目的地驱动器有:
引用
file (filename)
:把日志消息写入指定的文件
unix-dgram (filename)
:把日志消息写入指定的
SOCK_DGRAM
模式的
unix
套接字
unix-stream (filename)
:把日志消息写入指定的
SOCK_STREAM
模式的
unix
套接字
udp (ip),(port)
:把日志消息发送到指定的
UDP
端口
tcp (ip),(port)
:把日志消息发送到指定的
TCP
端口
usertty(username)
:把日志消息发送到已经登陆的指定用户终端窗口
pipe(filename),fifo(filename)
:把日志消息发送到指定的管道或者
FIFO
设备
program(parm)
:启动指定的程序,并把日志消息发送到该进程的标准输入
举例:
引用
destination d_mesg { file("/var/log/messages"); };
destination d_syslog { udp ("192.168.228.225" port(514)); };
※
配合使用
udp
或
tcp
即可实现集中的日志服务器。注意,
udp
函数的写法上和消息源驱动器中的定义不同。
5
、消息路径
LOG STATEMENTS
定义格式为:
引用
log { source S1; source S2; ... filter F1; filter F2; ... destination
D1; destination D2; ... };
把消息源、过滤器、消息目的组合起来就形成一条完整的指令。日志路径中的成员是顺序执行的。凡是来源于指定的消息源,匹配所有指定的过滤器,并送到指定的地址。
※
同样的,每条日志消息都会经过所有的消息路径,并不是匹配后就不再往下执行的,请留意。
三、选项参数
除了上述的消息路径定义外,
syslog-ng
还可以设定一些选项参数以优化其操作。
全局的选项参数,定义在配置文件的开头位置:
六、参考资料
man syslog-ng.conf
man 8 syslog-ng
引用
options { opt1; opt2; ... };
选项有:
引用
chain_hostnames(yes|no)
:是否打开主机名链功能,打开后可在多网络段转发日志时有效
long_hostnames(yes|no)
:是
chain_hostnames
的别名,已不建议使用
keep_hostname(yes|no)
:是否保留日志消息中保存的主机名称,否时,总是使用来源主机来作重写日志的主机名
use_dns(yes|no)
:是否打开
DNS
查询功能,应使用防火墙保护使用
syslog-ng
的节点安全,并确认所有主机都是可以通过
dns
解释的,否则请关闭该选项。
use_fqdn(yes|no)
:是否使用完整的域名
check_hostname(yes|no)
:是否检查主机名有没有包含不合法的字符
bad_hostname(regexp)
:可通过正规表达式指定某主机的信息不被接受
dns_cache(yes|no)
:是否打开
DNS
缓存功能
dns_cache_expire(n)
:
DNS
缓存功能打开时,一个成功缓存的过期时间
dns_cache_expire_failed(n)
:
DNS
缓存功能打开时,一个失败缓存的过期时间
dns_cache_size(n)
:
DNS
缓存保留的主机名数量
create_dirs(yes|no)
:当指定的目标目录不存在时,是否创建该目录
dir_owner(uid)
:目录的
UID
dir_group(gid)
:目录的
GID
dir_perm(perm)
:目录的权限,使用八进制方式标注,例如
0644
owner(uid)
:文件的
UID
group(gid)
:文件的
GID
perm(perm)
:文件的权限,同样,使用八进制方式标注
gc_busy_threshold(n)
:当
syslog-ng
忙时,其进入垃圾信息收集状态的时间。一旦分派的对象达到这个数字,
syslog-ng
就启动垃圾信息收集状态。默认值是:
3000
。
gc_idle_threshold(n)
:当
syslog-ng
空闲时,其进入垃圾信息收集状态的时间。一旦被分派的对象到达这个数字,
syslog-ng
就会启动垃圾信息收集状态,默认值是:
100
log_fifo_size(n)
:输出队列的行数
log_msg_size(n)
:消息日志的最大值(
bytes
)
mark(n)
:多少时间(秒)写入两行
MARK
信息供参考,目前没有实现
stats(n)
:多少时间(秒)写入两行
STATUS
信息供,默认值是:
600
sync(n)
:缓存多少行的信息再写入文件中,
0
为不缓存,局部参数可以覆盖该值。
time_reap(n)
:在没有消息前,到达多少秒,即关闭该文件的连接
time_reopen(n)
:对于死连接,到达多少秒,会重新连接
use_time_recvd(yes|no)
:宏产生的时间是使用接受到的时间,还是日志中记录的时间;建议使用
R_
的宏代替接收时间,
S_
的宏代替日志记录的时间,而不要依靠该值定义。
例如:
引用
options {
sync (0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames (off);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
};
四、部分函数的参数
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
文件。
五、关于垃圾收集状态
当满足一定的条件,
syslog-ng
即会进入垃圾收集状态,而暂时不再接受日志信息。这时,会造成非连接的传输协议的日志丢失(例如
UDP
)。通过设置下面两个
syslog-ng是什么?
syslog-ng作为
syslog
的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能。
选项可以控制:
引用
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
就进入垃圾信息收集状态的时间。该值应该比较高,以保证正常情况下不会打断日志消息的收取。
来源:
http://blog.chinaunix.net/uid-10540984-id-2980508.html
来自为知笔记(Wiz)
syslog-ng 学习心得与配置说明
原文:http://www.cnblogs.com/wudonghang/p/d68887c5363edd894e2a78e5ed60c15c.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!