ELKStack

利用ELK+redis搭建一套nginx日誌分析平臺。

 

使用Elasticsearch + Logstash + Kibana+redis來搭建nginx日誌監控分析。

nginx的每個請求狀態等都有日誌文件來記錄,可以通過讀取日誌文件來分析;

logstashagentShipper)和serverIndexer)端,agent端負責監控本地日誌文件的變化,

及時把日誌文件的最新內容收集起來,輸出到Redis暫存;

redislist結構正好可以作爲隊列使用,用來存儲logstash傳輸的日誌數據;

server端:日誌存儲,負責從Redis接收日誌;

分析之後存儲到elasticsearch進行搜索分析再由統一的kibana進行日誌web界面的展示.

實現所需架構圖:

wKiom1m2XFzh3hp9AACokZahEmg360.png

 

部署3臺服務器:

1.192.168.0.156:安裝nginx+logstash+redis:負責監控本地日誌文件的變化,

及時把日誌文件的最新內容收集起來,輸出到Redis暫存

2.192.168.0.155:安裝logstash,作爲server端,日誌存儲者,負責從Redis接收日誌

3.192.168.0.188:安裝elasticsearch+kibana,搜索分析再由統一的kibana進行日誌web界面的展示

實現步驟:

  1. 首先在192.168.0.156安裝nginx+logstash+redis:(提前下載好logstash1.5.4

[root@node4 ~]# yum install nginx -y

[root@node4 ~]# systemctl startnginx.service                      ###啓動nginx

[root@node4 ~]# yum install redis -y

[root@node4 ~]# vim /etc/redis.conf

bind 0.0.0.0                                                       ###監聽本機所有地址

[root@node4 ~]# systemctl start redis.service                      ###啓動redis

[root@node4 ~]# yum install java-1.8.0-openjdk    java-1.8.0-openjdk-devel –y     

###安裝jdk

[root@node4 dylan]# yum localinstalllogstash-1.5.4-1.noarch.rpm –y    

 ###安裝logstash1.5.4

[root@node4 dylan]# vim/etc/profile.d/logstash.sh

export PATH=/opt/logstash/bin:$PATH

[root@node4 dylan]# ./etc/profile.d/logstash.sh

[root@node4 dylan]# cd/etc/logstash/conf.d/

[root@node4 conf.d]# vim/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core

-0.3.0/patterns/grok-patterns                     ###ngigx_log的匹配方式,添加以下日誌格式

#NGINX

NGUSERNAME [a-zA-Z\.\@\-\+_%]+

NGUSER %{NGUSERNAME}

NGINXACCESS %{IPORHOST:clientip} -%{NOTSPACE:remote_user} \[%{HTTPDATE:timestamp}\] \"(%{WORD:verb}%{NOTSPACE:request}(?:HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response}(?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}%{NOTSPACE:http_x_forwarded_for}

[root@node4 conf.d]# vimnglogredissample.conf          ###配置logstash收集nginx日誌

input {

  file { 

       path    =>["/var/log/nginx/access.log"]      

                   type    => "nginxlog"

       start_position => "beginning"

        }

}      

 

filter {

   grok {

       match => { "message" => "%{NGINXACCESS}"}           }      

}      

 

output {

  redis {                                                ###日誌發往redis暫存

       port    => "6379"

       host    =>["127.0.0.1"]

       data_type      =>"list"

                   key     =>"logstash-%{type}"

          }      

}  

[root@node4 conf.d]# logstash -f./nglogredissample.conf –configtest      ###測試配置文件

Configuration OK

[root@node4 conf.d]# logstash -f./nglogredissample.conf                   ###啓用配置文件

Logstash startup completed

[root@node4 /]# redis-cli                                                  ###連接至redis

127.0.0.1:6379> LINDEX logstash-nginxlog1                               ###可通過redis查看

 

  1. 192.168.0.155安裝logstash,作爲server端,日誌存儲者,負責從Redis接收日誌

[root@node3 ~]# yum install java-1.8.0-openjdk    java-1.8.0-openjdk-devel –y   

  ###安裝jdk

[root@node3 dylan]# yum localinstalllogstash-1.5.4-1.noarch.rpm –y       

 ###安裝logstash1.5.4

[root@node3 dylan] vim/etc/profile.d/logstash.sh

export PATH=/opt/logstash/bin:$PATH

[root@node3 dylan]# ./etc/profile.d/logstash.sh

[root@node3 dylan]# cd/etc/logstash/conf.d/

[root@node3 conf.d]# vim server.conf                   ###配置logstash server

input {

       redis {                                         ###redis獲取數據

                port => "6379"                          ###redis端口

                host =>"192.168.0.156"                  ###redis主機

                data_type =>"list"

                key     => "logstash-nginxlog"

       }

}

output {                                                                                                         

       elasticsearch{                                    ###輸出至elasticsearch

                cluster =>"logstash"                     ###elasticsearch中的cluster

                index   => "logstash-%{+YYYY.MM.dd}"      ###索引格式

       }

}

[root@node3 conf.d]# logstash -f./server.conf –configtest   ###測試語法

[root@node3 conf.d]# logstash -f./server.conf                ###運行server配置

 

  1. 192.168.0.188:安裝elasticsearch+kibana, 搜索分析再由統一的kibana進行日誌web界面的展示。

提前下載準備好:

elasticsearch-1.7.2.noarch.rpm

bigdesk-latest.zip  (一個ES插件擴展,可查看es集羣的各種狀態)

kibana-4.1.2-linux-x64.tar.gz

 

[root@node1 ~]# yum install java-1.8.0-openjdkjava-1.8.0-openjdk-devel –y 

 ###安裝jdk

[root@node1 dylan]# yun installelasticsearch-1.7.2.noarch.rpm –y                        ###安裝es1.7.2

[root@node1 elasticsearch]# vim/etc/elasticsearch/elasticsearch.yml

cluster.name: logstash                                             ###配置cluster

node.name: "node1.xiao.com"

[root@node1 elasticsearch]# systemctldaemon-reload

[root@node1 elasticsearch]# systemctl startelasticsearch.service      ###啓動es

es節點之間交互的tcp端口,默認是9300

對外服務的http端口,默認爲9200

[root@node1 ~]#/usr/share/elasticsearch/bin/plugin -i bigdesk -ufile:///dylan/plugins/bigdesk-latest.zip ###安裝bigdesk插件

http://192.168.0.188:9200/_plugin/bigdesk                    ###網頁端訪問可查看

 

[root@node1 dylan]# tar xfkibana-4.1.2-linux-x64.tar.gz -C /usr/local      ###解壓kibana

[root@node1 dylan]# cd /usr/local/

[root@node1 local]# ln -svkibana-4.1.2-linux-x64 kibana                     ###創建鏈接

"kibana" ->"kibana-4.1.2-linux-x64"

[root@node1 local]# cd kibana/config/

[root@node1 config]# vim kibana.yml                               ###編輯配置文件

elasticsearch_url:"http://localhost:9200"                                                   ###同屬同一臺服務器

[root@node1 config]# cd ..

[root@node1 kibana]# bin/kibana                                    ###啓動kibana

網頁端輸入:http://192.168.0.188:5601  查看

測試:在網頁端刷新nginx,產生日誌,即可通過kibana查看。

wKioL1m2XNyiOeDfAACghl8LqOg898.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章