百香熊猫果 2024-03-22 14:30 采纳率: 0%
浏览 11

搭建ELK stack集群遇到的logstash用systemctl start logstash启动失败?

#首先贴个logstash的conf.d配置


```shell
[root@slave1 bin]# cat /etc/logstash/conf.d/logstash.conf 
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

#进入bin目录启动:
```shell
[root@slave1 bin]# nohup ./logstash -f /etc/logstash/conf.d/logstash.conf > output.log &

img


#无报错且监听端口存在,证明配置文件启动没问题;

#换一种使用systemctl start logstash启动,查看日志报错:

img

百度查看很多都说是logstash.conf 配置文件无效,编码的问题,但我改了编码还是没办法systemctl start logstash启动,请教下大shen解决方法!!

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-22 14:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述:在使用systemctl start命令启动logstash服务时,出现了配置文件无效的报错。 解决方法:根据报错信息,可以看出是logstash无法正常读取配置文件,因此需要检查配置文件的编码格式和路径是否正确。
    1. 检查配置文件编码格式 在Windows下编辑的文件可能会存在不兼容的编码格式,因此需要将其转换为Linux下的UTF-8编码格式。可以使用iconv命令进行转换,例如: iconv -f GBK -t UTF-8 logstash.conf > logstash_utf8.conf 这里假设原始配置文件的编码为GBK,转换后的文件命名为logstash_utf8.conf。
    2. 检查配置文件路径 在logstash.service文件中,定义了logstash服务的工作目录和配置文件路径: WorkingDirectory=/usr/share/logstash ... ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" 需要确保实际的配置文件路径和ExecStart命令中的路径匹配。可以使用以下命令查看logstash实际加载的配置文件: /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit 如果配置文件路径正确,执行该命令应该不会出现异常。 案例演示:
    3. 检查配置文件编码格式 假设我们的logstash.conf文件编码格式为GBK,在Windows下编辑完成后传输到Linux服务器上。我们可以使用iconv命令将其转换为UTF-8编码格式: iconv -f GBK -t UTF-8 logstash.conf > logstash_utf8.conf 转换后,我们可以使用cat命令查看文件内容: [root@slave1 bin]# cat logstash_utf8.conf

    Sample Logstash configuration for creating a simple

    Beats -> Logstash -> Elasticsearch pipeline.

    input { beats { port => 5044 }} output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" }} 2. 检查配置文件路径 在logstash.service文件中,定义了logstash服务的工作目录和配置文件路径: WorkingDirectory=/usr/share/logstash ... ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" 我们可以使用ls命令查看实际的配置文件路径: [root@slave1 bin]# ls /etc/logstash/conf.d/logstash.conf /etc/logstash/conf.d/logstash.conf 可以看到配置文件的路径和ExecStart命令中的路径一致。 最后,我们可以使用以下命令检查logstash配置文件是否正确: [root@slave1 bin]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf --config.test_and_exit Configuration OK 从输出结果可以看出,logstash的配置文件正确。最后,我们可以使用systemctl命令启动logstash服务: systemctl start logstash 如果仍无法正常启动,可以查看logstash的日志文件,以便进一步排查问题。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月22日
  • 修改了问题 3月22日
  • 创建了问题 3月22日