Logstash无法向远程Elasticsearch传输数据及Kibana端口配置失效问询
问题排查及解决方案
Logstash跨节点同步无数据问题
故障原因
- 启动时未指定配置路径:日志明确提示找不到
logstash.yml和log4j2配置,默认配置不会读取你放在/etc/logstash/conf.d/下的管道配置,也不会把日志写入/var/log/logstash路径 - CSV文件读取权限问题:Logstash默认运行用户为logstash,需确认
/home/cyberuser/activity.csv对logstash用户有可读权限,父目录/home/cyberuser/也需要有执行权限(允许目录遍历) - file输入插件逻辑缺失:如果CSV文件在Logstash启动前就已经写入完成,默认file插件只会读取启动后新增的内容,你仅配置了
sincedb_path => "/dev/null"但未加start_position => "beginning",不会读取历史内容
解决方案
- 调整启动命令,指定配置目录,启动时加上
--path.settings /etc/logstash/参数,示例命令:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/activity_view.conf
- 补充file输入插件配置,在input的file段添加
start_position => "beginning",修改后配置如下:
input { file { path => "/home/cyberuser/activity.csv" sincedb_path => "/dev/null" start_position => "beginning" } }
- 修正文件权限,执行以下命令赋权:
sudo chmod o+x /home/cyberuser sudo chmod o+r /home/cyberuser/activity.csv
- 验证网络连通性,在machineA上执行命令确认ES端口可通:
curl -u elastic:你的ES密码 http://10.48.xx.xx:9200
能正常返回ES节点信息说明网络无问题。
Kibana修改80端口不生效问题
故障原因
- 你当前的配置里
server.port仍为5601,没有修改为80 - Linux系统1024以下端口属于特权端口,默认普通用户(Kibana默认运行用户为kibana)没有权限绑定
- 可能存在80端口被占用、修改配置后未重启Kibana服务的情况
解决方案
- 修改
kibana.yml里的端口配置:
server.port: 80
- 处理特权端口绑定问题,两种方案二选一:
- 方案一:用Nginx反向代理,Nginx监听80端口转发到本机5601的Kibana服务,配置简单风险低
- 方案二:给Kibana二进制文件授权绑定低端口权限,执行命令:
sudo setcap 'cap_net_bind_service=+ep' /usr/share/kibana/bin/kibana
- 确认80端口未被占用:
netstat -tunlp | grep 80
如果被其他服务占用先停止对应服务
4. 重启Kibana服务生效:
sudo systemctl restart kibana
内容的提问来源于stack exchange,提问作者nav33n
相关产品推荐
相关产品推荐

