利用ELK+redis搭建一套nginx日誌分析平臺。
使用Elasticsearch + Logstash + Kibana+redis來搭建nginx日誌監控分析。
nginx的每個請求狀態等都有日誌文件來記錄,可以通過讀取日誌文件來分析;
logstash有agent(Shipper)和server(Indexer)端,agent端負責監控本地日誌文件的變化,
及時把日誌文件的最新內容收集起來,輸出到Redis暫存;
redis的list結構正好可以作爲隊列使用,用來存儲logstash傳輸的日誌數據;
server端:日誌存儲,負責從Redis接收日誌;
分析之後存儲到elasticsearch進行搜索分析再由統一的kibana進行日誌web界面的展示.
實現所需架構圖:
部署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界面的展示
實現步驟:
首先在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查看
在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配置
在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查看。