管理者権限でのzabbix-agent起動
こんにちは、ytakamuraです。
今回は管理者権限でのzabbix-agent 起動方法について書いていきます。
zabbix-agent は弊社で使用している監視サービスになるのですが、
こちらを管理者権限で起動するのに以前苦戦したため備忘もかねて紹介します。
※今回紹介するのはバージョン4.0.37での方法となります。
起動・設定方法
zabbix-agent を初期設定のまま起動した場合、下記のように実行ユーザーはzabbixとなります。
# ps aux | grep [z]abbix ==================================================================================== zabbix 16838 0.0 0.1 78860 1268 ? S 01:31 0:00 /usr/sbin/zabbix_agentd -c etc/zabbix/zabbix_agentd.conf zabbix 16839 0.0 0.1 78860 1332 ? S 01:31 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 16840 0.0 0.1 78860 1824 ? S 01:31 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 16841 0.0 0.1 78860 1824 ? S 01:31 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 16842 0.0 0.1 78860 1824 ? S 01:31 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 16843 0.0 0.2 78860 2220 ? S 01:31 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] ====================================================================================
リソース監視や死活監視等、通常の監視であればこの状態で問題ありません。
問題となるのは/var/log/messages 等、管理者権限でないと閲覧できないログを監視したい場合です。
/var/log/messages 等 現在の実行ユーザーであるzabbix では閲覧できないため、
この状態では監視しようとしても権限不足で監視できません。
そこで必要になるのが今回紹介する管理者権限での起動です。
管理者権限でzabbix-agent を起動してあげれば、権限不足で監視できなかったログも監視が可能となります。
設定方法
/etc/zabbix/zabbix_agentd.conf に「AllowRoot=1」を追記します。
どこに追記しても問題ないですが、デフォルトの設定がコメントアウトで記載されているので、
その下が分かりやすくていいと思います。
# vi /etc/zabbix/zabbix_agentd.conf # cat /etc/zabbix/zabbix_agentd.conf ==================================================================================== ~略~ # AllowRoot=0 AllowRoot=1 ←この1行を追記 ~略~ ====================================================================================
古いバージョンでは上記設定のみで変わったのですが、現在のバージョンでは追加で設定が必要になります。
ここで以前の私はなんで管理者権限で起動しないのか分からず苦戦しました。
現在のバージョンでは下記ファイルに起動ユーザーが明示的に記載されています。
そのため上記 「AllowRoot=1」 の設定のみでは管理者権限で起動してくれませんでした。
# cat /usr/lib/systemd/system/zabbix-agent.service ==================================================================================== [Unit] Description=Zabbix Agent After=syslog.target After=network.target [Service] Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf" EnvironmentFile=-/etc/sysconfig/zabbix-agent Type=forking Restart=on-failure PIDFile=/run/zabbix/zabbix_agentd.pid KillMode=control-group ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s User=zabbix ←起動ユーザー指定 Group=zabbix ←起動グループ指定 [Install] WantedBy=multi-user.target ====================================================================================
こちらの設定をコメントアウトすることで管理者権限で起動してくれるようになります。
# vi /usr/lib/systemd/system/zabbix-agent.service # cat /usr/lib/systemd/system/zabbix-agent.service ==================================================================================== [Unit] Description=Zabbix Agent After=syslog.target After=network.target [Service] Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf" EnvironmentFile=-/etc/sysconfig/zabbix-agent Type=forking Restart=on-failure PIDFile=/run/zabbix/zabbix_agentd.pid KillMode=control-group ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s #User=zabbix ←コメントアウト #Group=zabbix ←コメントアウト [Install] WantedBy=multi-user.target ====================================================================================
下記コマンドで反映します。
# systemctl daemon-reload # systemctl restart zabbix-agent
実行ユーザーを見てみると、設定前まではzabbix だったのがroot へと変わりました。
# ps aux | grep [z]abbix ==================================================================================== root 17131 0.0 0.1 78860 1260 ? S 01:57 0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf root 17132 0.0 0.1 78860 1316 ? S 01:57 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] root 17133 0.0 0.1 78860 1816 ? S 01:57 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] root 17134 0.0 0.1 78860 1816 ? S 01:57 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] root 17135 0.0 0.1 78860 1816 ? S 01:57 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] root 17136 0.0 0.2 78860 2212 ? S 01:57 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] ====================================================================================
これで /var/log/messages 等の管理者権限でないと閲覧できないログも監視可能となります。
今回紹介しました方法は上部にも記載しました通りバージョン4.0.37での方法となります。
私自身が苦戦したように、バージョンが変わった場合は設定方法が異なる可能性もありますのでご注意ください。
また、管理者権限で起動する場合のみの話ではないですが、管理者権限でzabbix-agent を起動する場合は
より一層セキュリティに注意が必要です。
必要な場合のみ、しっかりセキュリティに注意したうえで設定する必要があります。
それではまた。