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当中去创建一个一索引开头的日志格式

技术分享图片

技术分享图片

然后就可以看到了访问到的内容了

 

 

技术分享图片

技术分享图片 

 

 

其他容器的也就这样的道理,可以收集,如果日志多了可以上rediskafka


以上是关于Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息的主要内容,如果未能解决你的问题,请参考以下文章

ELK学习实验018:filebeat收集docker日志

6.3.1版本elk+redis+filebeat收集docker+swarm日志分析

部署ELK+Kafka+Filebeat日志收集分析系统

基于 Docker 的 ELK 高可用集群架构

Docker安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat)

filebeat+elasticsearch+logstash+kibana收集系统日志(docker)