【2013年9月5日 51CTO外电头条】要是系统上哪里出现了什么岔子,日志文件是寻找线索以便排除故障的头一个地方。是内置有分析工具的日志服务,它可以整合来自许多服务器的日志,甚至让这些数据易于搜索。
要是企业网络上任何环节出现了什么岔子,管理员就得马上找出问题,并解决问题。找到出错信息通常不是问题,毕竟大多数 IT系统 给出了源源不断的系统日志条目和出错消息,但要在包括众多设备、系统和服务器的复杂网络中正确地评估这些信息,却常常是说起来容易做起来难。
一个问题是生成的大量信息。一方面,诸如集群管理器这些工具特别啰嗦,显示的信息要比实际需要的信息多好多倍。另一方面,就Apache而言,要是管理员对它进行了设置,分开记录每个虚拟主机的日志,数据最后有可能跑到好多个地方。在为许多客户提供服务的Web服务器上,大量的日志文件会日积月累,这就意味着为某个用户排除具体问题可能是一项没完没了的任务。
依赖 、或其他云平台的云计算环境拥有的服务器很少是少于20台的,服务器日志的数量会激增,与服务器系统的数量成正比。
通常采用的解决办法就是,在中央系统上由日志服务器收集日志,而不是任由日志散布于整个网络上。这个做法可以帮助你通过 SSH 在多台服务器之间浏览查找时,无需过于频繁地敲键。有些日志文件甚至为日志编制索引,以便搜索起来既快速又方便。像 Splunk 这些商用工具就提供了这种增值类型的日志服务。
面对这些商用日志工具,开源社区祭出的利器就是 ,这项中央日志服务提供了一种选择,可以通过Web界面来搜索现有的日志条目。
及其助手
严格来说,光凭无力确保对日志文件实行合理化、集中式的管理。执行任务时想取得预期的效果,就需要得到一些帮助。本身是个Java应用程序,尽管好多管理员对Java怀有种种偏见——无论这些偏见有没有道理,开发人员决定支持Java有其充分的事实根据。因为Java还安装在Windows上——这是理所当然的事,可以在日志文件库里面加入Windows日志文件;在许多情况下,换成其他的Rsyslog服务,就很难做到这一点。
的安装牵涉不止一台服务器,它由至少五个不同的服务组成。核心角色由的自有组件shipper来扮演:shipper基本上是在每个目标系统上运行的客户端,负责收集日志消息。下一步,shipper把日志消息发送给indexer,该组件负责按管理员指定的方式,解读和处理日志信息。indexer所在的主机通常还运行 Web服务器,这为管理员提供了查找日志文件的搜索框。在后台,并不直接属于,但对其功能而言很重要的另外两个服务负责各自的任务,它们是 Redis 消息代理和存储及搜索环境。
Redis为shipper与indexer之间的通信起到了关键作用。每台服务器上的实例将其消息传送到Redis服务器;在该服务器上, indexer在下一步中检索这些消息。也是个Java应用程序,它在后台编制索引,并提供界面,以便 Web服务器将来自Web界面的搜索请求转发至该界面。
模块化设计
的一大优点在于其多样性,这源自其模块化设计,因而让这个工具显得非常灵活:比如说就在几个月前,安装的使用AMQP代理来取代Redis还很常见——是通常的选择。
不过,的amqp模块没有得到非常好的维护,也不是特别受开发者的欢迎。很容易实现改用另一种不同代理的决定,那是由于只需要为消息代理编写接口。与此同时,Redis连接器可以顺畅地工作,遂成了明日黄花。
没有限制
在其他地方,对 管理员 的创造力几乎没有什么限制:这款工具不仅提供了通过已定义过滤器存档日志条目的功能,还提供了解读日志条目的功能,因为每一个日志条件都编入索引、易于搜索。
比如说,一接到请求,会管理HTTP日志,以后可以在Web界面中进行有条理的搜索,查找已引起“内部错误”的所有可能的查询。比如说,如果应用到,这意味着管理员可以明确搜索带ERROR前缀的日志消息。
还可以设计过滤器,完全去除日志记录中的各个条目。比如说,如果你想让典型的系统日志MARK消息不出现在日志存档中,只要改动 shipper配置。
测试安装
如果你想试一试,那么你很走运。与网站上的描述恰恰相反,安装工作绝不是什么极为艰巨的任务。只要确保事先明确你将哪个角色分配给了哪个主机。一旦明确了Redis服务器、和 indexer将运行哪个主机,你就可以准备上路了。下面这个例子基于Ubuntu 12.04,但也适用于Debian。网上也有面向典型企业发行版的Redis和的RPM程序包,包括红帽企业级Linux(RHEL)和SUSE Linux企业级服务器(SLES)等发行版。
安装Redis有多容易,这在很大程度上取决于有没有适用你系统的Redis服务器程序包。在Ubuntu上,一个简单的命令:
apt--server
即可安装相关组件。之后,建议修改/etc/redis/redis.conf中的127.0.0.1 bind条目,那样它含有该主机的IP地址。要不然,Redis只连接到本地主机,这会阻止其他主机将各自的消息直接发送到Redis。重视安全的那些管理员应该通过redis.conf里面的指令,设定一个访问密码。
安装
(见图1)是个类似的Java应用程序;遗憾的是,Ubuntu里面没有任何程序包。
欢迎加入我爱机器学习群:
微信扫一扫,关注我爱机器学习公众号
*请认真填写需求信息,我们会在24小时内与您取得联系。