elk平臺分析nginx日誌的基本搭建

一.elk套件介紹

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

2、部署流程

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訪問

建立

相關文章
相關標籤/搜索