docker-compose 搭建elk (单机版)

1 .编辑docker-compose.yml文件


version: '3.2'

services:

    elasticsearch:

        image: elasticsearch:7.17.4

        volumes:

            - /etc/localtime:/etc/localtime

            - /你的目录/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载

            - /你的目录/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载

            - '/你的目录/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml' #配置文件挂载

        ports:

            - '9200:9200'

            - '9300:9300'

        container_name: elasticsearch

        restart: always

        environment:

            - 'cluster.name=elasticsearch' #设置集群名称为elasticsearch

            - 'discovery.type=single-node' #以单一节点模式启动

            - 'ES_JAVA_OPTS=-Xms1024m -Xmx2048m' #设置使用jvm内存大小

        networks:

            - elk

    logstash:

        image: logstash:7.17.4

        container_name: logstash

        restart: always

        volumes:

            - /etc/localtime:/etc/localtime

            - '/你的目录/elk/logstash/pipelines.yml:/usr/share/logstash/config/pipelines.yml'

            - '/你的目录/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml'

            - '/你的目录/elk/logstash/logstash-audit.conf:/usr/share/logstash/pipeline/logstash-audit.conf'

            - '/你的目录/elk/logstash/logstash-user-action.conf:/usr/share/logstash/pipeline/logstash-user-action.conf'

            - /你的目录/laravel/storage/logs:/piao_1 #挂载项目1 日志

            - /你的目录/laravel-two/storage/logs:/piao_2 #挂载项目2 日志

        ports:

            - '5044:5044'

            - '50000:50000/tcp'

            - '50000:50000/udp'

            - '9600:9600'

        environment:

            LS_JAVA_OPTS: -Xms1024m -Xmx1024m

            TZ: 'Asia/Shanghai'

            MONITORING_ENABLED: 'false'

        links:

            - elasticsearch:es #可以用es这个域名访问elasticsearch服务

        networks:

            - elk

        depends_on:

            - elasticsearch

    kibana:

        image: kibana:7.17.4

        container_name: kibana

        restart: always

        volumes:

            - /etc/localtime:/etc/localtime

            - /你的目录/elk/kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml

        ports:

            - '5601:5601'

        links:

            - elasticsearch:es #可以用es这个域名访问elasticsearch服务

        environment:

            - ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址

            - 'elasticsearch.hosts=http://es:9200' #设置访问elasticsearch的地址

            - I18N_LOCALE=zh-CN

        networks:

            - elk

        depends_on:

            - elasticsearch

networks:

    elk:

        name: elk

        driver:

            bridge


/etc/localtime:/etc/localtime 主要目的是将 Docker 容器中的时间与宿主机同步

2, 对应docker-compose.yml里面的目录&文件创建对应的文件和目录;自行创建,不过多表述。

3, 对应配置文件

elasticsearch.yml

cluster.name: "docker-cluster"

network.host: 0.0.0.0

kibana.yml

# Default Kibana configuration for docker target

server.host: '0.0.0.0'

server.shutdownTimeout: '5s'

elasticsearch.hosts: ['http://elasticsearch:9200']

monitoring.ui.container.elasticsearch.enabled: true

logstash.yml

http.host: "0.0.0.0"

xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

pipelines.yml

- pipeline.id: piao-one

  path.config: /usr/share/logstash/pipeline/piao-one.conf

  pipeline.workers: 3

- pipeline.id: piao-two

  path.config: /usr/share/logstash/pipeline/piao-two.conf

  pipeline.workers: 3

piao-one.conf

input {

  file {

    path =>"/piao_1/*.log"

    #第一次从头收集,之后从新添加的日志收集

    start_position => "beginning"

    #日志收集的间隔时间

    stat_interval =>"3"

    type=>"piao_1"

    sincedb_path => [ "/tmp/piao-1a.data" ]

    #有些日志需要多行收集到一起

    codec => multiline{

        pattern => "^\[\d{4}"

        what => "previous"

        negate => true

        auto_flush_interval => 1

    }

  }

}

filter{

    #从日志中提取时间

  grok {

      match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" }

  }

  date {

    match => [ "logdate", "YYYY-MM-dd HH:mm:ss" ]

    target => "@timestamp"

    timezone =>"+00:00"

  }

    #更正时间,修改8小时时差

ruby {

        code => "event.set('timestamp', event.get('@timestamp').time.localtime - 8*60*60)"

    }

    ruby {

        code => "event.set('@timestamp', event.get('timestamp'))"

        remove_field => ["timestamp"]

    }

    ruby {

        code => "event.set('ct', event.get('create_time').time.localtime - 8*60*60)"

    }

    ruby {

        code => "event.set('create_time', event.get('ct'))"

        remove_field => ["ct"]

    }

  mutate{

    remove_field => "logdate"

  }

}

output {

  if [type] == "piao_1" {

    elasticsearch {

      hosts => ["elasticsearch:9200"]

      index => "piao-1-%{+YYYY.MM.dd}"

    }

  }

}

piao-two.conf

input {

  file {

    path =>"/piao_2/*.log"

    #第一次从头收集,之后从新添加的日志收集

    start_position => "beginning"

    #日志收集的间隔时间

    stat_interval =>"3"

    type=>"piao_2"

    sincedb_path => [ "/tmp/piao-2a.data" ]

    codec => multiline{

        pattern => "^\[\d{4}"

        what => "previous"

        negate => true

        auto_flush_interval => 1

    }

  }

}

filter{

  grok {

    match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" }

  }

  date {

    match => [ "logdate", "YYYY-MM-dd HH:mm:ss" ]

    target => "@timestamp"

    timezone =>"+00:00"

  }

ruby {

        code => "event.set('timestamp', event.get('@timestamp').time.localtime - 8*60*60)"

    }

    ruby {

        code => "event.set('@timestamp', event.get('timestamp'))"

        remove_field => ["timestamp"]

    }

    ruby {

        code => "event.set('ct', event.get('create_time').time.localtime - 8*60*60)"

    }

    ruby {

        code => "event.set('create_time', event.get('ct'))"

        remove_field => ["ct"]

    }

  mutate{

    remove_field => "logdate"

  }

}

output {

  if [type] == "piao_2" {

    elasticsearch {

      hosts => ["elasticsearch:9200"]

      index => "piao-2-%{+YYYY.MM.dd}"

    }

  }

}


一定要注意对应的文件路径要正确!

3, 启动容器,docker-compose up -d 

4,  访问kibana;   IP:5601

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容