【发布时间】:2021-02-24 13:25:08
【问题描述】:
我们在 linux 中使用 logstash 来执行我们的作业的初始运行,然后为我们拥有的每个 JDBC 输入创建 last_run 元数据文件。这很有效,但我们注意到上次运行的元数据文件是由 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 中,我们将其配置为拥有root 和组logstash。我们使用相同的 SSH 连接来运行 manual-pipeline.conf 并将 scheduled-pipeline.conf 复制到 /etc/logstash/conf.d 并使用 sudo service logstash start 启动服务。
logstash 用户只有一组logstash 和adm。我还要补充一点,我们只使用上次运行元数据中的时间戳,我们在 SQL 查询的 where 子句中使用 :sql_last_value。
问题:
- 为什么最后一次运行的元数据文件的初始创建归根用户所有?我们可以配置这个吗?
- 为什么我们的服务使用logstash 用户而不是root? (我是新手)
- 我们知道我们可以通过更改所有者来解决此问题,但是否有更好的解决方案来解决此问题?
对不起,如果信息到处都是。我对logstash和所有这些都是新手。如果有帮助,我相信我们正在使用 Logstash 5.4.1。
【问题讨论】:
标签: jdbc logstash logstash-configuration logstash-jdbc