LogStash+ElasticSearch简单使用(CentOS)
为了更加方便的分析Api使用情况,为了更具化的统计Api使用数据,决定使用LogStash和ElasticSearch结合搭建一套Log分析平台。
准备
作为最火的开源大数据分析平台,ElasticSearch成功的降低了大数据分析的入门门槛。既然决定使用它来分析日志,必然得要先安装ElasticSearch和LogStash。【Elastic系列软件依赖jvm,所以得先安装jvm,我为了方便直接使用yum安装了JDK】安装软件很简单,Elastic系列软件有自己的rpm仓库,直接使用yum安装就可以,详细的安装方法。
几点说明
- LogStash的默认配置文件路径为/etc/logstash/
- ElasticSearch的默认配置文件路径为/etc/elasticsearch/
- Yum安装的LogStash默认的文件路径为/usr/share/logstash/
- 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。
更多建议: