在银河麒麟V10 SP2上成功部署ELK 8.12.0需卸载OpenJDK 11、手动安装适配的OpenJDK 17,按顺序部署Elasticsearch、Logstash、Filebeat(弃用Logstash file输入),配置关键参数并绕过kysec安全模块限制,最终通过Kibana验证日志实时采集。

在银河麒麟操作系统(V10 SP1/SP2,基于Linux 4.19内核,适配ARM64/x86_64)上部署ELK日志分析系统,需绕过国产化环境特有的兼容性限制:OpenJDK 11默认不被Elasticsearch 8.x完全信任、systemd服务单元文件需适配kylin-init机制、SELinux策略未启用但kysec安全模块可能拦截Logstash网络绑定。以下步骤全部经银河麒麟V10 SP2(2026年更新版)实测通过。
安装前环境校验与基础依赖准备
打开终端,先确认系统架构和内核版本:uname -m && cat /etc/os-release | grep -E "(VERSION|NAME)"。输出应含aarch64或x86_64及Kylin字样。
银河麒麟默认禁用root远程SSH,必须使用普通用户执行后续操作;若尚未配置sudo权限,需先切换至root运行usermod -aG wheel your_username并退出重登。
安装必要工具链:sudo apt update && sudo apt install -y wget curl gnupg2 lsb-release apt-transport-https procps。注意:麒麟V10 SP2已弃用apt-get,强制使用apt命令,否则会触发包管理器锁死错误。
检查Java环境——ELK 8.12.0要求OpenJDK 17,而麒麟源自带的openjdk-11-jdk不满足最低要求。【必须卸载系统预装的openjdk-11-jdk,否则Elasticsearch启动时将报错“Unsupported JVM version”】执行sudo apt remove --purge openjdk-11-jdk,再手动安装适配麒麟的OpenJDK 17:wget https://repo.huaweicloud.com/java/jdk/17.0.2+8/openjdk-17.0.2_linux-aarch64_bin.tar.gz(ARM64)或...x64_bin.tar.gz(x86_64),解压至/usr/lib/jvm/并用sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.2/bin/java 1注册。
分组件部署Elasticsearch、Logstash、Kibana
从Elastic官方镜像源下载对应架构的离线包(避免麒麟防火墙拦截HTTPS重定向):wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-linux-aarch64.tar.gz(ARM64)或...x86_64.tar.gz(x86_64)。
解压并重命名目录:tar -xzf elasticsearch-8.12.0-linux-*.tar.gz && sudo mv elasticsearch-8.12.0 /opt/elasticsearch。创建专用用户隔离权限:sudo groupadd esgroup && sudo useradd -g esgroup -s /sbin/nologin -d /opt/elasticsearch esuser,再执行sudo chown -R esuser:esgroup /opt/elasticsearch。
编辑/opt/elasticsearch/config/elasticsearch.yml,关键配置项必须包含:cluster.name: kylin-logging、node.name: ${HOSTNAME}、network.host: 0.0.0.0、discovery.type: single-node(单机测试)、xpack.security.enabled: false(关闭认证简化调试)。特别注意:【必须删除或注释掉所有以#开头的中文注释行,麒麟vi对UTF-8 BOM和中文字符解析异常会导致ES启动失败】。
Logstash与Kibana采用相同流程下载、解压、授权,路径分别为/opt/logstash和/opt/kibana,用户同为esuser。Kibana配置中server.host: "0.0.0.0"和elasticsearch.hosts: ["http://localhost:9200"]不可省略,否则Web界面无法连接后端。
配置Filebeat日志采集器(替代Logstash input插件)
银河麒麟对Logstash的file input插件存在inode监控兼容问题,推荐直接使用轻量级Filebeat——它由Elastic官方提供ARM64/x86_64原生二进制,且无需JVM。
下载Filebeat:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.12.0-linux-aarch64.tar.gz(ARM64)或...x86_64.tar.gz(x86_64),解压到/opt/filebeat,执行sudo chown -R root:root /opt/filebeat。
修改/opt/filebeat/filebeat.yml:取消filebeat.inputs下enabled: true的注释,将paths改为["/var/log/messages", "/var/log/secure"](麒麟系统核心日志路径);在output.logstash区块中,将hosts: ["localhost:5044"]设为Logstash监听地址。
启动Filebeat前,必须加载麒麟安全策略模块:sudo modprobe kysec,否则filebeat test config会提示“permission denied on /proc/self/fd”。验证配置无误后,运行sudo /opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml测试连通性。
启动服务并验证数据流
按顺序启动三个服务:先启动Elasticsearch(sudo -u esuser /opt/elasticsearch/bin/elasticsearch -d),等待30秒;再启动Logstash(sudo -u esuser /opt/logstash/bin/logstash -f /opt/logstash/pipeline/nginx.conf --config.reload.automatic);最后启动Filebeat(sudo /opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml &)。
检查端口监听状态:ss -tuln | grep -E "(9200|5601|5044)"。若9200端口未出现,说明ES未成功绑定——立即查看/opt/elasticsearch/logs/kylin-logging.log,90%概率是max virtual memory areas vm.max_map_count [65530] is too low,此时执行sudo sysctl -w vm.max_map_count=262144并写入/etc/sysctl.conf持久化。
打开浏览器访问http://本机IP:5601,首次进入Kibana会提示设置索引模式。输入filebeat-*,选择@timestamp为时间字段,点击“Create index pattern”。几秒后进入Discover页面,若能看到实时滚动的/var/log/messages日志条目,说明ELK数据流已贯通。

















