前言: 之前有说过elk收集nginx日志,现在来说一下收集容器集群的日志收集Elk的安装这里不在说了,上来直接怼,
这里是elk的服务器:的服务状态:以及端口
![1532084786114952.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/8fcc97b3d17b3464.png)
Logstash是主要的配置内容这里:
如下
![1532084893952345.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/372dfa1697b3001b.png)
![1532084907687896.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/419a96e49829e955.png)
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启动的是集群模式,我将容器的日志目录映射到了本地宿主机上的目录了,
![1532084963777236.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/f54fedef252f11e1.png)
可以在本地上看一下:
![1532084981869702.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/fa6a6c1d1d141f64.png)
容器的状态:
Filebeat是轻量级的工具省很多的资源开销:
这里安装的时候直接使用
rpm -ivh filebeat-5.5.1-x86_64.rpm
![1532085032203863.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/c187c3d2fc134f8f.png)
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:
![1532085094974808.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/9857b09af0430012.png)
![1532085122454877.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/27ec10c074967112.png)
进行对容器的访问可以查看到日志已经呗输入到了es存储中
![1532085138425986.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/a29da15c43b53dc8.png)
可以看一下里面的数据:
![1532085279199530.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/dc04b2b27552db5a.png)
比如查看一下nginx的日志:
![1532085398742657.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/6f074272966d6f38.png)
![1532085457261986.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/3c7bdff0cc53d6c8.png)
接下来在kibana当中去创建一个一索引开头的日志格式
![1532085482361766.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/a82520e5e4e8e575.png)
![1532085525550920.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/94ed3a515420bcd7.png)
然后就可以看到了访问到的内容了
![1532085164700521.png 技术分享图片](https://img1.php1.cn/3cd4a/2513d/5a0/f0fd710a62026799.png)
其他容器的也就这样的道理,可以收集,如果日志多了可以上redis和kafka
Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息