首页 > 其他分享 >使用docker-compose部署ELK

使用docker-compose部署ELK

时间:2022-11-03 22:11:25浏览次数:75  
标签:ELK filebeat compose kibana logstash elasticsearch docker yml

文件目录结构

  • elk
    • docker-compose.yml
    • elasticsearch.yml
    • kibana.yml
    • logstash.yml
    • logstash.conf
    • filebeat.yml
    • data/
      • elasticsearch/
      • logs/
      • password.txt

data/elasticsearch/ 文件夹是用来保存elasticsearch数据用的
data/password.txt 文件是用来保存密码的,如果记得住密码,请忽略
data/logs 需要采集的日志的目录,也就是你应用写日志的位置,正常情况不会这么干,这里只是用来测试效果

docker-compose.yml 文件

version: "3"
services:
  es:
    image: elasticsearch:7.6.1
    labels:
      co.elastic.logs/enabled: "false"
    hostname: docker-es
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./data/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    image: kibana:7.6.1
    labels:
      co.elastic.logs/enabled: "false"
    hostname: docker-kibana
    ports:
      - "5601:5601"
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
    depends_on:
      - es

  logstash:
    image: logstash:7.6.1
    hostname: docker-logstash
    ports:
      - "5044:5044"
      - "9600:9600"
    volumes:
      - ./logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
      - ./data/logs:/logs
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "LS_OPTS=--config.reload.automatic"
    depends_on:
      - es

  filebeat:
    image: docker.elastic.co/beats/filebeat:7.6.1
    labels:
      co.elastic.logs/enabled: "false"
    user: root
    hostname: docker-filebeat
    volumes:
      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml
      - "/var/lib/docker/containers:/var/lib/docker/containers:ro"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    depends_on:
      - es

elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.http.ssl.enabled: false
xpack.security.transport.ssl.enabled: false

kibana.yml

server:
  host: "0.0.0.0"
  port: 5601

# ES
elasticsearch:
  # 这里替换成自己服务器的IP,不能用127.0.0.1和0.0.0.0
  hosts: ["http://docker-es:9200"]
  username: "kibana_system"
  password: "xxxxx"

# 汉化
i18n.locale: "zh-CN"

logstash.yml

http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline/*.conf
xpack.monitoring.enabled: false

logstash.conf

input {
    file {
        path => "/logs/*/*.log"
        start_position => "beginning"
    }
}

output {
    elasticsearch {
        hosts => [ "http://docker-es:9200" ]
        user => "elastic"
        password => "xxxx"
        index => "logstash-%{+YYYY-MM-dd}"
    }
}

filebeat.yml

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

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

processors:
  - add_cloud_metadata: ~

output.elasticsearch:
  hosts: 'docker-es:9200'
  username: 'elastic'
  password: 'xxxx'

ps:上面的es地址同kibana.yml,这里替换成自己服务器的IP,不能用127.0.0.1和0.0.0.0

需要的基本上都搞好了,可以开始运行了,启动命令:

docker-compose up -d

 

查看容器状态,如果起动失败,有可能是这几个yml的文件的权限不够,把这几权限赋予755,切记这里的logstash日志输入输出配置文件,一定要授权755权限,不能777或其他,如不授权ELK读取不了此文件

 

 

 

 现在访问kibana的时候,是访问不了的,因为ES设置了密码的,我们的yml里面没有配置,我们需要重置一下密码

命令:

docker-compose exec -T es elasticsearch-setup-passwords auto --batch

 

 

 然后重新修改配置文件, kibana.ymllogstash.conffilebeat.yml 改对应的ES的密码就可以了,也就是上文的账号:elastic  密码:EbtzR4FZeHTTBjtBHiHL,注意账号和密码不要搞错了,然后我们停止,再启动

docker-compose down
docker-compose up -d

然后访问http://IP:5601/,需要等待加载一会,直至出现下列界面,输入刚刚我们重置的ES账号和密码

 

 

 输入密码登录进去出现以下界面

 

标签:ELK,filebeat,compose,kibana,logstash,elasticsearch,docker,yml
From: https://www.cnblogs.com/mihutao/p/16856029.html

相关文章

  • arm架构安装Docker
    #查看Linux内核版本uname-r4.18.0-80.7.2.el7.aarch64#或者使用uname-a#下载docker安装脚本curl-fsSLget.docker.com-oget-docker.sh#执行脚本安装docker,......
  • Docker基础和常用命令
    Docker基础和常用命令一,Docker简介1.1,什么是DockerDocker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及OverlayFS类的Unio......
  • docker运行mysql
    ......
  • 用Docker搭建Python环境
    步骤1创建项目目录$cd/PATH/TO$mkdirpython-demo2下载python镜像1#下载镜像2dockerpullpython:3.834#查看镜像5dockerimages3创建pytho......
  • dockerNginx代理本地目录
    dockerNginx代理本地目录ssl_certificatecert/5900588_test.zk.limengkai.work.pem;ssl_certificate_keycert/5900588_test.zk.limengkai.work.key;dockerrun-tdi......
  • Jenkins 构建的时候提示 DOCKER_HOST 错误
    我们在使用Jenkins构建我们的一个Docker项目的时候提示:[ERROR]Failedtoexecutegoalio.fabric8:docker-maven-plugin:0.40.2:build(default)onprojectapi:Ex......
  • Docker Desktop笔记3(VS Code-dev-containers)
    1、VSCode创建开发容器指定基础镜像:(README:​​vscode-dev-containers/containers/python-3atv0.202.3·microsoft/vscode-dev-containers·GitHub​​)FROMmcr.micro......
  • 使用docker搭建一个WordPress网站
     【整体说明】网站需要三个容器:WordPress、MariaDB、Nginx,他们的关系如下图。这是一个典型的网站,mariadb作为后方的关系型数据库,端口号是3306;wordpress是中间的应用服务......
  • 从0开始梳理django项目_1.始于docker
    基础准备看了篇文章,对比了一些构建django项目的docker环境,发觉自己以前了解的不够全面。这次尝试其中4个。不太记得构建dockerfile文件的书写了,后边还要升级到comp......
  • Docker简介
    什么是Dokcer  Docker是一个开源的应用容器引擎,基于Go语言并遵循Apache2.0协议开源,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的L......