Elasticsearch与Kibana RPM安装指南

本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。

Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,Kibana是其可视化平台。本文将详细介绍在CentOS/RHEL系统上通过RPM包安装和配置Elasticsearch与Kibana的完整过程。

环境准备

系统要求

  • CentOS 7/8 或 RHEL 7/8
  • Java 11 或更高版本
  • 至少 4GB 内存
  • 足够的磁盘空间(建议至少 50GB)

安装 Java

bash
# 安装 OpenJDK 11
不在多bb百度一下你就知道~

# 验证 Java 版本
java -version

离线 RPM 包准备

1. 下载 RPM 包

在有网络的环境中,预先下载所需的 RPM 包:

bash
# 下载 Elasticsearch 8.11.0 RPM 包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.0-x86_64.rpm

# 下载 Kibana 8.11.0 RPM 包
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.11.0-x86_64.rpm

2. 传输到目标服务器

将下载的 RPM 包传输到离线服务器:

bash
# 使用 scp 传输文件
scp elasticsearch-8.11.0-x86_64.rpm user@target-server:/tmp/
scp kibana-8.11.0-x86_64.rpm user@target-server:/tmp/

# 或使用 U 盘等物理介质传输

安装 Elasticsearch

1. 离线安装 Elasticsearch 8.11

bash
# 使用本地 RPM 包安装 Elasticsearch
sudo rpm -ivh /tmp/elasticsearch-8.11.0-x86_64.rpm

2. 启动 Elasticsearch 服务

bash
# 启动 Elasticsearch
sudo systemctl start elasticsearch

# 设置开机自启动
sudo systemctl enable elasticsearch

# 检查服务状态
sudo systemctl status elasticsearch

3. 重置 elastic 用户密码

在首次登录前,需要重置 elastic 用户的密码:

bash
# 重置 elastic 用户密码
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

执行后会显示新生成的密码,请妥善保存。如果需要交互式设置密码,可以使用:

bash
# 交互式设置密码
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i

4. 验证 Elasticsearch 安装

bash
# 测试 Elasticsearch 连接
curl -X GET "localhost:9200" -u elastic:your-password

# 查看集群健康状态
curl -X GET "localhost:9200/_cluster/health" -u elastic:your-password

安装 Kibana

1. 离线安装 Kibana 8.11

bash
# 使用本地 RPM 包安装 Kibana
sudo rpm -ivh /tmp/kibana-8.11.0-x86_64.rpm

2. 生成 Kibana 注册 Token

bash
# 为 Kibana 生成注册 token
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana

保存生成的 token,稍后配置 Kibana 时需要使用。

3. 启动 Kibana 服务

bash
# 启动 Kibana
sudo systemctl start kibana

# 设置开机自启动
sudo systemctl enable kibana

# 检查服务状态
sudo systemctl status kibana

4. 获取 Kibana 验证码

首次访问 Kibana 时需要验证码:

bash
# 获取 Kibana 验证码
sudo /usr/share/elasticsearch/bin/kibana-verification-code

5. 配置 Kibana

访问 http://your-server-ip:5601,使用上面获取的 token 和验证码完成初始配置。

Fleet 离线配置

1. 修改 Kibana 配置文件

编辑 /etc/kibana/kibana.yml 文件:

yaml
# Kibana 基本配置
server.host: "0.0.0.0"
server.port: 5601

# Elasticsearch 连接配置
elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "your-kibana-password"

# 中文界面配置
i18n.locale: "zh-CN"

2. 配置离线 Fleet Registry

如果需要完全离线环境,可以配置本地 Registry:

yaml
# 离线 Fleet 配置
xpack.fleet.registryUrl: "http://your-local-registry:8080"

3. 重启 Kibana 服务

bash
# 重启 Kibana 应用配置
sudo systemctl restart kibana

# 检查日志
sudo journalctl -u kibana -f

Kibana 中文界面配置

1. 通过配置文件设置

/etc/kibana/kibana.yml 中添加:

yaml
# 设置中文界面
i18n.locale: "zh-CN"

2. 通过 Kibana 界面设置

  1. 登录 Kibana 管理界面
  2. 进入 Stack Management > Advanced Settings
  3. 搜索 locale 设置
  4. 将值设置为 zh-CN
  5. 保存设置并刷新页面

3. 验证中文设置

重启 Kibana 后,界面应该显示为中文。如果没有生效,检查浏览器语言设置。

安全配置

1. 配置防火墙

bash
# 开放 Elasticsearch 端口(仅本地访问)
sudo firewall-cmd --permanent --add-port=9200/tcp --zone=internal

# 开放 Kibana 端口
sudo firewall-cmd --permanent --add-port=5601/tcp

# 重载防火墙配置
sudo firewall-cmd --reload

2. 配置 SSL/TLS

编辑 /etc/elasticsearch/elasticsearch.yml

yaml
# 启用 SSL
xpack.security.enabled: true
xpack.security.enrollment.enabled: true

# SSL 配置
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12

xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12

常见问题排查

1. Elasticsearch 启动失败

bash
# 检查 Elasticsearch 日志
sudo journalctl -u elasticsearch -f

# 检查配置文件语法
sudo /usr/share/elasticsearch/bin/elasticsearch --version

# 检查 Java 堆内存设置
sudo cat /etc/elasticsearch/jvm.options

2. Kibana 连接失败

bash
# 检查 Kibana 日志
sudo journalctl -u kibana -f

# 测试 Elasticsearch 连接
curl -X GET "localhost:9200/_cluster/health" -u elastic:password

# 检查 Kibana 配置
sudo cat /etc/kibana/kibana.yml

3. Fleet 配置问题

bash
# 检查 Fleet 状态
curl -X GET "localhost:5601/api/fleet/agents" -u elastic:password

# 重置 Fleet 配置
# 在 Kibana 界面中:Fleet > Settings > Reset to defaults

4. 内存不足问题

bash
# 调整 Elasticsearch JVM 堆内存
sudo vim /etc/elasticsearch/jvm.options

# 修改以下参数(根据服务器内存调整)
-Xms2g
-Xmx2g

性能优化建议

1. 系统级优化

bash
# 增加文件描述符限制
echo "elasticsearch soft nofile 65536" | sudo tee -a /etc/security/limits.conf
echo "elasticsearch hard nofile 65536" | sudo tee -a /etc/security/limits.conf

# 增加虚拟内存映射限制
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

2. Elasticsearch 优化

yaml
# 在 /etc/elasticsearch/elasticsearch.yml 中添加
bootstrap.memory_lock: true
indices.memory.index_buffer_size: 10%
thread_pool.write.queue_size: 1000

监控和维护

1. 设置日志轮转

bash
# 配置 Elasticsearch 日志轮转
sudo vim /etc/elasticsearch/log4j2.properties

# 配置 Kibana 日志轮转
sudo vim /etc/kibana/kibana.yml

2. 定期备份

bash
# 创建快照仓库
curl -X PUT "localhost:9200/_snapshot/backup_repo" -u elastic:password -H 'Content-Type: application/json' -d'
{
  "type": "fs",
  "settings": {
    "location": "/backup/elasticsearch"
  }
}'

# 创建快照
curl -X PUT "localhost:9200/_snapshot/backup_repo/snapshot_1" -u elastic:password

总结

通过本文的详细步骤,我们成功完成了 Elasticsearch 和 Kibana 8.11 版本的 RPM 安装和配置。关键配置包括:

  • 使用 elasticsearch-reset-password 重置初始密码
  • 通过 elasticsearch-create-enrollment-token 获取 Kibana 注册 token
  • 使用 kibana-verification-code 获取验证码
  • 配置 Fleet 离线 Registry 地址
  • 设置 Kibana 中文界面

在生产环境中,建议进一步配置 SSL/TLS 加密、设置适当的用户权限、配置监控告警,并制定定期备份策略,确保系统的安全性和可靠性。

Elasticsearch JVM 内存配置详解
MySQL中的锁机制与死锁问题深度解析