テックブログ

技術ネタ

管理者権限での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 を起動する場合は
より一層セキュリティに注意が必要です。
必要な場合のみ、しっかりセキュリティに注意したうえで設定する必要があります。

それではまた。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください