簡介
ELK 不是一款軟件,而是 Elasticsearch、Logstash 和 Kibana 三種軟件產品的首字母縮寫。這三者都是開源軟件,通常配合使用,而且又先後歸於 Elastic.co 公司名下,所以被簡稱爲 ELK Stack。而redis作爲一款性能優良的消息隊列。更是適合用在此場景中。
下面是針對每個技術我的博客詳解。
3.Kibana6.x 介紹
filebeat就在這裏介紹了。
Filebeat是一個日誌文件託運工具,在你的服務器上安裝客戶端後,filebeat會監控日誌目錄或者指定的日誌文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),並且轉發這些信息到elasticsearch或者logstarsh中存放。所以說filebeat就是logstash-agent端的取代產品。且性能優良。
基本架構
準備環境。
Centos7 3臺,Elasticsearch6.1,logstash6.1,kibana6.1,filebeat安裝包。epel的yum源
1.首先配置 filebeat。
安裝filebeat。只需 yum -y install filebeat 。安裝完成後,修改配置文件 /etc/filebeat/filebeat.yml
內容如下:
filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.redis:
hosts: ["192.168.40.133"]
port: 6379
key: "nginx-log"
這樣的配置是 從 /var/log/nginx下讀取所有以.log結尾的文件。且發送到redis。且redis中以list方式存儲。鍵名爲 nginx-log
配置完成後。啓動redis。再啓動filebeat。
systemctl start redis
systemctl start filebeat
接下來應該讓logstash從redis中間鍵中讀取數據。那麼配置logstash。配置文件爲 /etc/logstash/conf.d/nginx.conf
input {
redis {
port => "6379"
host => "192.168.40.133"
data_type => "list"
type => "log"
key => "nginx-log"
}
}
filter {
grok {
match => {
"message" => '%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:time}\] "%{WORD:request_action} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'
}
}
date {
match => [ "time", "dd/MMM/YYYY:HH:mm:ss Z" ]
locale => en
}
geoip {
source => "remote_ip"
target => "geoip"
}
useragent {
source => "agent"
target => "user_agent"
}
}
output {
elasticsearch {
hosts => "192.168.40.133:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}
配置完成後,啓動logstash。 logstash -f /etc/logstash/conf.d/nginx.conf。或systemctl start logstash
這裏logstash從redis中讀取數據。而將數據過濾後再發送至Elasticsearch。過濾時用到了grok將數據格式化。user_agent,geoip等等插件。
再啓動Elasticsearch和kibana。
在瀏覽器訪問kibana所在主機的5601端口。選擇Management。創建index parttern。
創建 logstash-*
好了,大功告成!