`

syslog-ng学习心得之一

阅读更多

  转载一篇syslog-ng的文章的,本来是想打算自己写一篇的,看到这篇文章写的很详细,就转载过来吧。后面我再补充一下

先说说自己对syslog-ng的理解:用于集中日志管理,可以对日志进行筛选过滤。
 
原文地址:[url]http://www.linuxfly.org/read.php?171[/url]
 
前面详细介绍了sysklog套件的配置和使用。但毕竟该套件已经比较老了,很多功能都不够完善,而系统日志又是系统维护中至关重要的参考信 息。我们可以使用syslog-ng(下一代系统日志工 具) 来替代原来的sysklog服务。syslog-ng可以通过对日志信息执行正规表达式过滤,并且支持主机链方式等 工作,都能更好的协助我们管理主机。
 
一、基础
syslog- ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能。
系统自带版本:
引用
# rpm -qa|grep syslog-ng
syslog-ng-1.6.7-1


syslog 官方网站:点击
最新版本是2.0.5。
为方便使用,暂以系统自带的版本1.6.7说明,以后再提供更新的rpm包。
1、前提
使 用syslog-ng前,建议先详细了解syslog的概念。
例如,什么是facitily(设备),level(等级)。可以参考这里:点击
否 则,后面的说明可能会有点不知所云的。
2、使用
若不增加其他设定,可通过下面的简单命令即可替换原 syslog服务:

# service syslog stop
# service syslog-ng start


3、 设计原则
syslog-ng替代syslog是基于以下的设计原则的:

引用
a、通过正规表达式协助,除支持原facitily/level方式,还支持内容过滤等以建立更 好的消息过滤机制;
b、支持主机链,即使日志消息经过多重网络转发,仍可找到原发出主机的信息和整个消息链;
c、支持强大的自定义配置, 并且清晰、明了。


二、 配置说明
syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf
1、架构
syslog- ng的配置基于下面的架构:

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


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

2、消息源SOURCES
定义格式为:

引用
source <sourcename> { sourcedriver params; sourcedriver params; ... };


含义:

引用
<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)); #如果取消注释,则可以从udp的514端口获取消息
};


※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> { destdriver params; destdriver params;  ...  ;};


含义:

引用
<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)); };


※配合使用udp或tcp即可实现集中的日志服务器。注意,udp函数的写法上和消息源 驱动器中的定义不同。

5、消息路径LOG STATEMENTS
定 义格式为:

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

把消息源、过滤器、消息目的组合起来就形成一条完整的指令。日志路径中的成员是顺序执行的。凡是来源于指定的消息源,匹配所有指定的过 滤器,并送到指定的地址。
※同样的,每条日志消息都会经过所有 的消息路径,并不是匹配后就不再往下执行的,请留意。
三、选项参数
除了上述 的消息路径定义外,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)。通过设置下面两个选项可 以控制:
引用
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就进入垃圾信息收集状态的时间。该值应该比较高,以保证正常情况下不会打断 日志消息的收取。

六、参考资料
man syslog-ng.conf
man 8 syslog-ng

分享到:
评论

相关推荐

    syslog-ng安装包及安装步骤

    syslog-ng是一款强大的日志管理工具,用于收集、解析、过滤和转发系统日志。它在Linux和其他类Unix系统中广泛使用,提供了更高级的功能,比如支持多种协议、过滤规则和目的地,使得日志管理更加灵活和高效。下面将...

    syslog-ng-1.6.7rpm安装包和eventlog_0.2.12.tar.gz源码安装包

    本篇文章将详细介绍syslog-ng的1.6.7 RPM安装包和源码安装包的使用,以及与之相关的eventlog模块。 首先,我们来关注syslog-ng的RPM安装包。RPM(Red Hat Package Manager)是Linux系统中广泛使用的软件包管理器,...

    syslog-ng-3.8.1

    syslog-ng是日志管理和分析领域的一款重要软件,版本3.8.1代表了该软件的一个稳定迭代,提供了诸多改进和新特性。本文将深入探讨syslog-ng 3.8.1的核心功能、安装过程以及在实际应用中的重要性。 syslog-ng,全称为...

    syslog-ng-3.7.3 源码

    syslog-ng是syslog协议的下一代实现,它是一个开源的日志管理系统,用于收集、解析、过滤、存储和转发来自网络中各种设备的日志信息。syslog-ng 3.7.3版本是其发展中的一个重要里程碑,提供了丰富的功能和优化,使得...

    syslog-ng_3.5.6.tar.gz

    syslog-ng_3.5.6.tar.gz这个压缩包文件正是syslog-ng的3.5.6版本源代码,为用户提供了一个全面的日志收集、处理和分发的解决方案。 syslog-ng的核心功能包括: 1. **日志收集**:syslog-ng能够从各种来源接收日志...

    syslog-ng_3.3.5.tar.gz

    syslog-ng是syslog协议的一个强大实现,它是一个开源的日志管理和分析工具,广泛应用于系统监控、安全审计和故障排查等领域。3.3.5是syslog-ng的一个稳定版本,提供了诸多功能和性能改进,对于任何依赖于日志数据...

    syslog-ng-2.0.10.tar.gz

    syslog-ng 2.0.10版本是该软件的一个历史版本,虽然可能不如最新版本功能全面,但对于学习和理解syslog-ng的工作原理以及日志处理流程,仍然是非常有价值的。 首先,syslog-ng是基于开源项目开发的,它的全称是...

    syslog-ng构建日志系统

    - **安装eventlog库**:同样地,eventlog库也是syslog-ng所需的重要依赖之一。下载地址为:`http://www.balabit.com/downloads/files/eventlog/0.2/` ```bash # ./configure --prefix=/usr/local/eventlog && ...

    cacti+syslog-ng实现日志集中管理

    "cacti+syslog-ng"的组合就是一种常见的日志集中管理解决方案,它结合了网络监控工具Cacti和日志收集软件syslog-ng的优势,以实现高效、统一的日志管理和分析。 Cacti是一款开源的网络监控和图形性能数据收集工具,...

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

    系统部署 基本安装说明: 在Ubuntu 16.04上: apt-get install syslog-ng-core git ... 包含syslog-ng configs的文件路径,默认为/ etc / syslog-ng / 0000-options.conf 包含syslog-ng的系统默认选项。 这些基

    syslog收集:eventlog+syslog-ng+mongodb

    "syslog收集:eventlog+syslog-ng+mongodb"这一主题聚焦于如何利用syslog协议,结合Windows的eventlog和syslog-ng日志收集器,以及MongoDB数据库来构建一个高效的日志管理系统。 首先,让我们深入理解syslog协议。...

    syslog-ng-v2.1-whitepaper-distributed-syslog-architectures-en

    综上所述,syslog-ng Premium Edition是一款强大而灵活的日志管理工具,非常适合用于构建高效的分布式日志架构。通过使用syslog-ng,不仅可以提高日志管理的效率和安全性,还能显著降低维护成本。

    syslog-ng-docker:用于syslog-ng开发,测试,操场的Docker映像

    syslog-ng Docker映像该存储库包含以下Docker映像的源: balabit/syslog-ng :已安装syslog-ng。 它旨在用作系统日志记录服务。弃用的图片该存储库还包含以下图像。 但是,这些图像现在已过时和过时。 您可以在找到...

    syslog-ng3.16.1.tar.gz

    syslog-ng3.16 的tar包;下载下面这个很慢的可以用我这个。。。 https://github.com/balabit/syslog-ng/releases/download/syslog-ng-3.16.1/syslog-ng-3.16.1.tar.gz

    syslog-ng-3.7.1.tar.gz

    一、syslog-ng简介 syslog-ng源自传统的syslog协议,但增加了许多高级功能,如基于内容的日志过滤、目的地路由、数据转换以及支持多种数据源和目标。syslog-ng 3.7.1版本进一步优化了性能和稳定性,提升了对现代IT...

    OpenWrt Syslog-ng日志功能.docx

    #### 一、Syslog-ng简介 Syslog-ng是一款高效且灵活的系统日志工具,主要用于集中管理来自不同设备的日志数据。相较于传统的syslog,它具备更多高级特性,使得日志管理更加可靠、安全与便捷。 ##### 特性概览 1. **...

    syslog-ng 3.5 安装笔记

    这个笔记是我根据以往的syslog-ng 2.0的方面,更新到syslog-ng 3.5的笔记

    linux cacti syslog-ng snare实现日志集中管理

    #### 知识点一:syslog-ng 的作用与安装 - **syslog-ng** 是一个强大的日志管理工具,它允许用户收集、过滤和转发来自不同源的日志消息。 - 在 CentOS 5.4 系统环境中,通过安装 syslog-ng 可以实现日志的集中管理...

    syslog-ng+phpmyadmin+mysqlforcentos.pdf

    整个实验流程旨在建立一个能够收集、存储和管理系统日志的高效环境,其中syslog-ng负责日志收集,Mysql提供持久化存储,而phpMyAdmin则提供了一个直观的用户界面来查看和分析这些日志数据。通过这样的集成,可以方便...

    syslog-ngOSE_3.30管理手册

    syslog-ng 是一款功能强大的日志管理系统,用于收集、传输和存储系统和应用程序日志消息。 syslog-ng 的核心功能是将日志消息从源传输到目的地。它可以对日志消息进行重新格式化和解析,从而为日志消息添加更多的上...

Global site tag (gtag.js) - Google Analytics