Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elk+filebeat收集docker集群swarm中的nginx和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当中去创建一个一索引开头的日志格式
然后就可以看到了访问到的内容了
其他容器的也就这样的道理,可以收集,如果日志多了可以上redis和kafka
以上是关于Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息的主要内容,如果未能解决你的问题,请参考以下文章
6.3.1版本elk+redis+filebeat收集docker+swarm日志分析