syslog-ng配置日志服务器学习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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