1. 程式人生 > >Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日誌信息

Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日誌信息

system 現在 mct ebe ack agent pda number tomcat容器

前言: 之前有說過elk收集nginx日誌,

現在來說一下收集容器集群的日誌收集Elk的安裝這裏不在說了,上來直接懟,

這裏是elk的服務器:的服務狀態:以及端口

技術分享圖片

Logstash是主要的配置內容這裏:

如下

技術分享圖片

技術分享圖片

input {

beats {

port => 5044

}

}

filter {

if "nginx-accesslog" in [tags] {

grok {

match => { "message" => "%{HTTPDATE:timestamp}\|%{IP:remote_addr}\|%{IPORHOST:http_host}\|(?:%{DATA:http_x_forwarded_for}|-)\|%{DATA:request_method}\|%{DATA:request_uri}\|%{DATA:server_protocol}\|%{NUMBER:status}\|(?:%{NUMBER:body_bytes_sent}|-)\|(?:%{DATA:http_referer}|-)\|%{DATA:http_user_agent}\|(?:%{DATA:request_time}|-)\|"}

}

mutate {

convert => ["status","integer"]

convert => ["body_bytes_sent","integer"]

convert => ["request_time","float"]

}

geoip {

source=>"remote_addr"

}

date {

match => [ "timestamp","dd/MMM/YYYY:HH:mm:ss Z"]

}

useragent {

source=>"http_user_agent"

}

}

if "tomcat-catalina" in [tags] {

grok {

match => { "message" => "%{HTTPDATE:timestamp}\|%{IP:remote_addr}\|%{IPORHOST:http_host}\|(?:%{DATA:http_x_forwarded_for}|-)\|%{DATA:request_method}\|%{DATA:request_uri}\|%{DATA:server_protocol}\|%{NUMBER:status}\|(?:%{NUMBER:body_bytes_sent}|-)\|(?:%{DATA:http_referer}|-)\|%{DATA:http_user_agent}\|(?:%{DATA:request_time}|-)\|"}

}

mutate {

convert => ["status","integer"]

convert => ["body_bytes_sent","integer"]

convert => ["request_time","float"]

}

date {

match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS Z", "MMM dd, yyyy HH:mm:ss a" ]

}

}

}

output {

elasticsearch {

hosts => ["192.168.9.35:9200"]

index => "logstash-%{type}-%{+YYYY.MM.dd}"

document_type => "%{type}"

}

# stdout { codec => rubydebug }

}

然後可以啟動:

nohup logstash -f /etc/logstash/conf.d/logstrash-test.conf >/dev/null

技術分享圖片

接下來開始配置docker集群中的filbeate

先說一下我們這裏的docker啟動的是集群模式,我將容器的日誌目錄映射到了本地宿主機上的目錄了,

技術分享圖片

可以在本地上看一下:

技術分享圖片

技術分享圖片

容器的狀態:

技術分享圖片

Filebeat是輕量級的工具省很多的資源開銷:

這裏安裝的時候直接使用

rpm -ivh filebeat-5.5.1-x86_64.rpm

技術分享圖片

技術分享圖片

filebeat.prospectors:

- input_type: log

paths:

- /var/log/docker-nginx/access_json.log

tags: ["nginx-accesslog"]

document_type: nginxaccess

- input_type: log

paths:

- /var/log/docker-tomcat/catalina.out

tags: ["tomcat-catalinaout"]

document_type: tomcatcatalina

tags: ["nginx-test-194"]

output.logstash:

hosts: ["192.168.9.35:5044"]

完成之後啟動filebeat即可:

Systemctl restart filebeat

然後通過curl 或者http

技術分享圖片

技術分享圖片

進行對容器的訪問可以查看到日誌已經唄輸入到了es存儲中

技術分享圖片

可以看一下裏面的數據:

技術分享圖片

比如查看一下nginx的日誌:

技術分享圖片技術分享圖片

接下來在kibana當中去創建一個一索引開頭的日誌格式

技術分享圖片

技術分享圖片

然後就可以看到了訪問到的內容了

技術分享圖片

技術分享圖片

其他容器的也就這樣的道理,可以收集,如果日誌多了可以上rediskafka


Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日誌信息