`

syslog-ng的配置

 
阅读更多

配置说明
syslog-ng
的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf
1
、架构
syslog-ng
的配置基于下面的架构:
引用
LOG STATEMENTS
SOURCES  FILTERS DESTINATIONS
消息路径『消息源-过滤器-目的站』


也就是说,通过定义多个消息源,把匹配上若干个过滤器的消息导向到指定的目的地,从而组成一个消息路径。

2
、消息源SOURCES
定义格式为:
引用
source <sourcename> { sourcedriverparams; sourcedriverparams; ... };


含义:
引用
<sourcename>
:一个消息源的标识
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)); #
如果取消注释,则可以从udp514端口获取消息
};


linux使用/dev/log作为SOCK_STREAM unix的套接字,BSD使用/var/run/log
参数需要使用括号括住。

3
、过滤器 FILTERS
定义格式为:
引用
filter <filtername> { expression; };


含义:
引用
<filtername>
:一个过滤器标识
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 <destname> { destdriverparams; destdriverparams;  ...  ;};


含义:
引用
<destname>
:一个目的地的标识
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)); };


配合使用udptcp即可实现集中的日志服务器。注意,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
tcpupd的参数

引用
ip
xxx.xxx.xxx.xxx):定义绑定的IP地址
port
n):定义绑定的端口
max-connections
n):定义最大连接数


TCP基于连接方式传输,不会造成日志丢失,而UDP则不同。但因为传统的syslog基于UDP514端口,所以,UDP方式也经常会使用到。
另外,514也是rshell的默认端口,请注意冲突。
举例:

引用
destination d_mail { file("/var/log/maillog" sync(10)); };


这里定义的sync(10)会覆盖全局配置,表示若写入的日志数量达到10,才写入maillog文件。

五、关于垃圾收集状态
当满足一定的条件,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就进入垃圾信息收集状态的时间。该值应该比较高,以保证正常情况下不会打断日志消息的收取。

 

 

分享到:
评论

相关推荐

    syslog-ng配置说明

    syslog-ng配置说明,说明syslog-ng配置文件的使用及其含义

    OpenWrt Syslog-ng日志功能.docx

    主要Syslog-ng日志功能在openwrt系统中是如何配置以及实现的。

    balagetech-openwrt-syslog-ng-elasticsearch:使用 OpenWRT、Syslog-ng 和 Elasticsearch 监控家庭网络流量

    此 repo 包含用于使用 OpenWRT 和 syslog-ng 以及 Elasticsearch Security 监控家庭网络的完整配置。 实现了以下组件: ulogd2 的连接跟踪事件 通过 dnsmasq 或未绑定的 DNS 日志(首选) 作为警报添加的 fail2...

    syslog-ng安装配置

    集中日志服务器搭建,有相关的软件版本和文档说明

    syslog-ng-deployment:Syslog-ng部署配置

    以下是syslog-ng-deployment的全局或默认配置文件。 0000-config_path_define.conf 包含syslog-ng configs的文件路径,默认为/ etc / syslog-ng / 0000-options.conf 包含syslog-ng的系统默认选项。 这些基

    syslog-ng:syslog-ng是增强的日志守护程序,支持多种输入和输出方法:syslog,非结构化文本,队列,SQL和NoSQL

    系统日志syslog-ng是增强的日志守护程序,支持多种输入和输出方法:syslog,非结构化文本,消息队列,数据库(类似SQL和NoSQL)等等。快速开始最简单的配置从/ dev / log(从应用程序或systemd转发)接受系统日志,...

    Fusion-syslog-ng:用于将日志从Syslog-ng索引到Lucidworks Fusion中的示例代码。 该客户端不受Lucidworks的正式支持

    更新配置文件后,将需要重新启动syslog-ng。 在TCP端口6001上侦听日志消息source n_src { network(transport(tcp) port(601));};将日志消息路由到Fusion插件。 destination d_fusion { java( class_path("/usr/lib/...

    syslog-ng-3.5:感动!

    系统日志 syslog-ng是增强的日志守护程序,支持多种输入和输出方法:syslog,非结构化文本,消息队列,数据库(类似SQL和NoSQL)等等。 这是syslog-ng的过时存储库,对于当前存储库,请转到:

    Syslog-ng-Monitor-Android

    Syslog-ng Monitor for Android是一个监视应用程序,使用此应用程序,您可以执行各种命令来了解受监视的Syslog-ng是否仍在运行,获取Syslog-ng的当前统计信息以及查看Syslog-ng的配置。 ng。 在此应用程序中,您...

    syslog-ngOSE_3.30管理手册

    syslog-ngOSE_3.30管理手册-安装、配置、使用

    [详细完整版]日志服务器.doc

    用LINUX+SYSLOG-NG+PHP-SYSLOG-NG搭建日志服务器 日志服务器安装指南 一、希望达到的目的 1.服务器日志集中存放到日志服务器和MySQL数据库中; 2.每天发送一封E-MAIL, 报告异常日志条目; 3.实时报告异常系统事件...

    perl-syslog-ng-开源

    用Perl编写的前端,可轻松访问syslog-ng服务器接收的消息,并具有其他功能,例如设备组和基于用户配置文件的访问控制。

    syslog-gollector:用Go语言编写的Syslog Collector,流式传输到Kafka 0.8

    syslog-gollector 可以在找到有关syslog-... 请查看“运行”部分,以获取有关如何轻松配置Syslog客户端以正确格式发出日志消息的提示。多线支持syslog-gollector支持多行日志消息,因此诸如堆栈跟踪之类的消息将被视

    Snare for Windows&Linux(32bit&64bit)

    3、Snare对Linux的兼容性比Syslog-ng更好,安装配置更简单,在建设日志服务器的时候可与Syslog-ng配合使用。 4、详细信息可见Snare官网地址:http://www.intersectalliance.com/projects/SnareLinux/index.html **...

    Cacti插件Syslog配置详解

    cacti中syslog插件,是通过rsyslog或syslog-ng与mysql的交互,将日志存放到mysql数据库中,cacti中的syslog插件从mysql中检索查看日志数据。因此,首先要配置一台rsyslog与mysql的日志中心服务器来接收客户机的日志;...

    eventlog.zip

    eventlog 安装包 0.2.12 版本,附带安装配置文档,亲测可用 安装 syslog-ng 必备

    libol-0.3.9.tar.gz

    libol-0.3.9.tar.gz 配置syslog-ng的需求包

    meraki_logstash:Meraki MX Logstash配置

    该项目包括使用syslog-ng的完整工作设置的配置,用于捕获流,事件,URL和ids_alerts并将其解析到它们自己的单独日志文件中,然后通过Logstash转发器发送到Logstash。 显然,如果您知道自己在做什么,则不必使用这些...

    libol-0.3.15.tar.gz

    syslog-ng是基于syslog协议的Unix和类Unix系统的开源软件。它基于原来syslogd的模型,扩展了富的过滤功能,灵活的配置选项,添加了重要的功能,如使用TCP进行传输系统日志。 logzilla 是一个 syslog 和其他网络事件...

    HAProxy的安装和部

    HAProxy的安装和部署 考虑公司当前服务器的并发量,最终还是选定了HAProxy来实现负载均衡,相较于其他的负载均衡系统...下面是自己安装和部署haproxy的记录,比较重要的一点是解决了haproxy + syslog-ng的日志输出问题

Global site tag (gtag.js) - Google Analytics