syslog-ng配置日志服务器学习总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

背景:因为项目需要,现使用syslog-ng搭建一台日志服务器,简单来说就是利用我们现有的虚拟机中的syslog-ng服务,搭建一台用于专名存放其他虚拟机(也包括自己)所产生的日志。由于一些用户以后将没有权限直接访问我们的ebackup 服务器,但又需要查看日志。便可以用过这台日志服务器来查看。日志服务器中的日志目录按照一定的规则设定,如“日期+主机名”等自行设定。

Syslog-ng介绍:

规则,实现更好的过滤功能。本次日志服务器的搭建是用的syslog-ng,关于syslog的具体描述可以参考下面的链接。

/subview/1614723/1614723.htm

1、syslog-ng的配置说明

syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf中。首先需要简单介绍一下syslog-ng的架构。yslog-ng.conf中所有配置都是基于syslog-ng 的这样一种架构:LOG STATEMENTS『SOURCES - FILTERS -DESTINATIONS』即:消息路径『消息源-过滤器-目的站』

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

(1)、消息源source

格式为:source { sourcedriver params; sourcedriver params; ... };

一个消息源的标识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();

); };参数需要使用括号括住。

(2)、过滤器FILTERS

定义格式为:filter { 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); };(3)、目的地DESTINATIONS

定义格式为:destination { destdriver params; destdriver params; ... ;};表示一个目的地的标识目的地驱动器有:

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

(4、)消息路径LOG STATEMENTS

定义格式为:log { source S1; source S2; ... filter F1; filter F2; ... destination D1; destination D2; ... };

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

Syslog-ng的搭建:

根据上面的介绍和查阅相关资料之后,就可以着手搭建一台日志服务器了。条件是至少准备两台虚拟机,其中一台作为日志服务器,另一台作为客户端。由于FC上的虚拟机操作系统中自带了syslog-ng,版本为2.0.所以我们不用自己安装syslog-ng。可以通过命令查看syslog-ng的版本:

命令:rpm -qa | grep syslog-ng

syslog-ng-2.0.9-27.32.1

首先是服务器端的配置:

1、建立一个日志文件夹,用于保存接收到的日志

mkdir /var/log/syslog-ng

2、编辑配置文件,syslog-ng的相关配置都是在

/etc/syslog-ng/syslog-ng.conf文件中保存的。我们根据上面的架构来配置。

vi /etc/syslog-ng/syslog-ng.conf

设置全局变量,打开syslog-ng.conf之后,注释掉原来的options{……};也可以不注释,具体根据自己规则来选择参数,所有参数如下:

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

相关文档
最新文档