一、离线服务包部署规划
|----------------|--------------------------------------|-----------------------------------------------------------------------------|
| 主机IP | 系统版本 | 部署服务包 |
| 192.168.63.208 | CentOS Linux release 7.9.2009 (Core) | elasticsearch-7.11.1-linux-x86_64.tar.gz + jdk-11.0.10_linux-x64_bin.tar.gz |
| 192.168.63.209 | CentOS Linux release 7.9.2009 (Core) | kibana-7.11.1-linux-x86_64.tar.gz |
| 192.168.63.210 | CentOS Linux release 7.9.2009 (Core) | logstash-7.11.1-linux-x86_64.tar.gz + jdk-11.0.10_linux-x64_bin.tar.gz |
二、前置标准化配置
#查看系统版本信息
uname -a
cat /etc/redhat-release
所有服务器通用初始化
vi /etc/sysconfig/network-scripts/ifcfg-ens33
cat /etc/sysconfig/network-scripts/ifcfg-ens33
.......................................
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6f45d4ba-25db-4de7-b0e8-5f2731b3c2d9"
DEVICE="ens33"
ONBOOT="yes"
IPADDR0=192.168.63.208 #按需配置IP地址
PREFIX0=24
GATEWAY0=192.168.63.2
DNS1=114.114.114.114
DNS2=8.8.8.8
.........................................
systemctl restart network
ping www.baidu.com
关闭防火墙 / SELinux / 交换分区(必须)
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭 SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
# 永久关闭交换分区
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 确认关闭(无输出即为成功)
free -m | grep Swap
#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.63.208 208
192.168.63.209 209
192.168.63.210 210
EOF
#修改对应节点主机名;
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
#配置阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 清空缓存、重建yum缓存
yum clean all && yum makecache
# 安装时间同步工具
yum install -y chrony
# 注释掉原有时间服务器
sed -i 's/^pool /#pool /g' /etc/chrony.conf
# 添加阿里云时间服务器
echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
# 设置开机自启并立即启动
systemctl enable --now chronyd
# 查看时间同步源状态
chronyc sources

三、离线包部署
在有网的环境下载离线包,上传至服务器
jdk离线包,下载后可改名
https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23+9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz
elasticsearch离线包
https://mirrors.huaweicloud.com/elasticsearch/7.11.1/elasticsearch-7.11.1-linux-x86_64.tar.gz
logstash离线包
https://artifacts.elastic.co/downloads/logstash/logstash-7.11.1-linux-x86_64.tar.gz
kibana离线包
https://mirrors.huaweicloud.com/kibana/7.11.1/kibana-7.11.1-linux-x86_64.tar.gz
192.168.63.208服务器 JDK + Elasticsearch 7.11.1 部署(含开机自启、重启自动访问)
把离线包上传至data文件夹
# 修复最大文件描述符软限制
echo "* soft nofile 65535" >> /etc/security/limits.conf
# 修复最大文件描述符硬限制
echo "* hard nofile 65535" >> /etc/security/limits.conf
# 配置虚拟内存上限(ES必须)
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
# 内核参数立即生效
sysctl -p
# 进入数据目录
cd /data
# 解压JDK11
tar -xzf jdk-11.0.10_linux-x64_bin.tar.gz
# 移动JDK到安装目录
mv jdk-11.0.10 /usr/local/jdk/
# 配置JDK环境变量
tee -a /etc/profile <<-'BASH'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
BASH
# 查看环境变量是否写入
tail -5 /etc/profile
# 使环境变量生效
source /etc/profile
# 验证JDK
java -version
# 解压ES
tar -xzf elasticsearch-7.11.1-linux-x86_64.tar.gz
# 移动ES到安装目录
mv elasticsearch-7.11.1 /usr/local/elasticsearch
# 进入ES配置目录
cd /usr/local/elasticsearch/config/
# 修改ES监听地址为0.0.0.0(允许外部访问)
sed -i -e '/network\.host/s/#//g' -e'/network\.host/s/192.168.0.1/0.0.0.0/g' elasticsearch.yml
# 启用节点名称
sed -i '/node.name/s/#//g' elasticsearch.yml
# 单节点模式,删除node-2
sed -i -e '/cluster\.initial/s/\, \"node-2\"//g' -e '/cluster\.initial/s/#//g' elasticsearch.yml
# 创建elk用户
useradd elk
# 授权目录权限
chown -R elk:elk /usr/local/elasticsearch/
开机自启配置
# 创建系统服务文件
tee /etc/systemd/system/elasticsearch.service <<-'EOF'
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
After=network.target
[Service]
Type=forking
User=elk
Group=elk
LimitNOFILE=65535
LimitNPROC=4096
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -d
Restart=always
WorkingDirectory=/usr/local/elasticsearch
[Install]
WantedBy=multi-user.target
EOF
# 重新加载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable elasticsearch
# 启动Elasticsearch
systemctl start elasticsearch
# 查看启动状态
systemctl status elasticsearch
# 验证ES是否可访问
curl 127.0.0.1:9200
# 查看端口监听
netstat -tnlp|grep -E "9200|9300"

192.168.63.209服务器 部署Kibana 7.11.1
把离线包上传至data文件夹
# 进入安装包存放目录/data
cd /data
# 解压kibana 7.11.1压缩包
tar -xzf kibana-7.11.1-linux-x86_64.tar.gz
# 将解压后的kibana移动到系统安装目录/usr/local/kibana
mv kibana-7.11.1-linux-x86_64 /usr/local/kibana
# 查看kibana安装目录文件详情,确认安装成功
ls -l /usr/local/kibana
# 进入kibana配置文件目录
cd /usr/local/kibana/config/
# 查看配置目录下所有文件
ls -la
# 查看kibana默认配置文件内容
cat kibana.yml
# 开启kibana服务端口 5601(取消#注释)
sed -i '/server.port/s/#//g' kibana.yml
# 开启监听地址,取消注释并将localhost改为0.0.0.0(允许所有IP访问)
sed -i -e '/server.host/s/#//g' -e '/server.host/s/localhost/0.0.0.0/g' kibana.yml
# 开启ES连接地址,取消#注释并指向208服务器的ES地址
sed -i -e '/elasticsearch.hosts/s/#//g' -e 's|http://localhost:9200|http://192.168.63.208:9200|g' kibana.yml
# 开启中文国际化配置(取消#注释)
sed -i '/i18n.locale/s/#//g' kibana.yml
# 将英文界面改为中文界面 zh-CN
sed -i '/i18n.locale/s/en/zh-CN/g' kibana.yml
# 查看修改后的kibana配置,确认参数正确
cat kibana.yml
# 授权kibana目录权限(避免启动报错)
chown -R root:root /usr/local/kibana
创建开机自启配置
# 创建系统服务文件,配置kibana开机自启
tee /etc/systemd/system/kibana.service <<-'EOF'
[Unit]
Description=Kibana
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/local/kibana/bin/kibana --allow-root
Restart=always
WorkingDirectory=/usr/local/kibana
[Install]
WantedBy=multi-user.target
EOF
# 重新加载系统服务配置
systemctl daemon-reload
# 设置kibana开机自启
systemctl enable kibana
# 启动kibana服务
systemctl start kibana
# 查看kibana启动状态
systemctl status kibana
# 查看kibana进程是否正常运行
ps -ef|grep node
# 查看kibana 5601端口是否监听成功
netstat -tnpl|grep -aiwE 5601
# 浏览器访问地址:http://192.168.63.209:5601/


192.168.63.210 服务器 JDK11 + Logstash7.11.1
把离线包上传至data文件夹
# 进入data安装包目录
cd /data
# 解压 JDK11 安装包
tar -xzf jdk-11.0.10_linux-x64_bin.tar.gz
# 移动jdk到系统目录
mv jdk-11.0.10 /usr/local/jdk/
# 写入全局JDK环境变量
tee -a /etc/profile <<-'BASH'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
BASH
# 查看环境变量写入是否成功
tail -5 /etc/profile
# 重载环境变量,立即生效
source /etc/profile
# 验证jdk安装是否成功
java -version
# 解压 logstash 压缩包
tar -xzf logstash-7.11.1-linux-x86_64.tar.gz
# 移动logstash到系统目录
mv logstash-7.11.1 /usr/local/logstash
# 查看logstash目录结构
ls -l /usr/local/logstash
# 自定义创建logstash配置存放目录
mkdir -p /usr/local/logstash/etc
# 进入自定义配置目录
cd /usr/local/logstash/etc
# 创建日志收集配置文件
touch logstash_messages.conf
# 写入logstash收集系统日志配置:收集/var/log/messages + 监听5044端口,输出到208ES
cat > /usr/local/logstash/etc/logstash_messages.conf << EOF
input {
file {
type => "kernel-message"
path => "/var/log/messages"
start_position => "beginning"
sincedb_path => "/dev/null"
}
beats {
port => 5044
host => "0.0.0.0"
}
}
output {
elasticsearch {
hosts => ["192.168.63.208:9200"]
index => "system-messages-%{+YYYY.MM.dd}"
}
}
EOF
创建配置 Logstash 开机自启
# 新建systemd服务单元
tee /etc/systemd/system/logstash.service <<-'EOF'
[Unit]
Description=Logstash Service
After=network.target
[Service]
Type=simple
User=root
Group=root
# 指定配置文件后台运行
ExecStart=/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/logstash_messages.conf
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 重载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable logstash
# 启动logstash服务
systemctl start logstash
# 查看logstash运行状态
systemctl status logstash
# 查看logstash启动日志
systemctl status logstash -l
# 检查logstash默认监听端口9600
netstat -tnlp|grep -aiE 9600
# 过滤查看java/logstash进程
ps -ef|grep -aiE java
# 实时查看系统日志源文件
tail -fn 20 /usr/local/logstash/logs/logstash-plain.log
# 人为生成一条系统日志,测试收集是否生效
service sshd restart
#Logstash 监听端口:5044 正常监听
ss -tnlp | grep 5044

四、浏览器验证
部署完成浏览器访问
ES:http://192.168.63.208:9200

Kibana:http://192.168.63.209:5601
1、添加数据

2、点击Overview

3、添加数据

4、添加索引

5、当前定义的索引信息,6、搜索所有索引信息,7、下一步

8、配置时间信息,9、创建索引模式

创建完成

进入 Discover查看

11、查看所有日志,12、更新日志

搜索框输入Failed,查看结果 → 定位问题
