Logstash JDBC上次运行元数据文件未更新
我们在linux中使用logstash来执行作业的初始运行,然后为每个JDBC输入创建最后运行的元数据文件。这很有效,但我们注意到,上次运行的元数据文件是由root的所有者和root的组关联创建的。配置文件通过SSH在名为logstash的用户下执行到服务器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
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用户?(我是新来的)
- 我们知道我们可以通过更换所有者来解决这个问题,但是有更好的解决方案吗
sudo
没有-u logstash
参数,因此它将作为root用户而不是logstash用户运行
您应该尝试以logstash用户的身份运行logstash,只需确保logstash用户可以访问目录
/home/ubuntu
中的配置文件,或者将此文件移动到logstash用户可以访问的另一个目录。我是linux新手,因为我最近了解了权限在那里的工作方式。我不知道使用sudo命令将使用root用户,而不仅仅是授予root访问权限。我将对此进行检查并确认。非常感谢。我确认在将logstash用户添加到sudo组并使用sudo-u logstash[command]
在logstash user下创建上次运行的元数据文件之后。再次感谢你。