ELFK部署

官方下载地址
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
https://www.elastic.co/cn/downloads/past-releases#kibana
https://www.elastic.co/cn/downloads/past-releases#logstash
https://www.elastic.co/cn/downloads/past-releases#filebeat

1、Elasticsearch部署

# a.创建用户
groupadd es
useradd es -g es

# b.下载安装包 (LINUX下 elasticsearch 无法使用 root 用户运行,需要创建新的用户,并且把elasticsearch 下所有的文件更改所属用户)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.3-linux-x86_64.tar.gz
tar xf elasticsearch-8.4.3-linux-x86_64.tar.gz -C /data
chown -R es:es /data/elasticsearch-8.4.3/

# c.修改配置文件
cat  <<EOF  > /data/elasticsearch-8.4.3/config/elasticsearch.yml
cluster.name: my-es
node.name: es
path.data: /data/elasticsearch-8.4.3/data
path.logs: /data/elasticsearch-8.4.3/logs
network.host: 192.168.30.10
http.port: 9200
discovery.seed_hosts: ["192.168.30.10:9300"]
cluster.initial_master_nodes: ["es"]
index.store.type: niofs
bootstrap.memory_lock: true 
indices.requests.cache.size: 5%
indices.queries.cache.size: 10%
## 开启配置密码认证
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: elastic-certificates.p12
  truststore.path: elastic-certificates.p12
EOF

# d.修改JVM,配置文件,此处设置ES所使用的内存,需小于系统空闲内存,否则无法启动。一般设置为服务器剩余内存的一半,且不能超过32G。最小和最大必须设置一样,避免GC(垃圾回收)
sed -i 's/^## -Xms4g/-Xms2g/g ' /data/elasticsearch-8.4.3/config/jvm.options
sed -i 's/^## -Xmx4g/-Xmx2g/g ' /data/elasticsearch-8.4.3/config/jvm.options


# e.切换用户生成证书文件(设置密码用,默认回车即可)
su es
cd /data/elasticsearch-8.4.3/bin/
./elasticsearch-certutil ca
./elasticsearch-certutil cert --ca elastic-stack-ca.p12
mv /data/elasticsearch-8.4.3/elastic-certificates.p12 ../config

# f.启动 elasticsearch并检查进程和端口是否正常
./elasticsearch -d
ps -ef | grep elastic 
netstat -natp | grep 9200

在这里插入图片描述

# g.手动设置密码
./elasticsearch-reset-password -u elastic -i
./elasticsearch-reset-password -u kibana -i

在这里插入图片描述

# h.验证密码

在这里插入图片描述

2、logstash与filebeat部署

# a.下载安装包
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.4.3-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.4.3-linux-x86_64.tar.gz
tar xf logstash-8.4.3-linux-x86_64.tar.gz  -C /data
tar xf filebeat-8.4.3-linux-x86_64.tar.gz 
mv filebeat-8.4.3-linux-x86_64 /data/filebeat-8.4.3

# b.安装java环境
yum -y install java-11-openjdk
# c1.filebeat直接发送数据到es(filebeat同时只支持一个output)
cat /data/filebeat-8.4.3/test.yml

filebeat.inputs:
- type: log
  id: nginx
  enabled: true
  paths:
    - /var/log/nginx/access.log

output.elasticsearch:
  hosts: ["192.168.30.10:9200"]
  username: "elastic"
  password: "123456"
  index: "nginx-%{+yyyy.MM.dd}"

setup.ilm.enabled: false 
setup.template.enabled: false 
setup.template.overwrite: true
# c2.filebeat发送数据到logstash
filebeat.inputs:
- type: log
  id: nginx
  enabled: true
  paths:
    - /var/log/nginx/access.log
    
output.logstash:
  enabled: true
  hosts: ["192.168.30.30:5044"]
# c3.启动filebeat
cd /data/filebeat-8.4.3/
nohup ./filebeat -e -c test.yml & 
# d.logstah收集过滤数据
cat /data/logstash-8.4.3/config/test.yml

input {
#从filebeat获取nginx日志
  beats {
    host => "192.168.30.30"
    port => 5044
    type => "nginx-filebeat"
  } 
#从本地获取日志  
  file {
    path => "/var/log/nginx/access.log"
    type => "nginx-logstash"
    start_position => "beginning"
  }
}

output {
#根据不同的type来命名索引
  if [type] == "nginx-filebeat" {
  elasticsearch {
    hosts => ["http://192.168.30.10:9200"]
    index => "nginx-filebeat-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "123456"
  }
  }
  if [type] == "nginx-logstash" {
  elasticsearch {
    hosts => ["http://192.168.30.10:9200"]
    index => "nginx-logstash-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "123456"
  }
  }
}

# 启动logstash
cd /data/logstash-8.4.3/bin/
nohup ./logstash -f /data/logstash-8.4.3/config/test.yml  &
# e.在es中查看索引

在这里插入图片描述

3、Kibana部署

# a.创建用户
groupadd kibana
useradd kibana -g kibana

# b.下载安装包
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.4.3-linux-x86_64.tar.gz
tar xf kibana-8.4.3-linux-x86_64.tar.gz -C /data
chown -R kibana /data/kibana-8.4.3/

# c.修改配置文件
grep -Ev "^$|^#" /data/kibana-8.4.3/config/kibana.yml 
## 过滤查看修改的配置如下:
server.port: 5601
server.host: "0.0.0.0"
server.publicBaseUrl: "http://192.168.30.20:5601"
server.name: "kibana"
elasticsearch.hosts: ["http://192.168.30.10:9200"]
elasticsearch.username: "kibana"
elasticsearch.password: "123456"

# d.启动kibana
su kibana
cd /data/kibana-8.4.3/bin/
nohup ./kibana &

# e.查看进程与端口
netstat -antp | grep 5601
ps -ef | grep kibana

在这里插入图片描述

# f.登录
ip:port
es的账号密码

在这里插入图片描述

# g.关联es索引

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

# h.查看kibana视图

在这里插入图片描述

<think>嗯,用户想在离线环境下部署一个由三台虚拟机构成的ELFK集群,也就是Elasticsearch、Logstash、Kibana和Filebeat的组合吧?首先,我得确认用户提到的ELFK是否包括Filebeat,因为有时候可能只是ELK。不过根据问题中的描述,用户明确提到了ELFK,所以应该包含Filebeat。不过用户的问题标题里写的是ELK集群,可能需要再确认一下,但可能只是打字错误,或者用户可能混淆了ELKELFK。不过先按照三台虚拟机部署ELK来思考。 用户的环境是离线的,所以所有安装包都需要提前下载好,并且不能依赖在线源。三台虚拟机的话,可能需要将Elasticsearch配置成集群,分布在三个节点上,而Logstash和Kibana可能也需要安装在其中某些节点上。不过通常Elasticsearch是分布式的,Logstash可以作为多个实例,Kibana可能只需要一个节点。但用户可能希望将每个组件都分布在三个节点上,或者可能只是Elasticsearch集群有三个节点,其他组件各一个?需要明确架构。 首先,离线部署的步骤大致包括:准备安装包、配置系统环境、安装各个组件、配置集群、启动服务、验证。需要注意各个组件之间的版本兼容性,比如Elasticsearch、Logstash、Kibana的版本必须一致或者兼容。同时,离线环境下可能需要处理依赖包,比如Java环境,因为Elasticsearch需要Java运行环境。 接下来,用户可能已经有三台虚拟机,系统可能是CentOS或者Ubuntu,需要安装必要的工具,比如JDK。但用户可能已经安装好了,或者需要离线安装。这里需要考虑到离线安装Java的问题,比如使用rpm包或者deb包手动安装。 然后是Elasticsearch集群的配置,需要设置集群名称、节点名称、网络主机、发现种子节点等。每个节点的elasticsearch.yml文件需要正确配置,确保它们能够互相发现并组成集群。同时,系统层面的设置,比如调整文件描述符、内存映射区域,关闭交换分区,可能需要通过sysctl或者systemd配置。 Logstash的配置可能涉及输入、过滤、输出插件,但在离线环境下,用户可能需要提前准备好插件,或者在没有网络的情况下安装。不过Logstash的插件管理可能需要在线,所以离线情况下可能需要手动处理,或者提前下载所有需要的插件。这部分可能需要更多的步骤,比如使用logstash-plugin install的离线方式,或者将插件包拷贝到指定目录。 Kibana的安装相对简单,主要是配置指向Elasticsearch的地址,然后在离线环境下可能需要预先配置好仪表盘或者可视化内容。但用户的问题可能更关注部署本身,而不是后续的使用。 另外,用户提到的三台虚拟机,可能需要每个节点都安装Elasticsearch,并组成集群,而Logstash和Kibana可能只需要安装在其中一台或分散安装。例如,三个节点都运行Elasticsearch,而其中一台同时运行Logstash和Kibana,或者分开部署。需要明确架构设计。 在准备安装包时,用户需要下载对应版本的Elasticsearch、Logstash、Kibana的tar.gz或rpm/deb包,以及Filebeat的包,如果需要的话。然后通过U盘或者内部网络传输到各个虚拟机中,进行安装。 系统优化方面,可能需要调整虚拟内存设置、文件描述符限制、禁用交换分区等,这些都需要在每台虚拟机上配置。特别是对于Elasticsearch节点,这些系统参数调整非常重要,否则可能导致性能问题或者启动失败。 关于用户权限的问题,Elasticsearch不建议以root用户运行,所以需要创建专用用户,比如用户提到的es用户,并赋予相应的目录权限,如数据目录和安装目录的所有权。 另外,防火墙配置需要开放相应的端口,比如Elasticsearch的9200、9300端口,Kibana的5601端口,Logstash的相应端口(如5044用于Beats输入)。在离线环境下,可能需要手动配置防火墙规则,或者关闭防火墙进行测试。 证书和安全性方面,如果用户需要启用安全功能,比如x-pack,那么在离线环境下可能需要手动生成证书,并配置各个节点之间的TLS通信。不过这可能增加了部署的复杂性,用户可能暂时不需要,但需要考虑是否需要指导用户处理这部分内容。 总结步骤可能如下: 1. 准备离线安装包和依赖(Java等) 2. 配置三台虚拟机系统参数 3. 安装Elasticsearch集群,配置各节点的elasticsearch.yml 4. 安装Logstash,配置输入输出 5. 安装Kibana,配置连接Elasticsearch 6. 启动服务,验证集群状态 7. 处理可能的错误,如节点无法加入集群,端口问题等 现在需要将这些步骤具体化,并考虑用户可能遇到的问题,比如版本兼容性、目录权限、配置文件错误等。另外,用户可能还需要配置Logstash的管道,比如接收来自Filebeat的日志,处理后再发送到Elasticsearch,这部分也需要在配置文件中体现。 最后,生成相关的问题需要考虑用户可能的后续疑问,比如性能调优、高可用配置、日志收集配置、安全性设置等。</think>### 分步解答:离线部署三节点ELK集群 --- #### **一、准备工作** 1. **安装包下载** - 在联网环境中下载以下组件(需确保版本一致,如7.15.1): - Elasticsearch(RPM/DEB或TAR包) - Logstash(RPM/DEB或TAR包) - Kibana(RPM/DEB或TAR包) - Java JDK(推荐OpenJDK 11) - 将安装包通过离线介质(如U盘)传输到三台虚拟机。 2. **虚拟机基础配置** - 关闭防火墙(或开放端口9200、9300、5601、5044): ```bash systemctl stop firewalld && systemctl disable firewalld ``` - 调整系统参数(所有节点执行): ```bash # 修改/etc/sysctl.conf vm.max_map_count=262144 # 修改/etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 ``` --- #### **二、部署Elasticsearch集群** 1. **安装Elasticsearch** ```bash # 解压安装包(以tar包为例) tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz -C /opt mv /opt/elasticsearch-7.15.1 /opt/elasticsearch ``` 2. **配置节点文件** 编辑`/opt/elasticsearch/config/elasticsearch.yml`(以节点1为例): ```yaml cluster.name: elk-cluster node.name: node-1 network.host: 0.0.0.0 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"] cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] ``` 3. **创建专用用户并授权** ```bash useradd es chown -R es:es /opt/elasticsearch chown -R es:es /data/elasticsearch # 数据存储目录 ``` 4. **启动服务** ```bash su es /opt/elasticsearch/bin/elasticsearch -d ``` 5. **验证集群状态** ```bash curl http://192.168.1.101:9200/_cat/nodes ``` 应返回三个节点的信息[^5]。 --- #### **三、部署Logstash** 1. **安装Logstash** ```bash tar -zxvf logstash-7.15.1-linux-x86_64.tar.gz -C /opt mv /opt/logstash-7.15.1 /opt/logstash ``` 2. **配置管道文件** 创建`/opt/logstash/config/logstash.conf`: ```conf input { beats { port => 5044 } } output { elasticsearch { hosts => ["http://192.168.1.101:9200", "http://192.168.1.102:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` 3. **启动服务** ```bash /opt/logstash/bin/logstash -f /opt/logstash/config/logstash.conf --config.reload.automatic ``` --- #### **四、部署Kibana** 1. **安装Kibana** ```bash tar -zxvf kibana-7.15.1-linux-x86_64.tar.gz -C /opt mv /opt/kibana-7.15.1 /opt/kibana ``` 2. **修改配置文件** 编辑`/opt/kibana/config/kibana.yml`: ```yaml server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.1.101:9200"] ``` 3. **启动服务** ```bash /opt/kibana/bin/kibana & ``` --- #### **五、验证部署** 1. **访问Kibana界面** 浏览器打开`http://虚拟机IP:5601`,进入`Management > Stack Monitoring`查看集群状态[^1]。 2. **日志数据测试** 使用Filebeat发送测试日志到Logstash,确认Elasticsearch中生成索引。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值