在点滴中成长

【原】LogStash+ElasticSearch简单使用(CentOS)

为了更加方便的分析Api使用情况,为了更具化的统计Api使用数据,决定使用LogStash和ElasticSearch结合搭建一套Log分析平台。

准备

作为最火的开源大数据分析平台,ElasticSearch成功的降低了大数据分析的入门门槛。既然决定使用它来分析日志,必然得要先安装ElasticSearch和LogStash。【Elastic系列软件依赖jvm,所以得先安装jvm,我为了方便直接使用yum安装了JDK】安装软件很简单,Elastic系列软件有自己的rpm仓库,直接使用yum安装就可以,详细的安装方法

几点说明

1、LogStash的默认配置文件路径为/etc/logstash/
2、ElasticSearch的默认配置文件路径为/etc/elasticsearch/
3、Yum安装的LogStash默认的文件路径为/usr/share/logstash/
4、Yum安装的ElasticSearch默认的文件路径为/usr/share/elasticsearch/

反向代理(不是必须)

为了安全性考虑,我们将Es的9200端口绑定在127.0.0.1上,所以为了让外部也可以借助API来实现数据检索,我采用Nginx做了一个反向代理,这样就可以完美的在外部使用Es啦。相关的nginx配置如下

server {
        listen       80;
        server_name  your-server-name;

        location / {
          proxy_redirect off;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://127.0.0.1:9200;
        }
    }

LogStash配置

LogStash作为抓取数据的小伙伴,我们需要对它的配置进行修改,已适配自己的Log格式,当然如果你要分析Nginx_access日志或者Apache日志这类公用日志,官方也提供有现成的正则模版,可以直接使用。最后,我强烈建议每个人都要使用 Grok Debugger 来调试自己的 grok 表达式。另外 Grok Debugger 也提供了很多Grok的内建规则说明。

#适配ApiAdmin的Log分析的LogStash配置
input {
  file {
    path => "/data/apiLog/*.log"
    start_position => "beginning"
  }
}

filter {
    grok {
      match => { "message" => "%{DATA:real_class}###%{DATA:api_hash}###%{DATA:request_time}###%{DATA:request_data}###%{DATA:access_token}###%{DATA:user_token}###%{DATA:version}###%{DATA:cas}###%{NUMBER:code}###%{DATA:response_data}###%{DATA:filter_request_data}###%{DATA:app_id}###%{DATA:app_name}###%{DATA:device_id}###%{DATA:user_info}$" }
    }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
 elasticsearch { 
     hosts => ["127.0.0.1:9200"]
     index => "api_admin"
     document_type => "logs"
 }
}

#LogStash做为服务后台运行的示例命令
nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/log.conf > /root/logstash.log 2>&1 &

ElasticSearch配置

对于Es,目前我只是把它当成一个数据库来用,所以这部分的配置展示先留空,我们对于数据的检索是基于HTTP API。