Syslog-ng配置技巧:创建log集成服务器

日期: 2011-03-27 作者:Jeff Gehlbach翻译:黄永兵 来源:TechTarget中国 英文

企业在利用系统载入功能syslog管理服务器方面还远远做的不够。Syslog最初是在BSD单元创建,现在已扩展到几乎所有的Unix系统,包括GNU Linux。系统管理员通常通过Syslog进入远程系统和查询本地文件,但是很少有人知道syslog信息能在网络上传输并集中存储来方便查询。syslog程序允许用户从网络上接收log信息,在硬盘和网络上读取。

但是这些功能往往未被有效利用,也缺乏大规模的推广。   syslog-ng框架是可供用户启动运行的选择项,在大部分系统中,它作为默认的syslog程序,使接收、过滤、读写log信息更具灵活性。syslog-ng和BalaBit IT安全的维护人员……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

企业在利用系统载入功能syslog管理服务器方面还远远做的不够。Syslog最初是在BSD单元创建,现在已扩展到几乎所有的Unix系统,包括GNU Linux。系统管理员通常通过Syslog进入远程系统和查询本地文件,但是很少有人知道syslog信息能在网络上传输并集中存储来方便查询。syslog程序允许用户从网络上接收log信息,在硬盘和网络上读取。但是这些功能往往未被有效利用,也缺乏大规模的推广。

  syslog-ng框架是可供用户启动运行的选择项,在大部分系统中,它作为默认的syslog程序,使接收、过滤、读写log信息更具灵活性。syslog-ng和BalaBit IT安全的维护人员可使用开源版本的框架——GNU GPLv2下的自由的软件许可——以及具有增强性能的更高版本。

  现在,在Red Hat Enterprise Linux(RHEL)5.5或CentOS 5.5 server上安装和配置syslog-ng OSE version 2.1,这样,接收的log信息可以有序地保存在本地硬盘中。此外,它还提供其他的功能,包括在全文搜索功能的配合下向关系型数据库中写入log信息。

  如何安装EPEL和syslog-ng

  在基于64位Intel服务器的RHEL或CentOS上安装syslog-ng是一个全新的尝试,因为官方的RHEL和CentOS系统还无法提供syslog-ng,用户需要先安装一个额外的Enterprise Linux(EPEL) repository。作为根用户,运行下列命令:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

  安装EPEL repository封装包以后,YUM package管理员可从EPEL运行syslog-ng安装包。

  yum安装syslog-ng

  YUM会估测安装包的全部序列。安装能立即获得程序确认,同时,会询问用户是否为EPEL repository导入GPG key。如果运行正常,对两项提示均选择“是”。

  syslog-ng安装以后,就没有必要运行默认的syslog daemon。运行下列命令作为根来终止syslog daemon,并取消其随后的自动启动:

/sbin/service syslog stop

/sbin/chkconfig syslog off

Then start the syslog-ng daemon and set it to start automatically on each boot:

/sbin/service syslog-ng start

/sbin/chkconfig syslog-ng on

  配置防火墙

  想通过网络来接收syslog信息,我们需要配置系统主机的防火墙来保证网络的适当传输。syslog默认的网络传输是UDP port 514。你可以通过编辑该路径文件/etc/sysconfig/iptables直接修改防火墙,也可以先从底端进入,在REJECT之上增加下列命令:

-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT

  然后运行下列命令重启防火墙:

/sbin/service iptables restart

  或者,你可以通过桌面的管理菜单使用GUI安全层和防火墙工具。

  Syslog-ng配置

  默认情况下,syslog-ng捆绑了log经过的所有主机名。当你通过一些syslog服务器回复log信息时,这会非常有用。另一种默认行为必须改变日志文件的目标目录自动创建。但我们的动态分层布局要求其启用。两个方案配置在syslog-ng/syslog的-ng.conf首选项部分。命令如下显示:

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

  chain_hostnames (no);

  create_dirs (yes);

};

  默认的信息源s_sys只能从syslog-ng、内核和本地程序中接收log信息,或许你希望从UDP网络协议中读取信息。有必要将本地信息与这些网络信息分离开,因此你可以在syslog-ng.conf中的默认s_sys定义之后增加下列命令定义一个独立的源。

source s_net {

  udp(ip(0.0.0.0) port(514));

};

  同时,你必须定义指向分等级目录结构的点。利用这个点,Syslog-ng可写入从网络主机接收的信息。比如,我需要根据年、月、日将文件写入目录中,然后在每个远程主机写入一个文件。这种操作可以定义为“d_hier”,它满足对默认文件现存点定义的协议,可在syslog-ng.conf中的已有的d_mlal定义之后添加下列命令:

destination d_hier {

  file("/var/log/net-daily/$YEAR/$MONTH/$DAY/$HOST.log");

};

  你应该根据自身的需求寻找合适的目录构造方式,通过实验寻找适合的布局。可在文件/usr/share/doc/syslog-ng/syslog-ng.txt中对syslog-ng server进行点定义。

  最后,应该将网络信息源(s_net)和信息过滤器结合起来,使用现存的f_default——与Linux系统中的/var/log/messages信息设置类似——通过log action来定义点(d_hier)。可在syslog-ng.conf中添加下列命令:

log { source(s_net); filter(f_default); destination(d_hier); };

Save your changes to syslog-ng.conf and issue the following command as root to reload the configuration:

/sbin/service syslog-ng reload

  接下来,在网络上配置一个syslog消息发送到新的日志集成服务器远程系统。在不同的操作系统下,往往只需更改/etc/hosts文件,这样日志主机名称解析为syslog-ng的服务器的IP地址。有时有必要更改/etc/syslog.conf文件或类似的文件。如果你不确定如何处理一个给定的系统,查看操作系统的系统日志手册页是一个很好的起点。在完成必要的修改,你会看到文件出现在早期的设计下,目录结构的syslog-ng的服务器。例如,从我的笔记本电脑记录信息的路径名是/var/log/net-daily/2011/02/07/flyingfox.log。

  值得强调的是:服务器是不支持syslog设备的。大多数交换机和路由器——甚至某些打印机和其他网络连接设备——可以通过网络发送系统日志消息。检查基于Web的管理控制台或命令行的详细信息。

  本文介绍syslog-ng的配置可以成为一个企业范围的日志集成服务器的基础,极大地简化系统的日志信息交互。本系列的下一篇将介绍何扩展syslog-ng的配置,在OpenNMS的网络管理系统运行可操作的通知和报警信息。