docker compose 部署ELK 8.X及监控

1. 前置环境

安装docker

安装docker-compose

相关版本:

ES:8.5.0

kibana:8.5.0

logstash:8.5.0

2. docker-compose yaml文件

# 在指定路径创建配置文件
vim docker-compose-es-kibana-logstash.yaml
version: "3"
services:
   elasticsearch: 
     restart: always
     image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0
     container_name: elasticsearch
     hostname: elasticsearch
     network_mode: host
     privileged: true
     ulimits:
      memlock:
        soft: -1
        hard: -1
     environment:
      - "ES_JAVA_OPTS=-Xms8192m -Xmx8192m"
      - "http.host=0.0.0.0"
      - "node.name=es_node01"
      - "cluster.name=es_cluster"
      - "discovery.type=single-node"
     ports:
      - "9200:9200"
      - "9300:9300"
     volumes:
       - "/opt/config/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"  
       - "/opt/config/es/plugins:/usr/share/elasticsearch/plugins:rw"
       - "/opt/data/es/data:/usr/share/elasticsearch/data:rw"
       
   kibana:
    restart: always
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:8.5.0
    network_mode: host
    environment:
      - XPACK_MONITORING_COLLECTION_ENABLED="true"
    ports:
      - "5601:5601"
    volumes:
      - "/opt/config/kibana/config:/usr/share/kibana/config"
      
   logstash:
     image: docker.elastic.co/logstash/logstash:8.5.0
     container_name: logstash
     network_mode: host
     ports:
       - "9600:9600"
     restart: always
     volumes:
       - "/opt/config/logstash/config:/usr/share/logstash/config"
       - "/opt/config/logstash/pipeline:/usr/share/logstash/pipeline"
       - "/opt/data/logstash:/usr/share/logstash/data"
       - "/opt/logs/logstash:/usr/share/logstash/logs"

3. elasticsearch 配置

  1. 数据存储映射路径配置777权限

    chmod -R 777 /opt/data/es/data
    
  2. es配置文件

    # 根据配置文件映射的路径,创建es配置文件
    vim /opt/config/es/config/elasticsearch.yml
    
    # 集群节点名称
    node.name: "es_node01"
    
    # 设置集群名称为elasticsearch
    cluster.name: "es_cluster"
    
    # 网络访问限制
    network.host: 0.0.0.0
    
    # 以单一节点模式启动
    discovery.type: single-node
    
    # 注意:ES 8.X的版本,需要使用 node.roles配置角色,否则启动报错
    #当前该节点是不是有资格竞选主节点
    #node.master: true
    #当前该节点是否存储数据
    #node.data: true
    node.roles: [master,data,remote_cluster_client]
    
    # 是否支持跨域
    http.cors.enabled: true
    
    # 表示支持所有域名
    http.cors.allow-origin: "*"
    
    # 设置映射端口
    http.port: 9200
    
    # 内部节点之间沟通端口
    transport.port: 9300
    
    # 内存交换的选项,官网建议为true
    bootstrap.memory_lock: true
    
    # 修改安全配置、关闭证书校验、启动xpack监控
    xpack.security.http.ssl:
      enabled: false
    xpack.security.transport.ssl:
      enabled: false
    xpack.security.enabled: false
    xpack.monitoring.collection.enabled: true
    
    # http传输内容的最大容量
    http.max_content_length: 200mb
    

4. logstash 配置

  1. 数据存储映射路径配置777权限

    chmod -R 777 /opt/data/logstash
    
  2. logstash配置文件

    vim /opt/config/logstash/config/logstash.yml
    
    # 开启xpack监控
    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.hosts: ["http://localhost:9200"]
    xpack.monitoring.collection.interval: 10s
    
  3. 日志文件配置

    vim /opt/config/logstash/config/log4j2.properties
    
    status = error
    name = LogstashPropertiesConfig
    
    appender.console.type = Console
    appender.console.name = plain_console
    appender.console.layout.type = PatternLayout
    appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n
    
    appender.json_console.type = Console
    appender.json_console.name = json_console
    appender.json_console.layout.type = JSONLayout
    appender.json_console.layout.compact = true
    appender.json_console.layout.eventEol = true
    
    rootLogger.level = ${sys:ls.log.level}
    rootLogger.appenderRef.console.ref = ${sys:ls.log.format}_console
    
  4. pipelines配置文件

    vim /opt/config/logstash/config/pipelines.yml
    
    # This file is where you define your pipelines. You can define multiple.
    # For more information on multiple pipelines, see the documentation:
    #   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
    
    - pipeline.id: main
      path.config: "/usr/share/logstash/pipeline"
    
  5. 配置logstash数据处理流程,依据实际项目需求配置,此处以input为kafka,output为es举例

    vim /opt/config/logstash/pipeline/logstash-kafka-es.conf
    
    input {
      kafka {
        bootstrap_servers => "localhost:9092"
        topics => ["topic1"]
        codec => "json"
      }
    }
    
    output {
      if [fields][type] == "topic1" {
        elasticsearch {
          hosts => ["http://localhost:9200"]
          index => "topic1-%{+YYYY.MM.dd}"
        }
      }
    }
    

5. kibana 配置

vim /opt/config/kibana/config/kibana.yml
# Default Kibana configuration for docker target
i18n.locale: zh-CN
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://localhost:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

#此处为新生成的kibana账号和密码
elasticsearch.username: "kibana"
elasticsearch.password: "123456"

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.hosts: ["http://localhost:9200"]
xpack.monitoring.kibana.collection.enabled: true
xpack.monitoring.kibana.collection.interval: 10000

6. docker compose 启动/停止

在docker-compose yaml所在的路径运行启动或停车命令

# 启动
docker-compose -f docker-compose-es-kibana-logstash.yaml up -d

# 停止
docker-compose -f docker-compose-es-kibana-logstash.yaml down

7. 访问测试

es:http://ip:9200

kibana:http://ip:5601

kibana 监控集群状态:kibana --> Management --> 堆栈监测
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: Docker-Compose是一个用于定义和运行多个Docker容器的工具。在使用Docker-Compose部署ELKElasticsearch, Logstash, Kibana)时,可以使用docker-compose.yml文件来定义容器的配置和依赖关系。\[1\] 根据引用\[2\]和引用\[3\]的内容,可以看出在部署ELK时,需要创建一个docker-compose.yml文件,并在其中指定输入日志的端口、配置logstash.conf文件等。具体的步骤如下: 1. 创建一个目录,比如/opt/docker_elk,用于存放相关文件。 2. 在/opt/docker_elk目录下创建docker-compose.yml文件,并在其中配置ELK组件的相关参数。 3. 创建logstash配置文件,一般存放在/opt/docker_elk/logstash目录下,并在logstash.conf文件中配置输入和输出的设置。 4. 启动docker-compose,可以使用命令sudo docker-compose up来启动ELK容器。 至于具体的ELK版本,根据提供的信息中没有明确指定,所以无法确定是部署elk8.*版本。如果有具体的版本要求,请提供更多的信息,以便给出更准确的回答。 #### 引用[.reference_title] - *1* [Docker - docker-compose安装ELK](https://blog.csdn.net/xuezhiwu001/article/details/124896803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Docker-Compose部署ELK](https://blog.csdn.net/weixin_44359151/article/details/129341044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值