為了更加方便的分析Api使用情況,為了更具化的統(tǒng)計Api使用數(shù)據(jù),決定使用LogStash和ElasticSearch結(jié)合搭建一套Log分析平臺。
作為最火的開源大數(shù)據(jù)分析平臺,ElasticSearch成功的降低了大數(shù)據(jù)分析的入門門檻。既然決定使用它來分析日志,必然得要先安裝ElasticSearch和LogStash?!綞lastic系列軟件依賴jvm,所以得先安裝jvm,我為了方便直接使用yum安裝了JDK】安裝軟件很簡單,Elastic系列軟件有自己的rpm倉庫,直接使用yum安裝就可以,詳細(xì)的安裝方法。
為了安全性考慮,我們將Es的9200端口綁定在127.0.0.1上,所以為了讓外部也可以借助API來實現(xiàn)數(shù)據(jù)檢索,我采用Nginx做了一個反向代理,這樣就可以完美的在外部使用Es啦。相關(guān)的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作為抓取數(shù)據(jù)的小伙伴,我們需要對它的配置進(jìn)行修改,已適配自己的Log格式,當(dāng)然如果你要分析Nginx_access日志或者Apache日志這類公用日志,官方也提供有現(xiàn)成的正則模版,可以直接使用。最后,我強(qiáng)烈建議每個人都要使用 Grok Debugger 來調(diào)試自己的 grok 表達(dá)式。另外 Grok Debugger 也提供了很多Grok的內(nèi)建規(guī)則說明。
#適配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做為服務(wù)后臺運(yùn)行的示例命令
nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/log.conf > /root/logstash.log 2>&1 &
對于Es,目前我只是把它當(dāng)成一個數(shù)據(jù)庫來用,所以這部分的配置暫時先留空,我們對于數(shù)據(jù)的檢索是基于HTTP API。
更多建議: