绘纵 发表于 2025-5-31 23:46:12

用dokcer搭建EFK(7.5.2)

用dokcer搭建EFK(7.5.2)

参考文章:手把手系列 - 使用docker容器搭建efk8 - hukey - 博客园
├── elasticsearch       # elasticsearch:7.5.2
│   ├── data        # es数据存储目录
│   ├── logs        # es日志目录
│   ├── plugins        # 插件目录
│   └── start.sh # 容器启动脚本
├── filebeat        # filebeat:7.5.2
│   ├── filebeat.docker.yml        # 收集 docker 容器日志
│   └── start.sh        # 容器启动脚本
├── images        # 整体打包的基础镜像(elasticsearch:7.5.2 | filebeat:7.5.2 | kibana:7.5.2)
│   └── efk-images-8.2.2.tar.gz
└── kibana        # kibana:7.5.2
    └── start.sh        # 容器启动脚本系统版本

# hostnamectl
   Static hostname: node2
         Icon name: computer-vm
         Chassis: vm
      Machine ID: 1a1578f2f4274659be8e4d3d1367b032
         Boot ID: e810201df9b9455a97249868d1e22b8f
    Virtualization: kvm
Operating System: CentOS Linux 7 (Core)                #操作系统
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.119.1.el7.x86_64                #内核
      Architecture: x86-64Docker版本

# docker -v
Docker version 26.1.4, build 5650f9b主机规划

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

修改主机名

#修改主机名
hostnamectl set-hostname master && bash

# 配置主机hosts文件,相互之间通过主机名互相访问
vim/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.9.207 master

#测试
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的阿里云在线源
#yum install yum-utils -y

#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum clean all && yum makecache修改机器内核参数
#modprobe br_netfilter
#vim /etc/sysctl.d/docker.conf 输入如下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1#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 主机将收到的数据包从一个网络接口转发到另一个网络接口,从而实现跨节点通信。
校对时间

#使用chronyd服务从网络同步时间
#企业中建议配置内部的时间同步服务器
#安装chrony服务
sudo yum install chrony -y
#启动服务
sudo systemctl start chronyd
#开机自启动
sudo systemctl enable chronyd
#检查chronyd服务是否存在
systemctl list-units --type=service | grep chronyd
#验证时间
# date
Wed Apr 23 17:07:32 CST 2025Dokcer的安装

# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# sudo mkdir -p /etc/docker#阿里云的镜像加速器经常被封,无法使用!!!# sudo tee /etc/docker/daemon.json
页: [1]
查看完整版本: 用dokcer搭建EFK(7.5.2)