Permissions

Zabbix Agent 無法讀取 /var/log/messages

  • April 8, 2020

所以我試圖監控執行 Centos 7 的 VM 的日誌。特別是出現問題的是 /var/log/messages。我已經更改了文件的組所有權(在 logrotate.conf 中進行了相關更改)並手動更改了已創建的文件。您可以在下面看到它的權限:

[matias@Centos_7_VM ~]$ sudo ls -lh /var/log/messages
-rw-rwx---+ 1 root zabbix 889K jul 25 10:53 /var/log/messages
[matias@Centos_7_VM ~]$ getfacl /var/log/messages
getfacl: Removing leading '/' from absolute path names
# file: var/log/messages
# owner: root
# group: zabbix
user::rw-
user:zabbix:rwx
group::---
mask::rwx
other::---

但即使進行了所有這些更改,zabbix 代理也被拒絕讀取該日誌。是否有其他東西阻止該程序讀取文件?

代理日誌

993:20180725:062459.211 Starting Zabbix Agent [Centos_7_VM]. Zabbix 3.2.11 (revision 76339).
  993:20180725:062459.256 **** Enabled features ****
  993:20180725:062459.257 IPv6 support:          YES
  993:20180725:062459.257 TLS support:           YES
  993:20180725:062459.257 **************************
  993:20180725:062459.257 using configuration file: /etc/zabbix/zabbix_agentd.conf
  993:20180725:062459.303 agent #0 started [main process]
  999:20180725:062459.359 agent #1 started [collector]
 1003:20180725:062459.396 agent #2 started [listener #1]
 1004:20180725:062459.406 agent #3 started [listener #2]
 1005:20180725:062459.413 agent #4 started [listener #3]
 1007:20180725:062459.472 agent #5 started [active checks #1]
 1007:20180725:105103.700 active check "log[/var/log/messages,(?i)error]" is not supported: Cannot open file "/var/log/messages": [13] Permission denied

它被稱為 SELinux。

不幸的是,Zabbix 代理的 SELinux 策略(還)沒有得到很好的開發,幾乎任何你想要監控的東西都會被拒絕。我個人將 Zabbix 代理類型設置為允許解決此問題。這讓 Zabbix 代理基本上可以繞過 SELinux,而它仍然適用於系統上的所有其他內容。

semanage permissive -a zabbix_agent_t

如果您不想以任何方式禁用 SELinux:

您可以通過執行檢查它是否是 SELinux,audit2allow -a並檢查是否有任何包含 Zabbix 的輸出。您也可以簡單地臨時設置許可模式來驗證阻塞:

  1. sudo setenforce 0
  2. 檢查 zabbix 代理是否可以做它的事情
  3. sudo setenforce 1

如果確實是 SELinux 拒絕代理,請嘗試以下操作:

創建一個策略以允許拒絕 Zabbix 的任何內容(作為 root 或 sudo):

grep zabbix /var/log/audit/audit.log | audit2allow -M myzabbix

這會將任何 Zabbix 拒絕通過管道傳輸到 audit2allow 中,這會在您所在的目錄中創建一個策略文件並編譯二進製文件。我通常這樣做是/root/selinux為了保持整潔。

然後執行semodule -i myzabbix.pp

這會將策略載入到 SELinux 中,並且它是永久性的,因此無需擔心重啟會逆轉策略。

引用自:https://serverfault.com/questions/923464