简单介绍一下Syslog-ng日志系统

syslog-ng的一个设计原则就是建立更好的消息过滤粒度。syslog-ng能够进行基于内容和优先权/facility的过滤。另一个设计原则是更容易进行不同防火墙网段的信息转发,它支持主机链,即使日志消息经过了许多计算机的转发,也可以找出原发主机地址和整个转发链。最后的一个设计原则就是尽量使配置文件强大和简洁。

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

1)通过正则表达式协助,除支持原facitily/level方式,还支持内容过滤等以建立更好的消息过滤机制。

\2) 支持主机链,即使日志消息经过多重网络转发,仍可找到原发出主机的信息和整个消息链。

\3) 支持强大的自定义配置,并且清晰、明了。

syslog-ng安装

[root@localhost ~]# wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12.tar.gz
[root@localhost ~]# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz
[root@localhost ~]# tar xvf eventlog_0.2.12.tar.gz
[root@localhost eventlog_0.2.12]# cd eventlog-0.2.12
[root@localhost eventlog_0.2.12]# ./configure --prefix=/usr/local/eventlog
[root@localhost eventlog_0.2.12]# make
[root@localhost eventlog_0.2.12]# make install

[root@localhost ~]# cd /usr/src
[root@localhost ~]# tar xvf syslog-ng_3.3.5.tar.gz
[root@localhost ~]# cd syslog-ng-3.3.5
[root@localhost syslog-ng_3.3.5]# export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
[root@localhost syslog-ng_3.3.5]# ./configure --prefix=/usr/local/syslog-ng
[root@localhost syslog-ng_3.3.5]# make
[root@localhost syslog-ng_3.3.5]# make install

syslog-ng配置文件介绍

其配置文件时/etc/syslog-ng/syslog-ng.conf,配置文件的格式一般由以下5个部分组成

options { };
 #全局选项,多个选项时用分好";"隔开source S_NAME { };
 #定义日志源可以是本地也可以是远程主机
filter F_NAME { };
 #定义过滤规则,规则可以使用正则表达式来定义;可略
destination D_NAME { };
 #定义目标可以本地也可以是远程主机log { };
 #此段将来源,目的,过滤都给连接起来并且告诉syslog-ng如何处理日志
----------------------------------------------------------------
options { option1;option2}
sourceS_NAME { source-driver(params);source-driver(params);... };
filter F_NAME {expression;};
destination D_NAME { dest-driver(params); dest-driver(params);…};
log { source(S_NAME); filter(F_NAME); destination(D_NAME) }
options { long_hostnames(off); sync(0); perm(0640); stats(3600); };
全局配置参数更多选项如下:
 chain_hostnames(yes|no)  #是否打开主机名链功能打开后可在多网络段转发日志时有效
 long_hostnames(yes|no)   #是chain_hostnames的别名已不建议使用
 keep_hostname(yes|no)    #是否保留日志消息中保存的主机名称
 use_dns(yes|no)          #是否打开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_perm(perm)           #目录的权限,使用八进制方式标注,例如0644
 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_的宏代替日志记录的时间,而不要依靠该值定义source s_name { internal(); unix-dgram("/dev/log"); udp(ip("0.0.0.0") port(514)); };
下面是Syslog-ng支持的消息源:
 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设备,读取日志信息

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

destination d_name { file("/var/log/messages"); };
更多动作如下:
 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)                  #启动指定的程序,并把日志消息发送到该进程的标准输入log { source(s_name); filter(f_name); destination(d_name) };
把消息源、过滤器、消息目的组合起来就形成一条完整的指令。日志路径中的成员是顺序执行的凡是来源于指定的消息源,匹配所有指定的过滤器,并送到指定的地址。
同样的,每条日志消息都会经过所有的消息路径,并不是匹配后就不再往下执行的请留意。
一条日志的处理流程大概是这样的,如下:
首先是 "日志的来源-source s_name { ... };"
然后是 "过滤规则-filter f_name { ... };"
再然后是 "消息链-log { source(s_name); filter(f_name); destination(d_name) };"
最后是  "目标动作-destination d_name { ... };"
这样以来一条日志就根据你的意思来处理了,需要注意的是一条日志消息过了之后,会匹配定义的所有配置,并不是匹配到以后就不再往下匹配了

最后可以看一下Syslog-ng的配置文件,结合上面所做的介绍,搞明白其配置文件的意思。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/214614.html<

(0)
运维的头像运维
上一篇2025-04-11 21:10
下一篇 2025-04-11 21:11

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注