当前位置: 首页 > 工具软件 > docker-elk > 使用案例 >

docker-compose ELK

谭新知
2023-12-01

1. docker-compose ELK

1.1. 简介

ELK 是三个开源软件的缩写, 分别表示: Elasticsearch, Logstash, Kibana, 它们都是开源软件。新增了一个 FileBeat, 它是一个轻量级的日志收集处理工具 (Agent), Filebeat 占用资源少, 适合于在各个服务器上搜集日志后传输给 Logstash, 官方也推荐此工具。

Elasticsearch 是个开源分布式搜索引擎, 提供搜集、分析、存储数据三大功能。它的特点有: 分布式, 零配置, 自动发现, 索引自动分片, 索引副本机制, restful 风格接口, 多数据源, 自动搜索负载等。主要负责将日志索引并存储起来, 方便业务方检索查询。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具, 支持大量的数据获取方式。一般工作方式为 c/s 架构, client 端安装在需要收集日志的主机上, server 端负责将收到的各节点日志进行过滤、修改等操作在一并发往 elasticsearch 上去。是一个日志收集、过滤、转发的中间件, 主要负责将各条业务线的各类日志统一收集、过滤后, 转发给 Elasticsearch 进行下一步处理。

Kibana 也是一个开源和免费的工具, Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面, 可以帮助汇总、分析和搜索重要数据日志。

更多详情可参见这篇文章: https://blog.csdn.net/qq_41475058/article/details/89840468

1.2. docker-compose.yml

version: '3.7'

services:

  # Elasticsearch Docker Images: https://www.docker.elastic.co/
  elasticsearch:
    container_name: elasticsearch
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
    environment:
      - xpack.security.enabled=false
      - discovery.type=single-node
      - ES_JAVA_OPTS: "-Xmx256m -Xms256m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
      - 9300:9300

  kibana:
    container_name: kibana
    image: docker.elastic.co/kibana/kibana:7.17.1
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - 5601:5601
    volumes:
      - /home/x/docker-composes/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
    depends_on:
      - elasticsearch

  logstash:
    container_name: logstash
    image: docker.elastic.co/logstash/logstash:7.17.1
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5044:5044"
    depends_on:
      - elasticsearch

volumes:
  elasticsearch-data:
    driver: local

1.3. troubleshooting

shell on host machine:

sudo sysctl -w vm.max_map_count=262144
sudo sysctl -p #使配置生效

from: https://www.elastic.co/guide/en/elasticsearch/reference/5.0/vm-max-map-count.html#vm-max-map-count

1.4. docs

  • Elasticsearch: http://localhost:9200
  • Logstash: http://localhost:5044
  • Kibana: http://localhost:5601

1.5. other elk

https://www.robertobandini.it/2021/01/31/how-to-install-the-elk-stack-using-docker-compose/

这个 elk docker 如果和 datadog 在同一台电脑上运行的话可能会有 5000 端口被占用的冲突, 可以参考这里解决 https://github.com/DataDog/datadog-agent/issues/4229#issuecomment-830210940

 类似资料: