openEuler 22.03 LTS 部署 ELK(Elasticsearch+Logstash+Kibana)完整教程

一、环境准备(必做基础配置)

1. 系统要求
  • 服务器配置:建议 2 核 4G 以上(最低 1 核 2G,生产环境需更高配置)
  • 系统版本:openEuler 22.03 LTS(已测试兼容)
  • 权限:使用root用户操作(后续会创建专用用户)
2. 安装依赖(JDK 11)

ELK 7.x 及以上版本必须依赖 JDK 11,欧拉系统可通过dnf安装:

复制代码
# 检查是否已安装JDK
java -version

# 若未安装,执行以下命令
dnf install -y java-11-openjdk java-11-openjdk-devel

# 配置JAVA_HOME环境变量
echo "export JAVA_HOME=/usr/lib/jvm/java-11-openjdk" >> /etc/profile
source /etc/profile  # 生效配置

# 验证JDK安装成功(显示版本信息)
java -version
3. 系统优化(解决 ELK 启动限制)
(1)关闭 SELinux(ELK 对 SELinux 兼容性较差)
复制代码
# 临时关闭(立即生效)
setenforce 0

# 永久关闭(重启后生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
(2)开放必要端口

ELK 需要以下端口通信:

  • Elasticsearch:9200(HTTP)、9300(节点间通信)

  • Kibana:5601(Web 界面)

  • Logstash:5044(接收日志,如 Filebeat 数据)

    启动防火墙(若未启动)

    systemctl start firewalld
    systemctl enable firewalld

    开放端口并永久生效

    firewall-cmd --zone=public --add-port=9200/tcp --permanent
    firewall-cmd --zone=public --add-port=5601/tcp --permanent
    firewall-cmd --zone=public --add-port=5044/tcp --permanent

    重新加载防火墙规则

    firewall-cmd --reload

(3)优化内核参数(Elasticsearch 必需)
复制代码
# 编辑内核配置文件
vim /etc/sysctl.conf

# 添加以下内容(按i进入编辑模式,编辑后按Esc+:wq保存)
vm.max_map_count=262144  # Elasticsearch需要的虚拟内存映射数(必须设置)
fs.file-max=655360        # 系统最大文件描述符数量

# 使配置生效
sysctl -p
(4)调整用户资源限制(避免文件句柄不足)
复制代码
# 编辑限制配置文件
vim /etc/security/limits.conf

# 添加以下内容(允许所有用户打开更多文件和进程)
* soft nofile 65536  # 软限制:最多打开65536个文件
* hard nofile 65536  # 硬限制:最多打开65536个文件
* soft nproc  4096   # 软限制:最多4096个进程
* hard nproc  4096   # 硬限制:最多4096个进程
(5)创建数据和日志目录
复制代码
# 统一存储ELK数据和日志
mkdir -p /data/elk/{es_data,es_logs,ls_data,ls_logs,kb_logs}
mkdir -p /var/log/elk

# 赋予读写权限(后续会指定给专用用户)
chmod -R 775 /data/elk /var/log/elk

二、安装 Elasticsearch(日志存储核心)

Elasticsearch 是分布式搜索引擎,负责存储和索引日志数据。

1. 下载并解压安装包
复制代码
# 版本选择7.17.0(稳定版,与欧拉兼容)
ELK_VERSION="7.17.0"
ES_URL="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ELK_VERSION}-linux-x86_64.tar.gz"

# 下载到/tmp目录
wget -P /tmp $ES_URL

# 解压到/usr/local目录
tar -zxvf /tmp/elasticsearch-${ELK_VERSION}-linux-x86_64.tar.gz -C /usr/local/

# 重命名为elasticsearch(简化路径)
mv /usr/local/elasticsearch-${ELK_VERSION} /usr/local/elasticsearch
2. 创建专用用户(禁止 root 启动 ES)

Elasticsearch 默认禁止使用root用户启动,需创建专用用户:

复制代码
# 创建es用户
useradd es

# 赋予ES目录和数据目录权限给es用户
chown -R es:es /usr/local/elasticsearch /data/elk /var/log/elk
3. 配置 Elasticsearch

编辑主配置文件elasticsearch.yml

复制代码
# 进入配置目录
cd /usr/local/elasticsearch/config

# 编辑配置文件
vim elasticsearch.yml

添加以下核心配置(覆盖默认值,按实际需求调整):

复制代码
cluster.name: elk-cluster  # 集群名称(单节点也需配置)
node.name: node-1          # 节点名称(单节点直接用node-1)
path.data: /data/elk/es_data  # 数据存储路径(之前创建的目录)
path.logs: /data/elk/es_logs  # 日志存储路径
network.host: 0.0.0.0      # 允许所有IP访问(默认只允许本地)
http.port: 9200            # HTTP访问端口
discovery.seed_hosts: ["127.0.0.1"]  # 单节点配置(集群需填其他节点IP)
cluster.initial_master_nodes: ["node-1"]  # 初始主节点(单节点填当前节点名)
bootstrap.memory_lock: false  # 测试环境关闭(生产环境建议开启,需额外配置)
4. 启动 Elasticsearch
复制代码
# 切换到es用户(必须非root)
su - es

# 后台启动(-d表示后台运行)
/usr/local/elasticsearch/bin/elasticsearch -d

# 退出es用户,回到root
exit
5. 验证 Elasticsearch 启动成功
复制代码
# 等待30秒左右(首次启动较慢),执行以下命令检查状态
curl http://localhost:9200

若返回类似以下信息,说明启动成功:

json

复制代码
{
  "name" : "node-1",
  "cluster_name" : "elk-cluster",
  "cluster_uuid" : "xxxxxxx",
  "version" : {
    "number" : "7.17.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "xxxxxxx",
    "build_date" : "2022-01-28T08:36:04.875279988Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

三、安装 Logstash(日志采集与过滤)

Logstash 负责采集日志、清洗过滤(如提取关键字),再输出到 Elasticsearch。

1. 下载并解压安装包
复制代码
ELK_VERSION="7.17.0"
LS_URL="https://artifacts.elastic.co/downloads/logstash/logstash-${ELK_VERSION}-linux-x86_64.tar.gz"

# 下载到/tmp
wget -P /tmp $LS_URL

# 解压到/usr/local
tar -zxvf /tmp/logstash-${ELK_VERSION}-linux-x86_64.tar.gz -C /usr/local/

# 重命名
mv /usr/local/logstash-${ELK_VERSION} /usr/local/logstash
2. 配置 Logstash(采集系统日志示例)

Logstash 通过配置文件定义 "输入→过滤→输出" 流程,创建一个基础配置:

复制代码
# 进入Logstash配置目录
cd /usr/local/logstash/config

# 创建配置文件(如logstash.conf)
vim logstash.conf

添加以下内容(采集/var/log/messages系统日志,输出到 ES):

复制代码
input {
  # 输入:从文件采集日志
  file {
    path => "/var/log/messages"  # 欧拉系统日志路径
    start_position => "beginning"  # 从文件开头开始读取
    sincedb_path => "/data/elk/ls_data/sincedb"  # 记录读取位置(避免重复采集)
  }
}

filter {
  # 过滤:用grok提取日志中的时间、主机、消息内容
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:log_time} %{HOSTNAME:host} %{GREEDYDATA:log_message}" }
  }
}

output {
  # 输出:发送到Elasticsearch
  elasticsearch {
    hosts => ["localhost:9200"]  # 本地ES地址
    index => "system-logs-%{+YYYY.MM.dd}"  # 按日期创建索引(如system-logs-2023.10.01)
  }
  # 同时输出到控制台(调试用,生产可删除)
  stdout { codec => rubydebug }
}
3. 启动 Logstash
复制代码
# 后台启动(指定配置文件)
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash.conf > /var/log/elk/logstash.log 2>&1 &
4. 验证 Logstash 启动成功
复制代码
# 查看进程是否存在
ps aux | grep logstash | grep -v grep

# 查看日志(无报错即为正常)
tail -f /var/log/elk/logstash.log

四、安装 Kibana(日志可视化界面)

Kibana 是 Web 界面工具,用于查询、分析和可视化 Elasticsearch 中的日志。

1. 下载并解压安装包
复制代码
ELK_VERSION="7.17.0"
KB_URL="https://artifacts.elastic.co/downloads/kibana/kibana-${ELK_VERSION}-linux-x86_64.tar.gz"

# 下载到/tmp
wget -P /tmp $KB_URL

# 解压到/usr/local
tar -zxvf /tmp/kibana-${ELK_VERSION}-linux-x86_64.tar.gz -C /usr/local/

# 重命名
mv /usr/local/kibana-${ELK_VERSION} /usr/local/kibana
2. 配置 Kibana(连接 Elasticsearch)
复制代码
# 进入配置目录
cd /usr/local/kibana/config

# 编辑配置文件
vim kibana.yml

添加以下核心配置:

复制代码
server.host: "0.0.0.0"  # 允许外部访问(默认只允许本地)
server.port: 5601       # Web访问端口
elasticsearch.hosts: ["http://localhost:9200"]  # 连接的ES地址
kibana.index: ".kibana"  # Kibana自身数据存储的ES索引
logging.dest: "/data/elk/kb_logs/kibana.log"  # Kibana日志路径
3. 授权 Kibana 目录(非 root 用户启动)
复制代码
# 赋予es用户权限(与ES同用户,避免权限问题)
chown -R es:es /usr/local/kibana
4. 启动 Kibana
复制代码
# 切换到es用户
su - es

# 后台启动
nohup /usr/local/kibana/bin/kibana > /var/log/elk/kibana.log 2>&1 &

# 退出es用户
exit
5. 验证 Kibana 启动成功
复制代码
# 等待30秒左右,访问Web界面(替换为服务器IP)
# 浏览器打开:http://服务器IP:5601

若显示 Kibana 登录界面(7.x 版本默认无需登录),说明启动成功。

五、验证 ELK 日志流转(关键测试)

1. 确认 ES 中已生成日志索引
复制代码
# 查看ES中的索引(应包含system-logs-当前日期)
curl http://localhost:9200/_cat/indices?v
2. 在 Kibana 中查看日志
  1. 浏览器访问http://服务器IP:5601,进入 Kibana 界面。
  2. 左侧菜单进入 Management → Stack Management → Index Patterns
  3. 点击 Create index pattern ,输入索引匹配规则(如system-logs-*),点击 Next step
  4. 选择时间字段(如@timestamp),点击 Create index pattern
  5. 左侧菜单进入 Discover ,即可看到/var/log/messages中的系统日志。

六、常见问题排查

  1. Elasticsearch 启动失败

    • 查看日志:tail -f /data/elk/es_logs/elk-cluster.log
    • 常见原因:内存不足(编辑/usr/local/elasticsearch/config/jvm.options,调小-Xms-Xmx为 1G)、权限不足(确保es用户拥有目录权限)。
  2. Kibana 无法访问

    • 检查防火墙是否开放 5601 端口,服务器安全组是否放行。
    • 查看日志:tail -f /var/log/elk/kibana.log,确认是否连接 ES 成功。
  3. Logstash 无日志输出

    • 检查输入文件路径是否正确(/var/log/messages是否存在)。
    • 查看 Logstash 日志:tail -f /var/log/elk/logstash.log,排查过滤规则错误。

通过以上步骤,即可在欧拉 Linux 上完成 ELK 的部署。如需采集应用日志(如 Java 应用、Nginx),只需修改 Logstash 的input.path为应用日志路径即可.

相关推荐
大树888 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠8 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
大志哥1238 小时前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
霸道流氓气质8 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush48 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5208 小时前
Linux 11 动态监控指令top
linux
Inhand陈工9 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智10 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩10 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_10 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化