用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 # 容器启动脚本
复制代码 系统版本
- [root@master ~]# 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-64
复制代码 Docker版本
- [root@master ~]# 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的阿里云在线源- [root@test-abc ~]#yum install yum-utils -y
- [root@test-abc~]#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- [root@test-abc ~]# yum clean all && yum makecache
复制代码 修改机器内核参数- [root@test-abc ~]#modprobe br_netfilter
- [root@test-abc ~]#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
复制代码 [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 过滤,从而确保网络功能的正常运行。
这个参数启用了 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
- #验证时间
- [root@master ~]# date
- 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 |