今天最后一次课了,下课之后印度哥们过来跟我说,你们讲的东西很有趣啊。然后给了我一个很大的拥抱,这哥们就因为我上次在他饿了一天之后,借了他3刀,所以后来对我非常的好=_=............


logstash一个分布式日志收集工具。我们今天的演示内容。

虽然不涉及什么编程操作,但是我觉得熟悉这类工具对从事安全分析的人是非常的重要。

因为安全分为攻击型和防御行。日志分析就是防御型中最重要的部分之一,而日志的收集,管理,将会是非常耗时的一件事,尤其是分布式收集。如果以后去给哪个企业管服务器,难说用得上啊。

logstash就是把各个服务器(a,b,c,d,e,f........)上的日志,汇集到一起。假设是接收服务器是X。X可以把收集结果输出到web UI上或者本地文件,因此管理员只需要在一台机器上进行日志分析就行,而且还是自动收集。这东西另一个imba之处就是它无视日志格式,什么格式它都认。

老师说还有一个好处就是免费。。。。

好吧,说说这东西的配置:

分布式的架构分为发送端和接收端。运行logstash很简单,就是一个jar文件,命令在官网都有。主要是配置文件的设置。

发送端的配置如下:

input {
   file {
       # Wildcards work here :)
     path => [ "/var/log/messages", "/var/log/syslog", "/var/log/*.log" ]
   file {
     type => "apache-access"
     path => "/var/log/apache2/access.log"
   file {
     type => "apache-error"
     path => "/var/log/apache2/error.log"
   }
 } #这里可以写filter
 output {
   # Output events to stdout for debugging. Feel free to remove
   # this output if you don't need it.
   # Ship events to the amqp fanout exchange named 'rawlogs"
   amqp {
     host => "127.0.0.1"
     exchange_type => "fanout"
     name => "rawlogs"
   }
 }

简单的来说,就是提取服务器本地的日志(input),经过过滤器的表达式(我没写)的过滤,然后把日志发送到接收端。

接收端的配置如下:

input {
   amqp {
     # ship logs to the 'rawlogs' fanout queue.
     type => "all"
     host => "127.0.0.1"
     exchange => "rawlogs"
     name => "rawlogs_consumer"
   }
 } output {
   #elasticsearch { embedded => true }
   file
  {
  path => "/media/Acer/try.log"
  }
 }


接收端不同的地方在于:

不止要运行logstash,还要运行一个amqp服务器,这个服务器才是负责接收消息的,然后转给logstash。如果要输出在web UI,就要运行一个叫elasticsearch的服务器。然后logstash的output指向相应IP就行,默认端口9300.以上的例子只是我本地的演示,把结果输出在本地文件(我的elasticsearch似乎有问题)。我们演示的时候用的是两台机器,配置文件几乎是一样的。。接收端是另外一台机器,那台机器上的elasticsearch就没问题,能出结果。

顺便BS一下logstash的官方,官方的分布式教程有问题(启动接收端的时候没说用配置文件。。),卡了我们一段时间。最后还是给我们自己发现和改出来了。


补充一下,一个阿里巴巴工作的朋友读完文档后给了我另外一些提示:

有3种原因会中断发送

内存 硬盘 还有就是发送端发送速度过快