yum安裝logstash 不生效


問題描述

根據logstash的配置方法寫了一個配置文件,並放入/etc/logstash/conf.d/目錄下,然后我們運行logstash

# service logstash start
Logstash started.
# service logstash status Redirecting to
/bin/systemctl status logstash.service ● logstash.service - logstash Loaded: loaded (/etc/systemd/system/logstash.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2018-04-19 16:51:23 CST; 22h ago Main PID: 2772 (java)
 
        

程序已經啟動,啟動后,ES並沒有收集到預期的日志信息,
查看/var/log/logstash/logstash.log只有Logstash啟動信息,沒有日志相關的信息。 


然后停止logstash使用,logstash -f /etc/logstash/conf.d 方式再次啟動logstash進行測試,
結果ES可以收到相關的日志 
也就是說以服務的方式啟動logstash,/etc/logstash/conf.d下的配置文件不生效,使用-f參數指定配置文件是生效的!!

 

問題分析過程

1. 首先查看了使用服務方式啟動時的進程參數

通過與手動啟動的方式對比並沒有什么區別,但結果卻不同,於是我們追溯使用服務方式啟動時的具體環境參數和命令

2. 分析/etc/init.d/logstash的啟動過程

通過第1點的分析,我們追溯到服務的啟動環境可能是導致結果不一樣的原因,
而在CentOS7中的啟動是由/etc/systemd/system/logstash.service控制的,
所以我們分析該腳本中的啟動代碼:

打開啟動文件

[Unit] Description=logstash [Service] Type=simple User=logstash Group=logstash # Load env vars from /etc/default/ and /etc/sysconfig/ if they exist. # Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward. EnvironmentFile=-/etc/default/logstash EnvironmentFile=-/etc/sysconfig/logstash ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" Restart=always WorkingDirectory=/ Nice=19 LimitNOFILE=16384 [Install] WantedBy=multi-user.target

 

我們使用手動命令直接在bash中以root用戶執行上述命令同樣是有效的,Logstash正確工作,
所以我們幾乎確認是由於logstash的默認執行用戶(logstash)權限不足導致的。

 

3. 修改文件屬主和權限方法

1.將配置文件權限修改為777
# chmod 777 /etc/logstash/conf.d/logstash.conf

2.將修改屬主為logstash

1、2測試結果  都失敗

 

4. 修改啟動文件——直接以root用戶運行(成功)

logstash是以logstash用戶啟動的

 

我們將其修改為root,

修改前

[Unit]
Description=logstash

[Service]
Type=simple
User=logstash Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.

修改后

[Unit]
Description=logstash

[Service]
Type=simple
User=root
Group=root
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.

 

 重新加載 systemctl 服務

# systemctl daemon-reload

重啟 logstash

# service logstash restart 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM