mackerel-agent を root 以外で動かす
執筆時の mackerel-agent
の version は、
mackerel-agent version 0.25.0 (rev 0ce0115) [linux 386 go1.4.2]
です。
RHEL 系の Linux で mackerel-agent
を root
以外で動かす方法です。
mackerel-agent
を動かすユーザは mackerel
とします。
設定
以下のコマンドを実行してユーザとディレクトリを作成します。
useradd -r mackerel mkdir /var/log/mackerel-agent /var/run/mackerel-agent chown mackerel: /var/log/mackerel-agent /var/run/mackerel-agent
/etc/init.d/mackerel-agent
を以下のように変更します。
24,25c24,25 < LOGFILE=${LOGILE:="/var/log/$prog.log"} < PIDFILE=${PIDFILE:="/var/run/$prog.pid"} --- > LOGFILE=${LOGILE:="/var/log/mackerel-agent/$prog.log"} > PIDFILE=${PIDFILE:="/var/run/mackerel-agent/$prog.pid"} 26a27 > USER="mackerel" 41c42 < $BIN ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --pidfile=$PIDFILE --root=$ROOT $OTHER_OPTS >>$LOGFILE 2>&1 & --- > runuser -c "$BIN ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --pidfile=$PIDFILE --root=$ROOT $OTHER_OPTS >>$LOGFILE 2>&1" $USER &
変更したら、 service mackerel-agent restart
で mackerel
ユーザで動作させることができます。
解説
軽く何をしているか書くと、
mackerel
ユーザを作成mackerel
ユーザで pid と log を書き込めるようにしrunuser
でmackerel
ユーザでmackerel-agent
を実行
しています。
runuser
の代わりに su
でも動作すると思います。
runuser
は入っていない環境もあるようですので、適宜使い分けると良いです。
まとめ
mackerel-agent
を root
以外で動かす方法を紹介しました。
CPU や Memory Usage のメトリクス収集は問題なく動作していましたが、
正常に動作しないことも考えられますのでご注意ください。
RHEL 以外のディストリビューションについても、
pid と log を書き込めるようにして、 runuser
(su
) 経由で実行すれば動作すると思います
(useradd
が adduser
などの細かい違いもあるかもしれません)。
他には、systemd
や supervisord
で起動するという方法もありそうです。