zoukankan      html  css  js  c++  java
  • EFK的安装和收集docker容器日志展示

    在用户根目录创建个filebeat.docker.yml文件,文件内容如下

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    filebeat.autodiscover:
      providers:
        - type: docker
          templates:
            - condition:
                contains:
                  docker.container.labels.collectLog: "true"
              config:
                - type: container
                  paths:
                    - /var/lib/docker/containers/${data.docker.container.id}/*.log
    
    
    processors:
    - add_cloud_metadata: ~
    
    output.elasticsearch:
      hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
      username: '${ELASTICSEARCH_USERNAME:}'
      password: '${ELASTICSEARCH_PASSWORD:}'

    其中templates的condition里表示的是收集labels里有collectLog: "true"的容器的日志

    通过docker-compose安装es filebeat kibana。(PS:这个单节点的efk,集群高可用的话一般还需要搭配队列,redis或者kafka。而且es一般也是集群,filebeat是每个节点一个,那样的话就得用k8s才方便了)

    version: "3"
    services:
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
        container_name: es
        environment:
        - discovery.type=single-node
        ports:
        - 9200:9200
        - 9300:9300
      kibana:
        image: docker.elastic.co/kibana/kibana:7.8.0
        container_name: kibana
        ports:
        - 5601:5601
      filebeat:
        image: docker.elastic.co/beats/filebeat:7.8.0
        container_name: filebeat
        environment:
        - output.elasticsearch.hosts=["elasticsearch:9200"]
        user: root
        volumes:
        - "~/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro"
        - "/var/lib/docker/containers:/var/lib/docker/containers:ro"
        - "/var/run/docker.sock:/var/run/docker.sock:ro"

    然后启动一个容器,labels里有collectLog: "true"就行.

    这里我以一个asp.net core服务为例,docker-compose.yml如下,镜像和服务名改为你自己的即可。

    version: "3"
    services:
      xx_api:
        container_name: xx_api
        image: registry.cn-beijing.aliyuncs.com/xx/xx3api:latest
        labels:
          collectLog: "true"
        ports:
        - 9005:80

    最后在kibana显示日志。

    打开kibana的站点,点击Management

    然后点击Kibana的Index Patterns, 再点创建索引样式

    输入filebeat*,点击下一步

    然后选个模式,我选的是timestamp的。这样就创建索引了。

    回到主页,点击logs

     就可以看到日志成功显示出来了。

  • 相关阅读:
    不同包中继承关系访问protected内部类问题
    LinuxMM--MemoryHierarchy
    LinuxMM--Memory Pressure
    多态实验:基类——子类成员
    使用vue开发的word-cloud 词云组件
    基于mui.PopPicker的可多选下拉多选的底部弹出组件
    基于mui.popover的自定义底部弹出框-支持多选和搜索筛选的弹出列表组件改造以及mui.prompt添加自定义内容
    js去空 去除空格
    css+js控制文字显示行数,多出部分显示省略号
    使用vue开发自定义tabs标签页组件
  • 原文地址:https://www.cnblogs.com/turingguo/p/EFK.html
Copyright © 2011-2022 走看看