开源实时日志分析 ELK 平台

开源实时日志分析 ELK 平台由 ElasticSearch 、 Logstash 和 Kibana 三个开源工具组成。
Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。
Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据。
这里写图片描述

一、Logstash

安装:tar zxvf logstash-1.5.2.tar.gz
运行:./logstash -e 'input { stdin { } } output { stdout {} }'
结果:
Logstash startup completed
Hello World!
2015-07-15T03:28:56.938Z noc.vfast.com Hello World!
退出:Ctrl+C
编辑:vim logstash-simple.conf
input { stdin { } }
output {
   stdout { codec=> rubydebug }
}
运行:./logstash agent -f logstash-simple.conf
结果:
Logstash startup completed
hello cpit
{
       "message" => "hello cpit",
      "@version" => "1",
    "@timestamp" => "2017-03-27T08:10:19.586Z",
          "host" => "mcs-slave-2"
}

二、Elasticsearch

安装:tar zxvf elasticsearch-1.7.1.tar.gz
启动:./elasticsearch
确认elasticsearch的9200端口已监听:netstat -anp |grep :9200
结果:tcp6  0   0 :::9200      :::*     LISTEN     7169/java    

三、测试logstash使用elasticsearch作为logstash的后端

编辑:vim logstash-es-simple.conf
input { stdin { } }
output {
   elasticsearch {host => "localhost" }
   stdout { codec=> rubydebug }
}
执行:./logstash agent -f logstash-es-simple.conf
后台启动:nohup . /elasticsearch &
结果:
Logstash startup completed
hello logstash
{
      "message" => "hello logstash",
     "@version" => "1",
   "@timestamp" => "2015-07-15T18:12:00.450Z",
         "host" => "noc.vfast.com"
}
使用curl来查看ES是否接收到了数据:curl 'http://localhost:9200/_search?pretty'
结果:
{
  "took" : 47,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "logstash-2017.03.27",
      "_type" : "logs",
      "_id" : "AVsO1xmUL1RJegwzT5T5",
      "_score" : 1.0,
      "_source":{"message":"hello logstash","@version":"1","@timestamp":"2017-03-27T08:17:08.889Z","host":"mcs-slave-2"}
    } ]
  }
}

四、Elasticsearch-kopf插件可以查询Elasticsearch中的数据

安装进入Elasticsearch的安装目录执行:./plugin -install lmenezes/elasticsearch-kopf
安装完成后在plugins目录下可以看到kopf.
#在配置文件elasticsearch.yml里设置script.disable_dynamic: true
在浏览器访问http://10.3.17.237:9200/_plugin/kopf/#!/cluster浏览可以查询保存在Elasticsearch中的数据

这里写图片描述
这里写图片描述
这里写图片描述

五、Kibana

netstat -apn | grep 5601
安装: tar zxvf rashidkpc-kibana-b83dedf.tar.gz
启动:./kibana
使用http://10.3.17.237:5601访问Kibana, 登录后,配置一个索引.

这里写图片描述
这里写图片描述
这里写图片描述

六、配置logstash作为Indexer

编写配置文件:vim logstash-indexer.conf
input {
  file {
    type =>"syslog"
    path => ["/var/log/messages", "/var/log/syslog" ]
  }
  syslog {
    type =>"syslog"
    port =>"5544"
  }
}
output {
  stdout { codec=> rubydebug }
  elasticsearch {host => "10.3.17.237" }
}
运行:./logstash agent -f logstash-indexer.conf
使用echo命令模拟写入日志:echo "`date` cpit " >>/var/log/messages

这里写图片描述
这里写图片描述

七、elasticsearch集群安装

安装head插件:./plugin install mobz/elasticsearch-head
配置config
cluster.name: es-cluster
node.name: node-1 #不同
network.host: #你的服务器ip地址
http.port: #9211  #不同
transport.tcp.port: #9311  #不同
index.cache.field.expire: 1d #过期时间
index.cache.field.type: soft
#默认类型为resident, 字面意思是常驻(居民), 一直增加,直到内存耗尽。改为soft就是当内存不足的时候,先clear掉占用的,然后再往内存中放。设置为soft后,相当于设置成了相对的内存大小。resident的话,除非内存够大。 
discovery.zen.ping.unicast.hosts: ["你的服务器列表(TCP端口)", "你的服务器列表(TCP端口)","你的服务器列表(TCP端口)"]
修改配置文件:log4j_to_es.conf
input {
    file {
        type => "infolog"
        path => "你的日志路径*.log"  #监听文件的路径
    }
    file {
        type => "errorlog"  
        path => "你的日志路径*.log"
    }
}
filter {
    multiline {  
       pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
       negate => true
       what => "previous"
    }
}
output {
    if [type] == "infolog" {
        elasticsearch {
            action => "index"          #The operation on ES
            hosts  => ["elasticsearch的IP地址:9211", "elasticsearch的IP地址:9212","elasticsearch的IP地址:9213"]              
index  => "apilog_%{+YYYY.MM.dd}"        
        }
    }else{
        elasticsearch {
            action => "index"          #The operation on ES
            hosts  => ["elasticsearch的IP地址:9211", "elasticsearch的IP地址:9212","elasticsearch的IP地址:9213"]               
index  => "apierrorlog_%{+YYYY.MM.dd}"                 }
    }
}
直接与log4j配合使用,直接将日志输出到logstash中
log4j.logger.包名=debug, socket
# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=${elk_port}
log4j.appender.socket.RemoteHost=${elk_ip}
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000   

这里写图片描述

八、定时清理ES索引数据

编写清理脚本:es-index-clear.sh
LAST_DATA=`date -d '-3 day' +%Y.%m.%d`
echo${LAST_DATA}  开始执行删除操作“
curl -XDELETE 'http://10.104.29.19:9211/*'${LAST_DATA}''
echo "${LAST_DATA}  执行完毕。
设置定时任务
输入crontab -e,出现vi编辑页面 
输入以下命令,每天两点10分执行sh文件:
10 2 */1 * * /letv/soft/elk/logstash-2.4.1/bin/es-index-clear.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值