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

前言: 之前有说过elk收集nginx日志,

现在来说一下收集容器集群的日志收集Elk的安装这里不在说了,上来直接怼,

这里是elk的服务器:的服务状态:以及端口

 图片1.png

 

Logstash是主要的配置内容这里:

如下

 

 图片2.png

图片3.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  

 

图片4.png 

接下来开始配置docker集群中的filbeate

 

 

先说一下我们这里的docker启动的是集群模式,我将容器的日志目录映射到了本地宿主机上的目录了,

图片5.png

可以在本地上看一下:

 

图片6.png

图片7.png 

容器的状态:

图片8.png 

 

Filebeat是轻量级的工具省很多的资源开销:

 

 

这里安装的时候直接使用

 

rpm -ivh filebeat-5.5.1-x86_64.rpm

图片9.png 

 图片10.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

image.png

image.png

进行对容器的访问可以查看到日志已经呗输入到了es存储中

 图片11.png

 

可以看一下里面的数据:

image.png

比如查看一下nginx的日志:

image.pngimage.png

接下来在kibana当中去创建一个一索引开头的日志格式

image.png

image.png

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

 

 

图片12.png

图片13.png 

 

 

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


猜你喜欢

转载自blog.51cto.com/xiaorenwutest/2147860