docker安装efk

[root@elk elfk]# cat docker-compose.yml
version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
    container_name: elasticsearch
    volumes:
      - ./elasticsearch:/usr/share/elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    restart: always

  kibana:
    image: docker.elastic.co/kibana/kibana:7.10.2
    container_name: kibana
    ports:
      - "5601:5601"
    volumes:
      - ./kibana:/usr/share/kibana
    restart: always

  filebeat:
    image: elastic/filebeat:7.10.2
    container_name: filebeat1
    volumes:
      - ./filebeat:/usr/share/filebeat
    restart: always
    user: root

  logstash:
    image: logstash:7.17.20
    container_name: logstash
    volumes:
      - ./logstash:/usr/share/logstash
    restart: always

先直接用docker run启动 不要挂载文件夹  将elasticsearch文件夹docker cp下来修改配置文件

最后用docker-compose启动


其他程序和上述一样

原因直接建目录挂载会有权限问题,导致启动失败

配置文件

[root@elk elfk]# cat elasticsearch/config/elasticsearch.yml 
cluster.name: "es-cluster"
network.host: 0.0.0.0
discovery.seed_hosts: ["10.10.66.2","10.10.66.5","10.10.66.6"]
node.name: 10.10.66.2
cluster.initial_master_nodes: ["10.10.66.2"]


[root@elk elfk]# cat kibana/config/kibana.yml 
#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.requestTimeout: 60000
elasticsearch.hosts: [ "http://10.10.66.2:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"
[root@elk elfk]# 

修改后重新启动就可以了
 

这是批量安装filebeat的ansiable  可以学习参考

[root@elk ansiable]# cat playbook-filebeat.yaml 
---
- name: Transfer file with password authentication
  hosts: host_group  # 替换为你的主机组名称
  gather_facts: yes
  vars:
    ansible_user: "root"
    ansible_password: "Qwe123!!"
  tasks:
    - name: 复制filebeat-start.sh文件到远程主机
      copy:
        src: "/elfk/filebeat-start.sh"
        dest: "/elfk/"
    - name: 复制filebeat.tar文件到远程主机
      copy:
        src: "/elfk/filebeat.tar"
        dest: "/elfk/"
    - name: 复制docker-compose.yml文件到远程主机
      copy:
        src: "/elfk/docker-compose.yml"
        dest: "/elfk/"
    - name: 脚本授权
      command: "chmod 777 /elfk/filebeat-start.sh"
    - name: 执行启动脚本
      command: "/elfk/filebeat-start.sh"
[root@elk ansiable]# cat playbook.yaml
---
- name: Transfer file with password authentication
  hosts: host_group  # 替换为你的主机组名称
  gather_facts: yes
  vars:
    ansible_user: "root"
    ansible_password: "Qwe123!!"
  tasks:
    - name: 复制文件到远程主机
      copy:
        src: "/elfk/{{ item.src }}"
        dest: "/elfk/"
      loop:
        - { src: "filebeat.tar" }
        - { src: "filebeat" }
        - { src: "docker-compose.yml" }

    - name: 修改 filebeat.yml 文件权限
      command: chmod go-w /elfk/filebeat/filebeat.yml
    - name: 重启 Docker 服务
      systemd:
        name: docker
        state: restarted
        enabled: yes

    - name: 载入 Filebeat 镜像并启动容器
      shell: "docker load -i /elfk/filebeat.tar && docker-compose up -d filebeat"
      args:
        executable: /bin/bash
    - name: 载入 Filebeat 镜像
      shell: docker load -i /elfk/filebeat.tar
      args:
        executable: /bin/bash

    - name: 启动 Filebeat 容器
      command: /usr/local/bin/docker-compose -f /elfk/docker-compose.yml up -d filebeat
      args:
        executable: /bin/bash

    - name: 检查容器状态
      docker_container:
        name: filebeat
      register: container_info

    - name: 显示容器状态
      debug:
        var: container_info

[root@elk ansiable]# ll
总用量 12
-rw-r--r-- 1 root root  737 4月  22 23:20 playbook-filebeat.yaml
-rw-r--r-- 1 root root 1295 4月  22 19:51 playbook.yaml
-rw-r--r-- 1 root root  309 4月  22 13:18 playbook.yaml.bak
[root@elk ansiable]# cat playbook.yaml.bak 
---
- name: Transfer file with password authentication
  hosts: host_group  # 替换为你的主机组名称
  gather_facts: yes
  vars:
    ansible_user: root
    ansible_password: Qwe123!!
  tasks:
    - name: Install rsync package
      ansible.builtin.package:
        name: rsync
        state: present

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于使用Docker部署EFK(Elasticsearch, Fluentd, Kibana)的步骤如下: 1. 安装DockerDocker Compose:确保你的系统上已经安装DockerDocker Compose。 2. 创建docker-compose.yml文件:在你的工作目录下创建一个名为docker-compose.yml的文件,并将以下内容复制到文件中: ```yaml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 volumes: - esdata:/usr/share/elasticsearch/data fluentd: image: fluent/fluentd:latest container_name: fluentd volumes: - ./fluentd/conf:/fluentd/etc - ./fluentd/logs:/fluentd/log ports: - 24224:24224 - 24224:24224/udp kibana: image: docker.elastic.co/kibana/kibana:7.10.0 container_name: kibana ports: - 5601:5601 environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 volumes: esdata: ``` 3. 创建Fluentd配置文件:在与docker-compose.yml文件相同的目录下创建一个名为fluentd的文件夹,并在其中创建一个名为conf的文件夹。然后,在conf文件夹中创建一个名为fluent.conf的文件,并将以下内容复制到文件中: ``` <source> @type forward port 24224 bind 0.0.0.0 </source> <match **> @type elasticsearch hosts elasticsearch:9200 logstash_format true logstash_prefix fluentd include_tag_key true flush_interval 5s </match> ``` 4. 启动EFK容器:在终端中,进入到包含docker-compose.yml文件的目录,并运行以下命令启动EFK容器: ``` docker-compose up -d ``` 这将启动Elasticsearch、Fluentd和Kibana容器,并将它们连接在一起。 5. 访问Kibana界面:在浏览器中访问`http://localhost:5601`,你应该可以看到Kibana的登录页面。默认情况下,用户名和密码均为`elastic`。 现在,你已经成功地使用Docker部署了EFK。你可以配置Fluentd来收集和发送日志到Elasticsearch,并使用Kibana进行日志的可视化和分析。请注意,这只是一个简单的示例配置,你可以根据自己的需求进行进一步的配置和定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值