docker-compose ELK查看docker及容器的日志

我目前所在公司开发团队比较小,为集团下面的工厂开发了一套小的系统,跑在一台CentOS服务器上,服务器搭建了docker环境,安装了docker-compose,但在日志处理方面,暂时没有一个好的方法能够收集完全的日志,只能依赖进入至服务器后,以docker logs containerID的方法来进入查看,非常不方便,之前也有关注ELK的技术,但一直在开发系统功能,全力实现,今天得空,重新想起了ELK查看日志的任务。

项目文件夹

其中docker-compose.yml

version: ‘3‘

services:
  filebeat:
    hostname: filebeat
    image: weschen/filebeat
    build:
      context: filebeat
      dockerfile: Dockerfile
    volumes:
      # needed to access all docker logs (read only) :
     - "/var/lib/docker/containers:/usr/share/dockerlogs/data:ro"
      # needed to access additional informations about containers
     - "/var/run/docker.sock:/var/run/docker.sock"
    links:
       - logstash
  kibana:
    image: docker.elastic.co/kibana/kibana:6.5.2
    environment:
      - "LOGGING_QUIET=true"
    links:
      - elasticsearch
    ports:
      - 5601:5601
  logstash:
    hostname: logstash
    image: weschen/logstash
    build:
      context: logstash
      dockerfile: Dockerfile
    ports:
      - 5044:5044
    environment:
      LOG_LEVEL: error
    links:
      - elasticsearch
  elasticsearch:
    hostname: elasticsearch
    image: weschen/elasticsearch
    build:
      context: elasticsearch
      dockerfile: Dockerfile
    environment:
      - cluster.name=docker-elk-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
      - 9200:9200

1.Elasticsearch

文件elasticsearch/Dockerfile

FROM docker.elastic.co/elasticsearch/elasticsearch:6.5.2
COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/

CMD ["elasticsearch", "-Elogger.level=INFO"]

文件elasticsearch/elasticsearch.yml

cluster.name: ${cluster.name}
network.host: 0.0.0.0

# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1

2.Logstash

文件logstash/Dockerfile

FROM docker.elastic.co/logstash/logstash:6.5.2

RUN rm -f /usr/share/logstash/pipeline/logstash.conf
COPY pipeline /usr/share/logstash/pipeline/

文件logstash/pipeline/logstash.conf

input {
    beats {
        port => 5044
        host => "0.0.0.0"
      }
} 

output {
    elasticsearch {
        hosts => elasticsearch
        manage_template => false
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    } 

    stdout { codec => rubydebug }
}

3.Filebeat

文件filebeat/Dockerfile

FROM docker.elastic.co/beats/filebeat:6.5.2

# Copy our custom configuration file
COPY filebeat.yml /usr/share/filebeat/filebeat.yml

USER root
# Create a directory to map volume with all docker log files
RUN mkdir /usr/share/filebeat/dockerlogs
RUN chown -R root /usr/share/filebeat/
RUN chmod -R go-w /usr/share/filebeat/

文件filebeat/filebeat.yml

filebeat.inputs:
- type: docker
  combine_partial: true
  containers:
    path: "/usr/share/dockerlogs/data"
    stream: "stdout"
    ids:
      - "*"
  exclude_files: [‘\.gz$‘]
  ignore_older: 10m

processors:
  # decode the log field (sub JSON document) if JSON encoded, then maps it‘s fields to elasticsearch fields
- decode_json_fields:
    fields: ["log", "message"]
    target: ""
    # overwrite existing target elasticsearch fields while decoding json fields
    overwrite_keys: true
- add_docker_metadata:
    host: "unix:///var/run/docker.sock"

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

# setup filebeat to send output to logstash
output.logstash:
  hosts: ["logstash"]

# Write Filebeat own logs only to file to avoid catching them with itself in docker log files
logging.level: error
logging.to_files: false
logging.to_syslog: false
loggins.metrice.enabled: false
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644
ssl.verification_mode: none

使用docker-compose up -d跑起来

在浏览器打开[Host-IP]:9200,能够打开以下界面,说明elasticsearch服务已经起来了

再在浏览器打开[Host-IP]:5601,这个是Kibana日志查看平台

创建index-pattern操作如下,如果在Discover菜单中创建index-pattern时,会出现以下

创建了index-pattern后,查看Logs应该可以查看到日志

首页查看日志

源码地址:https://github.com/ChenWes/docker-elk

原文地址:https://www.cnblogs.com/weschen/p/11046906.html

时间: 2024-10-04 02:42:32

docker-compose ELK查看docker及容器的日志的相关文章

docker logs-查看docker容器日志

只限制最后100条的日志,并持续更新日志显示 docker logs -f --tail=100 CONTAINER_ID docker logs -f --tail 100 CONTAINER_ID https://docs.docker.com/engine/reference/commandline/logs/ https://www.jianshu.com/p/1eb1d1d3f25e 分类: docker系列 标签: docker logs-查看docker容器日志 原文地址:http

【docker】docker logs-查看docker容器日志

引用地址 https://www.jianshu.com/p/1eb1d1d3f25e 通过docker logs命令可以查看容器的日志. 命令格式: $ docker logs [OPTIONS] CONTAINER Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟) --tail string 从日志末尾显示多少行日志, 默认是all -t, -

docker[-compose] 连接内网其他容器地址

原创内容,欢迎传播,请注明出处:http://www.cnblogs.com/johnd/p/set-docker-hostname.html 因为要部署 dubbo 服务到 docker 集群,在部署时遇到一个问题,就是dubbo会去获取 /etc/hosts 下面的 hostname 对应的IP地址作为 zookeeper 注册中心注册的 IP 地址,由于 docker 容器的 IP 是 172.17.0.2, 那注册到 zookeeper 的 IP 也就是 172.17.0.2 了. 那问

docker compose的简单使用

笔记内容:docker compose的简单使用笔记日期:2018-02-08 25.17 安装docker compose 25.18 docker compose示例 安装docker compose docker compose可以方便我们快捷高效地管理容器的启动.停止以及重启等操作,和批量管理容器,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像.数据卷.网络模式.监听端口等信息.我们可以在一个compose文件中定义一个多容器的应

Docker(八)用docker compose部署服务

用docker compose部署服务 docker compose可以方便我们快捷高效地管理容器的启动.停止.重启等操作,它类似linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像.数据卷.网络模式.监听端口等信息.我们可以在一个compose文件中定义一个多容器的应用,然后通过该compose来启动这个应用. 下载安装docker-compose # curl -L https://github.com/docker/compose/release

Docker & ASP.NET Core (5):Docker Compose

原文:Docker & ASP.NET Core (5):Docker Compose 第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 Docker Compose简介 Compose是一个用来定义和运行多容器Docker应用的工具.使用Compose的时候,你可以使用一个YAML文件来配置你应用的服务.然后根据配置,使用一个命令即可创建并运行所有的服务. 使用Compose的时候通常分三步: 使用Dockerfile定义你的环境 在docker-

Docker 核心技术之Docker Compose

Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的每一个容器都相当于一个服务(service) Compose中能定义和启动多个服务,且它们之间通常具有协同关系 管理方式: 使用YAML文件来配置我们应用程序的服务. 使用单个命令(docker-compose up),就可以创建并启动配置文件中配置的所有服务.  Docker Compose 工作原理

使用docker compose部署服务

谈到微服务的话题,技术上我们往往会涉及到多服务.多容器的部署与管理. Docker 有三个主要的作用:Build, Ship和Run.使用docker compose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YUML语法)文件,在这个文件上面描述应用的架构,如使用什么镜像.数据卷.网络.绑定服务端口等等,然后再用一条命令就可以管理所有的服务(如启动.停止.重启.日志监控等等). 本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布.网

使用Docker Compose部署SpringBoot应用

使用Docker Compose部署SpringBoot应用 原创: 梦想de星空 macrozheng 6月19日 Docker Compose是一个用于定义和运行多个docker容器应用的工具.使用Compose你可以用YAML文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了. 安装 下载Docker Compose: curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/doc