zoukankan      html  css  js  c++  java
  • Docker 搭建 ELK 读取微服务项目的日志文件

    思路:

      在docker搭建elasticsearch与kibana来展示日志,在微服务部署的机子上部署logstash来收集日志传到elasticsearch中,通过kibana来展示,logstash使用读取本地文件的方式来获取日志内容

    1、在192.168.1.18机子中使用 docker-compose 在docker中部署 elasticsearch与kibana

    docker-compose.yml脚本如下:

    version: '3' 
    services: 
      elasticsearch:   
        image: elasticsearch:latest 
        container_name: elasticsearch 
        restart: always 
        networks: 
         - elk 
        ports: 
          - '9200:9200' 
          - '9300:9300' 
        volumes: 
         - /mnt/elk/elasticsearch/data:/usr/share/elasticsearch/data
    
      kibana:
        image: kibana:latest
        container_name: kibana
        restart: always
        networks:
           - elk
        ports:
           - "5601:5601"
        depends_on:
           - elasticsearch
    
    networks:
        elk:

    使用 docker-compose up -d 来执行脚本,执行完成后可以看见容器已经启动

    2、在192.168.1.17中部署微服务项目的机子,由于我们微服务部署也是在docker中,所以在启动项目的时候,需要将日志文件目录共享到宿主机上。并且所有的项目的日志存放路径需要指向同一个目录,docker 启动命令

    docker run --name test-springboot -p 1001:80 -f /mnt/logs:/mnt/logs -t test-springboot 

    3、同样使用 docker-compose 在192.168.1.17机子的docker中部署

    docker-compose.yml脚本如下:

    logstash:
        image: logstash:latest
        container_name: logstash
        restart: always
        ports:
          - "9601:9601"
        volumes:
          - /mnt/elk/logstash/config-dir:/config-dir
          - /mnt/logs:/mnt/logs
        command: logstash -f /config-dir

    在/mnt/elk/logstash/config-dir目录下新建logstash的配置文件logstash.conf。

    input{
        file{
            path => "/mnt/logs/*.log"
            type => "web_log"
            start_position => "beginning"
        }
    }
    
    output{
        elasticsearch{
            hosts => ["192.168.1.18:9200"]
            index => "log-%{+YYYY.MM.dd}"
        }
    }

    input:为输入的方式,这里使用file;

    output :是输出的方式,这里输出到192.168.1.18的es中;

    path:指向读取日志文件的位置,*表示读取目录下所有后缀名为log的日志文件;

    type:自定义该文件的类型,在es中为type字段;

    start_position:为从log文件中读取文件的位置,beginning为从头开始读取,只在第一次启动有效,后面只读取最后一行;

    重启logstash

    4、访问kibana,可以查询项目产生的日志

  • 相关阅读:
    51nod 1428 活动安排问题
    COGS 1. 加法问题 (水体日常)
    COGS 1406. 邻居年龄排序[Age Sort,UVa 11462](水题日常)
    51nod 1133 不重叠的线段
    51nod 1031 骨牌覆盖
    51nod 1050 循环数组最大子段和
    51nod 1094 和为k的连续区间
    51nod 1433 0和5
    51nod 1092 回文字符串
    洛谷 P1507 NASA的食物计划
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/10132683.html
Copyright © 2011-2022 走看看