用docker-compose安装efk和使用

系统版本为ubuntu 24.04

相关组件,filebeat:8.10.2 ,kibana:8.10.2 ,elasticsearch:8.10.2 

先运行docker network create 命令创建网络,我创建的名字是logging

docker network create logging

docker-compose文件

root@monitor:/home/monitor/efk# cat docker-compose.yml 
version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2
    container_name: elasticsearch
    networks:
      - logging
    volumes:
      - elasticsearch-data:/usr/share/elasticsearch/data
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - ES_JAVA_OPTS=-Xms512m -Xmx1g
    ports:
      - "9200:9200"

  kibana:
    image: docker.elastic.co/kibana/kibana:8.10.2
    container_name: kibana
    networks:
      - logging
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
      - I18N_LOCALE=zh-CN
    ports:
      - "5601:5601"

  filebeat:
    image: docker.elastic.co/beats/filebeat:8.10.2
    container_name: filebeat
    networks:
      - logging
    volumes:
      - /etc/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/log:/var/log
    user: root
    command: filebeat -e -strict.perms=false
    depends_on:
      - elasticsearch

networks:
  logging:

volumes:
  elasticsearch-data:
    driver: local

然后根据绑定的数据卷,进到filebeat的yml文件目录下

root@monitor:/home/monitor/efk# cd /etc/filebeat/
root@monitor:/etc/filebeat# ls
filebeat.yml

可以看到filebeta.yml文件已经自动创建了,手动修改它,先将里面的内容清空,添加如下内容

root@monitor:/etc/filebeat# cat filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
  fields:
    project: ms
    app: nginx
- type: log
  enabled: true
  paths:
    - /var/log/messages
  fields:
    project: cu
    app: messages
    
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"
 
output.elasticsearch:
  hosts: ["http://192.168.2.96:9200"]
  index: "%{[fields.project]}-%{[fields.app]}-%{+yyyy.MM.dd}"

最后的output中的hosts的ip地址是elasticsearch的ip地址和监听端口。

可以用docker ps命令查看是否在相关容器是否在运行

然后打开浏览器,输入服务器ip:5601,如下打开

在索引模板中可以查看到创建的filebeat模板已经加载成功了

创建数据视图

查看创建的日志视图

可以将filebeat装在其他服务器上,就可以实现多服务器的日志收集

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过docker compose可以一次性部署Elasticsearch、Filebeat和Kibana(EFK)。你需要使用以下镜像: - docker pull store/elastic/filebeat:7.6.2 - docker pull elasticsearch:7.6.2 - docker pull kibana:7.6.2 在docker compose文件中,你可以创建一个包含两个Elasticsearch节点的集群。其中一个节点(es01)监听本地主机的9200端口,另一个节点(es02)通过Docker网络与es01通信。为了保持数据的一致性,你可以将数据目录(data01和data02)挂载到Docker存储节点上。如果目录不存在,docker compose会在启动集群时自动创建它们(默认位置为/var/lib/docker/volumes/)。 在Filebeat和Kibana的配置中,你需要将Elasticsearch的主机地址改为集群中监听9200端口的es01节点。 以下是一个示例的docker compose文件部分内容(假设为filebeat.docker-compose.yml): ``` version: '3' services: elasticsearch: image: elasticsearch:7.6.2 ports: - 9200:9200 volumes: - data01:/path/to/data01 filebeat: image: store/elastic/filebeat:7.6.2 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/containers:/var/lib/docker/containers configs: - source: filebeat-config target: /usr/share/filebeat/filebeat.yml kibana: image: kibana:7.6.2 environment: - ELASTICSEARCH_HOSTS=es01:9200 ports: - 5601:5601 volumes: data01: configs: filebeat-config: file: ./filebeat.yml ``` 请注意,以上仅为示例,你可能需要根据实际情况进行调整。另外,为了解决一些常见问题,你可能需要确保正确设置了vm.max_map_count,并了解如何手动创建Kibana节点并加入集群。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值