Logstash JDBC上次运行元数据文件未更新

Logstash JDBC上次运行元数据文件未更新,jdbc,logstash,logstash-configuration,logstash-jdbc,Jdbc,Logstash,Logstash Configuration,Logstash Jdbc,我们在linux中使用logstash来执行作业的初始运行,然后为每个JDBC输入创建最后运行的元数据文件。这很有效,但我们注意到,上次运行的元数据文件是由root的所有者和root的组关联创建的。配置文件通过SSH在名为logstash的用户下执行到服务器 sudo time /usr/share/logstash/bin/logstash -f /home/ubuntu/manual-pipeline.conf --path.settings /etc/logstash/ --path.da

我们在linux中使用logstash来执行作业的初始运行,然后为每个JDBC输入创建最后运行的元数据文件。这很有效,但我们注意到,上次运行的元数据文件是由root的所有者和root的组关联创建的。配置文件通过SSH在名为logstash的用户下执行到服务器

sudo time /usr/share/logstash/bin/logstash -f /home/ubuntu/manual-pipeline.conf --path.settings /etc/logstash/ --path.data /var/lib/log
然后我们有另一个logstash配置,它是作为服务运行的。唯一的区别是,它包含计划作业,这些作业将使用第一次配置中相同的上次运行元数据文件。我们注意到,当它能够更新上次运行的元数据时,文件的所有者是logstash。我们现在有许多元数据文件在根目录下,但没有得到更新。如果我们手动将所有者更新为logstash,那么计划的作业可以毫无问题地更新文件

sudo chown logstash .last_run
我们所有的元数据文件都存储在
/etc/logstash
中,我们将其配置为拥有根和组logstash。我们使用相同的SSH连接来运行
手动管道.conf
,并将
计划管道.conf
复制到
/etc/logstash/conf.d
,并使用
sudo服务logstash start
启动服务

logstash
用户只有一组
logstash
adm
。我还想补充一点,我们只使用上次运行元数据的时间戳,并且在sql查询的where子句中使用
:sql\u last\u value

问题:

  • 为什么上次运行的元数据文件的初始创建由root所有?我们可以配置这个吗
  • 为什么我们的服务使用logstash用户而不是root用户?(我是新来的)
  • 我们知道我们可以通过更换所有者来解决这个问题,但是有更好的解决方案吗
对不起,如果信息到处都是。我刚刚接触过logstash和所有这些。我相信我们正在使用Logstash 5.4.1,如果它有帮助的话

为什么上次运行的元数据文件的初始创建由root所有?我们可以配置这个吗

最后运行的元数据文件将由运行logstash的用户拥有,如果它们首先由root用户拥有,则有人使用sudo以root用户身份运行logstash

为什么我们的服务使用logstash用户而不是root用户?(我是新来的)

这是默认设置,logstash服务使用用户logstash,而不是root。出于安全原因,建议不要以root身份运行logstash

我们知道我们可以通过更换所有者来解决这个问题,但是有更好的解决方案吗

在您的示例中,您使用的
sudo
没有
-u logstash
参数,因此它将作为root用户而不是logstash用户运行


您应该尝试以logstash用户的身份运行logstash,只需确保logstash用户可以访问目录
/home/ubuntu
中的配置文件,或者将此文件移动到logstash用户可以访问的另一个目录。

我是linux新手,因为我最近了解了权限在那里的工作方式。我不知道使用sudo命令将使用root用户,而不仅仅是授予root访问权限。我将对此进行检查并确认。非常感谢。我确认在将logstash用户添加到sudo组并使用
sudo-u logstash[command]
在logstash user下创建上次运行的元数据文件之后。再次感谢你。