ELK 由 ElasticSearch 、 Logstash 和 Kiabana 三個開源工具組成。官方網站: https://www.elastic.co/products前端
Elasticsearch 是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制, restful 風格接口,多數據源,自動搜索負載等。java
Logstash 是一個徹底開源的工具,他能夠對你的日誌進行收集、分析,並將其存儲供之後使用(如,搜索)。node
kibana 也是一個開源和免費的工具,他 Kibana 能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。linux
工做原理以下如所示:nginx
logstash從日誌裏取出數據推送到elasticsearch,elasticsearch進行處理分析,以後交給kibana來進行前端展現json
注:安裝所有使用rpm安裝,方便管理vim
1.安裝依賴JDK瀏覽器
版本:jre-8u91-linux-x64.rpmruby
# rpm -ivh jre-8u91-linux-x64.rpm Preparing... ########################################### [100%] 1:jre1.8.0_91 ########################################### [100%] Unpacking JAR files... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... jfxrt.jar...
2.安裝logstashrestful
版本:logstash-2.3.2-1.noarch.rpm
# rpm -ivh logstash-2.3.2-1.noarch.rpm Preparing... ########################################### [100%]
默認都安裝到了
/opt/logstash /opt/logstash/bin/logstash
測試:
[root@node2 ~]# /opt/logstash/bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' ####輸入liuyao 而且回車 liuyao Settings: Default filter workers: 1 Logstash startup completed { "message" => "liuyao", "@version" => "1", "@timestamp" => "2016-07-17T05:01:42.551Z", "host" => "localhost" } { "message" => "", "@version" => "1", "@timestamp" => "2016-07-17T05:01:42.552Z", "host" => "localhost" }
3.安裝elasticsearch
版本:elasticsearch-2.3.3.rpm
# rpm -ivh elasticsearch-2.3.3.rpm Preparing... ########################################### [100%]
4.安裝kibana
版本:kibana-4.5.1-1.x86_64.rpm
# rpm -ivh kibana-4.5.1-1.x86_64.rpm Preparing... ########################################### [100%] 1:kibana ########################################### [100%]
案例:
分析nginx日誌:
1.先啓動elasticsearch
修改elasticsearch配置文件 vi /etc/elasticsearch/elasticsearch.yml 監聽ip network.host: 0.0.0.0 運行端口 http.port: 9200 保存退出 啓動 /etc/init.d/elasticsearch start 查看運行狀況 # netstat -tnlp | grep java tcp 0 0 0.0.0.0:9300 0.0.0.0:* LISTEN 1284/java tcp 0 0 0.0.0.0:9200 0.0.0.0:* LISTEN 1284/java
2.配置logstash配置文件
#cd /etc/logstash/conf.d # vim nginx_logstash.conf 配置文件以下: #標準輸入 input { file { #日誌路徑 path => ["/usr/local/nginx/access.log"] #日誌類型 type => "nginx_access" } } #正則匹配 filter { grok { match => { "message" => "(?<clientip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s-\s-\s(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\s\"(?<mothd>(.*))\s(?<url>(.*))\sHTTP.*\"\s(?<httpcode>[4-6][0-9]{1,3})\s(?<send_bytes>\d*)\s\"(?<http_refer>.*)\"\s\"(?<http_agent>[^\"]*)\"\.*" } } } #標準輸出 output { elasticsearch { hosts => ["127.0.0.1:9200"] codec => "json" index => "logstash-nginx-%{+YYYY.MM.dd}" } } 重啓logstash /etc/init.d/logstash restart
3.運行kibana
# /etc/init.d/kibana restart
打開瀏覽器:
IP:5601訪問
建立