Zabbix Agent2でroot権限のファイルなどを監視する場合、以下のようなエラーが発生し監視が出来ません。
そのため、Zabbix Agent2をroot権限で起動しroot権限が必要な操作を実行可能とします。
Cannot open file "/var/log/messages": [13] Permission denied
#1. NG:zabbix_agent2.confでAllowRootを設定する
Zabbix Agent1でroot権限操作を行う際には、zabbix_agent.conf
内のAllowRoot
を1
とすることで、Zabbix Agnetをルート権限で起動することが出来ましたが、Zabbix Agent2ではこのオプションがオミットされているため、旧来通りの対策は出来ません。
zabbix_agent2.conf に AllowRoot=1を追記した場合、zabbix_agent2 プロセスが起動に失敗します。
Dropped parameters | Description |
---|---|
AllowRoot, User | Not supported because daemonization is not supported. |
#2. OK:zabbix_agent2のユニットサービスを変更する
以下を参考に、zabbix_agent2のユニットサービス内のユーザ/グループ指定を変更して対応します。
対象のファイルは/etc/systemd/system/multi-user.target.wants/zabbix-agent2.service
です。
設定変更箇所は[Service]
内のUser
とGroup
です。もともとはUser=zabbix
となっているため、root
に変更します。
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=root
Group=root
[Install]
WantedBy=multi-user.target
[root@cent79-02 ~]# ps -aux | grep zabbix
zabbix 8902 0.1 1.1 509240 21972 ? Ssl 05:40 0:01 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
[root@cent79-02 ~]# systemctl daemon-reload
[root@cent79-02 ~]# systemctl restart zabbix-agent2
[root@cent79-02 ~]# ps -aux | grep zabbix
root 8967 0.5 1.0 508028 19648 ? Ssl 05:58 0:00 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf
ZabbixAgent2がroot
ユーザで起動していることが確認できました。
ZabbixServer側のアイテムステータスも正常になりました。
#後記
今回のエラー原因は/var/log/message
のパーミッションにちなむので、ファイル権限とローテーション権限を修正する方法もあったのですが、汎用性の話となんだか負けた気がするのでこちらの方法で行いました。
#参考