Syslog-ng

一、简介

与 syslog相比 ,syslog-ng 具有众多高级的功能:更好的网络支持,更加方便的配置,集中式的网络日志存储,并且更具有弹性。比如,使用syslogd时,所有的iptables日志与其他内核日志一起全部存储到了kern.log文件里。Syslog-ng则可以让你有选择性的将iptables部分分出到另外的日志文件中。Syslogd仅能使用UDP协议,Syslog-ng 可以使用UDP和TCP协议。所以你可以在加密的网络隧道中传输日志到集中日志服务器。

 

二、安装

apt-get install syslog-ng-core=3.7.1-1

 

三、配置

配置文件:/etc/syslog-ng/syslog-ng.conf

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

LOG STATEMENTS『SOURCES - FILTERS -DESTINATIONS』
消息路径『消息源-过滤器-目的站』

1)消息源(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设备,读取日志信息

2)过滤器(FILTERS)

filter { expression; };

expression:表达式

表达式
逻辑操作符:and(和)、or(或)、not(非);
函数:可使用正规表达式描述内容

函数:
    facility(,):根据facility(设备)选择日志消息,使用逗号分割多个facility
    level(,):根据level(优先级)选择日志消息,使用逗号分割多个level,或使用“..”表示一个范围
    program(regexp):日志消息的程序名是否匹配一个正则表达式
    host(regexp):日志消息的主机名是否和一个正则表达式匹配
    match(regexp):对日志消息的内容进行正则匹配
    filter():调用另一条过滤规则并判断它的值

这里的level定义info,相当于syslog的.=info,并不包括更低的等级;若需要包括更低的等级,请使用“..”表示一个等级范围;

另外,filter(DEFAULT),用于捕获所有没有匹配上的日志消息。filter(*)是无效的。

3)目的地(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) :启动指定的程序,并把日志消息发送到该进程的标准输入

4)消息路径(LOG STATEMENTS)

log  { source S1; source S2; ... filter F1; filter F2; ... destination
      D1; destination D2; ... };

把消息源、过滤器、消息目的组合起来就形成一条完整的指令。日志路径中的成员是顺序执行的。凡是来源于指定的消息源,匹配所有指定的过滤器,并送到指定的地址。

注意,每条日志消息都会经过所有的消息路径,并不是匹配后就不再往下执行的。

5)选项参数(options)

全局的选项参数,定义在配置文件的开头位置,以优化操作。

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_的宏代替日志记录的时间,而不要依靠该值定义。
时间: 2024-08-02 06:05:11

Syslog-ng的相关文章

将syslog ng日志写入MySQL(远程)数据库

Centos6.5 syslog-ng 3.25 mysql 1,yum install syslog-ng.x86_64 2,yum install mysql.x86_64    // 支持mysql 命令运行 3,mkfifo –m 777 /var/log/mysql.pipe    // 创建通道并赋予权限 4, logsys-ng.conf  // 修改配置文件 //源 source s_sys { file ("/proc/kmsg" program_override(&

Flume NG 学习笔记(一)简介

一.简介 Flume是一个分布式.可靠.高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据的简单处理,并写到各种数据接收方的能力. Flume在0.9.x and 1.x之间有较大的架构调整,1.x版本之后的改称Flume NG(next generation),0.9.x的称为Flume OG(originalgeneration). 对于OG版本, Flume NG (1.x.x)的主要变化如下: 1.sources和sinks 使用chann

【转】Flume(NG)架构设计要点及配置实践

Flume(NG)架构设计要点及配置实践 Flume NG是一个分布式.可靠.可用的系统,它能够将不同数据源的海量日志数据进行高效收集.聚合.移动,最后存储到一个中心化数据存储系统中.由原来的Flume OG到现在的Flume NG,进行了架构重构,并且现在NG版本完全不兼容原来的OG版本.经过架构重构后,Flume NG更像是一个轻量的小工具,非常简单,容易适应各种方式日志收集,并支持failover和负载均衡. 架构设计要点 Flume的架构主要有一下几个核心概念: Event:一个数据单元

配置华为交换机把日志发送到远程centos syslog服务器上

huawei switch: #指定发送消息基本,表示从0-7都发送 info-center source default channel 2 log level debugging #指定从哪个接口发送 info-center loghost source Vlanif1 #指定远程syslog服务器ip info-center loghost x.x.x.x Centos Server: vim /etc/rsyslog.conf #启用udp 514端口监听. $ModLoad imudp

嘿!@野兽,你的ng api 掉了 - - angular.forEach

@野兽的 ng api 学习 -- angular.forEach angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关键或数组元素索引.为函数指定一个可选的上下文. 格式:angular.forEach(obj,iterator,[context]); obj:遍历的对象 iterator:迭代器 [content]: 对象为迭代器函数的上下文(t

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil

项目启动时报错:java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2的jar包版本号为2.1.8,所以类名是没有错误的,而jar包确实加入进去了.jar包加入的方式是通过user library. 问题解决的办法是:将jar包拷贝到WEB-INF下lib文件夹目录,重新启动tomcat问题解决. ================

win7下KiWi Syslog服务器的安装与配置

今天就来聊聊日志服务器KiWi Syslog的安装与配置. 首先,所需文件有以下2个: 1.Kiwi_Syslog_Server_9.5.0.Eval.setup.exe[此版本只有14天寿命][Kiwi Syslog 9.5 可到官方(http://www.kiwisyslog.com/)下载免费受限版本和注册版本] 2.SolarWinds_Event_LogForwarder_Setup.exe 安装 步骤一.然后,安装Kiwi_Syslog_Server_9.5.0.Eval.setup

ng build --aot --prod生成文件报错

Cannot read property 'create' of undefined when building with --prod or --aot 解决方案:改变zone.js的版本号为0.8.5: 然后删除dist ng_modules,然后重装下就可以正常使用了. /*更新angular-cli*/npm uninstall -g angular-cli npm cache clean npm install -g @angular/[email protected] /*更新引用r

ng $scope与$rootScope的关系

$scope与$rootScope的关系:①不同的控制器之间 是无法直接共享数据②$scope是$rootScope的子作用域对象$scope的id是随着控制器的加载顺序依次递增,$rootScope的id是1 ③不同控制器之间如何通信??1.借助于$rootScope2.既然子作用域对象可以调用父作用域对象的值或者方法,就可以通过控制器之间的嵌套来实现通信3.事件父->子$scope.$broadcast('eventName',args) 子->父$scope.$emit('eventNa

unix下的远程syslog日志服务

syslog是Unix系统中系统日志,因此syslogd就是极为重要的一个服务,平时系统排错以及一些重要的事件都写在日志里,但是在实际生产环境中往往服务器并不是只有一台或者是几台,而在大批量的服务器日志分析时,如果是一台台去翻看日志就会十分的费时费力,那么在平时的生产环境中就可以使用一台或者是多台服务器为一个或者是多个集群的日志收集做为日志服务器,要配置日志服务器很简单,在这里就简要的说一下远程syslogd的配置: [[email protected] log]# vim /etc/sysco