Zabbix агент не может читать /var/log/messages
Поэтому я пытаюсь отслеживать журналы виртуальной машины, на которой запущен Centos 7. В частности, проблема заключается в /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
1 ответ
Это называется SELinux.
К сожалению, политика SELinux для агента Zabbix не разработана (пока), и почти все, что вы захотите отслеживать, будет отклонено. Я лично установил тип агента Zabbix для разрешения этой проблемы. Это позволяет агенту Zabbix по существу обходить SELinux, в то время как он все еще применяется ко всему остальному в системе.
semanage permissive -a zabbix_agent_t
Если вы предпочитаете никоим образом не отключать SELinux:
Вы можете проверить, является ли это SELinux, запустив
audit2allow -a
и проверьте, есть ли какой-либо вывод, включающий Zabbix. Также вы можете просто временно установить разрешающий режим, чтобы проверить блокировку:
sudo setenforce 0
- Проверьте, может ли zabbix агент выполнять свои функции
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, и она является постоянной, поэтому не нужно беспокоиться о перезагрузке политики отмены.