日志系统方案需求与实现

overview:
1.聚合数据展示
2.过滤数据
3.读写分离集群
4.ms级响应查询
5.重要数据归档
6.基于ossec  logstash es 大数据安全关联分析
需求与实现
需求1: 能像tail -f 查看日志,集中式查看日志,不用单节点去查看。        
解决需求1:
           先调研开源日志方案:
                 初级:rsyslog+notify
                 中级1:Logstash +Redis+ Elasticsearch + Kibana  这套适用对可靠 时要求不是很严的那种 ,采用redis队列
                中级2:Flume + Kafka + Elasticsearch + Kibana     可靠性比中级1强,实时性,可用性较高,采用kafka中间件消息队列,有的为了加强完整性,还会加入zk。
                 高级:Flume + Kafka + HDFS + HADOOP + HIVE + Storm (+ Elasticsearch + Kibana)         尝试1:
         用flume用采集,但采集到的日志文件不能按一定规则命名(虽是可以去改一小段的java实现),但都是文件存储方式。跟以前的相比只是不用跑去每个节点查看日志。
尝试2:
        自我放弃了flume方案。换elk(当时的版本是1.7)。第一版的技术是elk+redis,原始的需求已经满足了,集中式,类似tail -f 方式。现在是集中式,web方式。

           
需求2:要看聚合的数据,比如a一类集中显式

解决需求2:采用 if [type]  == "a" {
            index => "a"
           }
 
需求3:数据量太大了,要过滤数据b
解决需求3:

              filter {

                 grok {

                          add_tag => [ "valid" ]

                          match => [

                                     "message", "b"

                          ]

                  }

             }

需求四:要归档重要的日志,es集群读写分离
解决需求四:从redis队列直接取值存于mongodb

 

 

            
需求五:优化各层次套件,实现ms级查看日志

解决需求五:各种优化,前端,消息队列,存储,分片,索引,副本,加ngxspeed。改js 支持ms级别
需求6: 入侵检测检测系统
     这个是理论阶段,我还没开始做。只是提供一个思路案例思考。Ossec(事件源、alert源) Logstash (日志收集、分割日志) Elasticsearch (全文搜索) Kibana3 (日志展现) Redis/kafka队列。
入侵检测系统ossec:
       ossec 支持2种模式:1、ossec agent; 2、基于redis队列,日志传送到ossec server,然后ossec server会通过对分析日志进格式化处理规则解析,判断异常并且对其做处理,比如写入数据库,触发告警。
如图1为处理日志过程。

日志系统方案需求与实现_第1张图片
 
 
 
如图2为ossec整个工作过程:
        
日志系统方案需求与实现_第2张图片
 
     说到入侵检测系统,之前作了一个迷你的系统录屏,记录用户从登陆系统的所有操作,把记录在kibana上展示。
     
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /data/records ]
then

你可能感兴趣的:(ELK)