Docker-compose部署ELK
admin
2023-03-07 20:40:58
0

                                                   Docker-compose部署单机ELK

环境

主机IP 192.168.0.9

Docker version 19.03.2

docker-compose version 1.24.0-rc1

elasticsearch version 6.6.1

kibana version 6.6.1

logstash version 6.6.1


一、ELK-dockerfile文件编写及配置文件

● elasticsearch

1、elasticsearch-dockerfile

FROM centos:latest
ADD elasticsearch-6.6.1.tar.gz  /usr/local/
COPY elasticsearch.yml /usr/local/elasticsearch-6.6.1/config/
COPY jdk1.8 /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
RUN groupadd elsearch && \
useradd elsearch -g elsearch -p elasticsearch && \
chown -R elsearch:elsearch /usr/local/elasticsearch-6.6.1 && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/shanghai" > /etc/timezone && \
yum install which -y && \
mkdir /opt/data && \
mkdir /opt/logs
EXPOSE 9200 9300
#主要是切换到elsearch用户启动es
USER elsearch
WORKDIR /usr/local/elasticsearch-6.6.1/bin/
ENTRYPOINT ["./elasticsearch"]

2、elasticsearch.yml

[root@localhost elasticsearch]# egrep  "^[^#]" elasticsearch.yml 
cluster.name: es-cluster
node.name: node-1
path.data: /opt/data
path.logs: /opt/logs
network.host: 0.0.0.0
http.port: 9200
cluster.routing.allocation.disk.threshold_enabled: true
cluster.routing.allocation.disk.watermark.low: 94%
cluster.routing.allocation.disk.watermark.high: 96%
cluster.routing.allocation.disk.watermark.flood_stage: 98%
discovery.zen.minimum_master_nodes: 1

● logstash

1、logstash-dockerfile

FROM centos:latest
ADD logstash-6.6.1.tar.gz /usr/local/
COPY logstash.yml /usr/local/logstash-6.6.1/config/
COPY logstash.conf /usr/local/logstash-6.6.1/config/
COPY jdk1.8 /usr/local/
COPY start.sh /start.sh
ENV JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
RUN mkdir /opt/data && \
mkdir /opt/logs && \
chmod +x /start.sh
ENTRYPOINT ["/start.sh"]

2、logstash-start.sh

#!/bin/bash
/usr/local/logstash-6.6.1/bin/logstash -f /usr/local/logstash-6.6.1/config/logstash.conf

3、logstash.yml

[root@localhost logstash]# egrep "^[^#]" logstash.yml 
path.data: /opt/data
path.logs: /opt/logs
pipeline.batch.size: 200

4、logstash.conf

input {
  file {
    path => "/usr/local/nginx/logs/access.log"
    type => "nginx"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
  file {
    path => "/var/log/secure"
    type => "secure"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
#详细说明可以查看我之前的博客
filter {
    grok {
        match => {
            "message" => '(?[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) - - (?\[[0-9]{1,2}\/[A-z]+\/[0-9]{4}\:[0-9]{2}\:[0-9]{2}\:[0-9]{2} \+[0-9]*\]) "(?[A-Z]+) (?[^ ]+) (?HTTP/\d\.\d)" (?[0-9]+) (?[0-9]+) "(?[^ ]|(http|https)://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/)" "(?(a-Z|0-9| |.)+)"'
        }
         remove_field => ["message","log","beat","offset","prospector","host","@version"]
    }
}
#output指向es容器
output {
 if [type] == "nginx" {
  elasticsearch {
    hosts => ["es:9200"]
    index => "nginx-%{+YYYY.MM.dd}"
        }
     }
  else if [type] == "secure" {
    elasticsearch {
    hosts => ["es:9200"]
    index => "secure-%{+YYYY.MM.dd}"
        }
     }
  }

● kibana

1、kibana-dockerfile

FROM centos:latest
ADD kibana-6.6.1-linux-x86_64.tar.gz   /usr/local/
COPY kibana.yml /usr/local/kibana-6.6.1-linux-x86_64/config/
COPY start.sh /start.sh
RUN  chmod +x /start.sh
EXPOSE 5601
ENTRYPOINT ["/start.sh"]

2、kibana.yml

[root@localhost kibana]# egrep "^[^#]" kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
#指向es容器的9200端口
elasticsearch.hosts: ["http://es:9200"]

3、kibana-start.sh

#!/bin/bash
/usr/local/kibana-6.6.1-linux-x86_64/bin/kibana


二、docker-compose,yml文件编写

[root@localhost elk_dockerfile]# cat docker-compose.yml 

version: '3.7'
services:
  elasticsearch:
    image: elasticsearch:elk
    container_name: es
    networks:
      - elk
    volumes:
      - /opt/data:/opt/data
      - /opt/logs:/opt/logs
    expose:
      - 9200
      - 9300
    restart: always
    depends_on:
      - logstash
      - kibana
  logstash:
    image: logstash:elk
    container_name: logstash
    networks:
      - elk
    volumes:
      - /opt/logstash/data/:/op/data
      - /opt/logstash/logs/:/opt/logs
      - /opt/elk/elk_dockerfile/logstash/logstash.conf:/usr/local/logstash-6.6.1/config/logstash.conf
      - /usr/local/nginx/logs:/usr/local/nginx/logs
      - /var/log/secure:/var/log/secure
    restart: always
  kibana:
    image: kibana:elk
    container_name: kibana
    ports:
      - 5601:5601
    networks:
      - elk
    volumes:
      - /opt/elk/elk_dockerfile/kibana/kibana.yml:/usr/local/kibana-6.6.1-linux-x86_64/config/kibana.yml
networks:
  elk:

compose文件version版本指向

Docker-compose部署ELK

三、访问界面

Docker-compose部署ELK

相关内容

热门资讯

黄土塬藏“算力密码”!中国电信... 在陇东黄土塬上,数字浪潮奔涌不息。作为国家 “东数西算” 工程的核心承载地,中国电信庆阳智算产业园正...
科沃斯加入清洁电器行业反虚假测... 【CNMO科技消息】5月8日,科沃斯官方微博宣布,科沃斯加入由中国家用电器协会指导、中国家电网发起成...
东华科技获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示东华科技(002140)新获得一项发明专利授权,专利名为“一种...
头部企业扎堆超百场无人机赛事,... 文/陈聆听 2026 年 5 月 4 日,山东诸城,山东天鸟航空负责人丁总与当地多位中小学校长会面,...
重磅签约!华为、中国银联战略合... 快科技5月8日消息,华为和中国银联在深圳正式签约,进一步深化双方的战略合作,还一起发布了自主创新和人...
胡锡进:日本已成中国“头号潜在... 日本高市早苗政府代表了日本政治思维,特别是对华策略最阴暗的一面,这个女人绝对是“政治女巫”级别的。中...
“190元榴莲遭仅退款”商家:... 近日,河南濮阳一冷冻榴莲果肉商家“程大叔”反映,自己遭遇一名买家恶意“仅退款”。为讨回公道,4月28...
新价格项目落地,让医疗真创新更... “让瘫痪的人能动、心衰末期的人能活、万里之外能手术”,这些看似奇迹的变化,背后藏着一个关键支撑—近三...
苹果宣布在印度扩大三项环保举措... 【CNMO科技消息】近日,苹果宣布扩大在印度的环保举措,共推出三个相关项目,覆盖清洁能源、塑料污染治...
华为在数字中国建设峰会:只有根... 作者:王聪彬 “根技术、落地”是华为在第九届数字中国建设峰会想要传递出的两个关键字。 “根技术”顾名...