找回密码
 立即注册
首页 业界区 安全 用dokcer搭建EFK(7.5.2)

用dokcer搭建EFK(7.5.2)

绘纵 6 天前
用dokcer搭建EFK(7.5.2)

参考文章:手把手系列 - 使用docker容器搭建efk8 - hukey - 博客园
  1. ├── elasticsearch         # elasticsearch:7.5.2
  2. │   ├── data        # es数据存储目录
  3. │   ├── logs        # es日志目录
  4. │   ├── plugins        # 插件目录
  5. │   └── start.sh # 容器启动脚本
  6. ├── filebeat        # filebeat:7.5.2
  7. │   ├── filebeat.docker.yml        # 收集 docker 容器日志
  8. │   └── start.sh        # 容器启动脚本
  9. ├── images        # 整体打包的基础镜像(elasticsearch:7.5.2 | filebeat:7.5.2 | kibana:7.5.2)
  10. │   └── efk-images-8.2.2.tar.gz
  11. └── kibana        # kibana:7.5.2
  12.     └── start.sh        # 容器启动脚本
复制代码
系统版本
  1. [root@master ~]# hostnamectl
  2.    Static hostname: node2
  3.          Icon name: computer-vm
  4.            Chassis: vm
  5.         Machine ID: 1a1578f2f4274659be8e4d3d1367b032
  6.            Boot ID: e810201df9b9455a97249868d1e22b8f
  7.     Virtualization: kvm
  8.   Operating System: CentOS Linux 7 (Core)                #操作系统
  9.        CPE OS Name: cpe:/o:centos:centos:7
  10.             Kernel: Linux 3.10.0-1160.119.1.el7.x86_64                #内核
  11.       Architecture: x86-64
复制代码
Docker版本
  1. [root@master ~]# docker -v
  2. Docker version 26.1.4, build 5650f9b
复制代码
主机规划

服务IP地址端口ElasticSearch192.168.9.2099200Kibana192.168.9.2085601Filebeat192.168.9.207系统初始化

修改主机名
  1. #修改主机名
  2. hostnamectl set-hostname master && bash
  3. # 配置主机hosts文件,相互之间通过主机名互相访问  
  4. vim/etc/hosts
  5. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  6. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  7. 192.168.9.207 master
  8. #测试
  9. ping -c 4 -s 1000 master        #指定发送四个数据包,每个数据包1000字节
复制代码
备注:Linux机器配置主机名的用处:

  • 标识主机:主机名是用来标识计算机或网络设备的名称。通过配置主机名,可以使得其他计算机或网络服务更容易地识别和定位该主机。在网络环境中,主机名是在进行网络通信时进行标识的重要信息之一。
  • 管理网络服务:一些网络服务和应用程序可能需要知道主机的名称才能正常运行。通过配置主机名,可以确保这些服务能够正确地识别和绑定到正确的主机上。
  • 方便管理:在管理多台服务器或设备时,通过为每台设备配置唯一的主机名可以更轻松地进行识别和管理。这在进行系统日志分析、远程管理以及配置文件管理时特别有用。
  • 日志记录:主机名通常会出现在系统日志中,以标识生成日志的主机。通过主机名,可以更容易地跟踪和管理日志,特别是在分布式系统中。
  • 安全性:在一些情况下,主机名也用于识别访问权限。例如,通过配置防火墙规则或访问控制列表(ACL)时,可以基于主机名来限制对特定主机的访问。
关闭selinux 和 firewalld

为什么要关闭selinux?
SELinux 是 Linux 系统的一种安全机制,可以限制系统资源(如文件、网络等)的访问,提高系统的安全性。在 docker运行过程中,需要访问系统资源,但 SElinux 可能会限制访问,从而影响 docker的运行。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
备注:修改selinux配置文件之后,重启linux机器,selinux配置才能永久生效,重启之后,登录到机器,执行如下命令:
getenforce
如果显示Disabled说明selinux已经关闭
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
配置国内yum源

配置国内安装docker的阿里云在线源
  1. [root@test-abc ~]#yum install yum-utils -y
  2. [root@test-abc~]#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. [root@test-abc ~]# yum clean all && yum makecache
复制代码
修改机器内核参数
  1. [root@test-abc ~]#modprobe br_netfilter
  2. [root@test-abc ~]#vim /etc/sysctl.d/docker.conf
复制代码
输入如下内容:
  1. net.bridge.bridge-nf-call-ip6tables = 1
  2. net.bridge.bridge-nf-call-iptables = 1
  3. net.ipv4.ip_forward = 1
复制代码
[root@test-abc~]#sysctl -p /etc/sysctl.d/docker.conf :sysctl 将读取 /etc/sysctl.d/docker.conf文件中的参数,并将其应用到当前系统。
这些参数的含义是:

  • net.bridge.bridge-nf-call-ip6tables = 1:
这个参数启用了 IPv6 的iptables netfilter hook,允许 Linux 内核在网络层面上进行 IPv6 数据包的过滤和处理。在 Kubernetes 中,这个参数通常需要启用,因为 Kubernetes 网络通常是基于 iptables 实现的,而且在一些网络插件中可能会使用到 IPv6。这个参数的启用确保了 Linux 内核在处理 IPv6 数据包时会经过 iptables 过滤,从而确保网络功能的正常运行。

  • net.bridge.bridge-nf-call-iptables = 1:
这个参数启用了 IPv4 的iptables netfilter hook,类似于前一个参数,但是针对 IPv4 数据包。它允许 Linux 内核在网络层面上进行 IPv4 数据包的过滤和处理。在 Kubernetes 中,这个参数通常需要启用,因为 Kubernetes 网络通常是基于 iptables 实现的,而且在一些网络插件中可能会使用到 Ipv4。这个参数的启用确保了 Linux 内核在处理 Ipv4 数据包时会经过 iptables 过滤,从而确保网络功能的正常运行。

  • net.ipv4.ip_forward = 1:
这个参数启用了 Linux 内核的 IP 转发功能,允许 Linux 主机将收到的数据包从一个网络接口转发到另一个网络接口。在 Kubernetes 中,Pod 可能会跨越多个节点进行通信。例如,当一个 Pod 需要访问另一个 Pod 或外部服务时,网络流量可能需要通过不同的节点进行路由。启用 IP 转发功能允许 Linux 主机将收到的数据包从一个网络接口转发到另一个网络接口,从而实现跨节点通信。
校对时间
  1. #使用chronyd服务从网络同步时间
  2. #企业中建议配置内部的时间同步服务器
  3. #安装chrony服务
  4. sudo yum install chrony -y
  5. #启动服务
  6. sudo systemctl start chronyd
  7. #开机自启动
  8. sudo systemctl enable chronyd
  9. #检查chronyd服务是否存在
  10. systemctl list-units --type=service | grep chronyd
  11. #验证时间
  12. [root@master ~]# date
  13. Wed Apr 23 17:07:32 CST 2025
复制代码
Dokcer的安装

[code][root@node1 ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin[root@node1 ~]# sudo mkdir -p /etc/docker#阿里云的镜像加速器经常被封,无法使用!!![root@node1 ~]# sudo tee /etc/docker/daemon.json
您需要登录后才可以回帖 登录 | 立即注册