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 で起動するという方法もありそうです。