2015年1月26日月曜日

[CentOS 7]zabbix-agentがsystemctlコマンドで、止まらなくてハマった!


なのまるです。
CentOS7のサーバーをセットアップしていたらハマったので、メモです!


もくじ



状況

/var/log/zabbix/zabbix_agentd.log にこんなログが出ていて、プロセスが止まらない
1
2
3
4
5
6
zabbix_agentd [20982]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable
zabbix_agentd [29317]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable
zabbix_agentd [12198]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable
zabbix_agentd [17390]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable
zabbix_agentd [27464]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable
zabbix_agentd [27564]: Is this process already running? Could not lock PID file [/tmp/zabbix_agentd.pid]: [11] Resource temporarily unavailable


調査

原因がわからないし、「/tmp/zabbix_agentd.pid」も出来ている・・・。何かがおかしい。他のサーバーから持ってきたconfを使っているからか?

https://github.com/zabbix/zabbix/blob/trunk/src/zabbix_agent/zabbix_agentd.c、Cのソースコード読めないけど見てみたら、「configのPidFileがnullだったら"/tmp/zabbix_agentd.pid"にする」みたいなこと書いてある。

CentOS7で?なのか自分の環境だけでなのかわからないが、「/tmp」の挙動がおかしいらしい・・・
ちなみにこの環境はSELinuxが無効になっていた。


/usr/lib/systemd/system/zabbix-agent.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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=always
PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=process
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
 
~略~

zabbix-agent.serviceには、こんな風に書かれているけどどうやら読んでないらしい・・・


デフォルトの/etc/zabbix/zabbix_agentd.confの中には指定してある
1
2
3
4
5
6
7
8
### Option: PidFile
#       Name of PID file.
#
# Mandatory: no
# Default:
# PidFile=/tmp/zabbix_agentd.pid
 
PidFile=/var/run/zabbix/zabbix_agentd.pid
けど、今回はほかのサーバーからコピーしたものを使用して「PidFile」は指定していなかった。。。

まとめ


  • CentOS7に他のサーバーから持ってきた、confを適用するときは十分に気をつけなくてはいけない!
  • そもそも、「/usr/lib/systemd/system/zabbix-agent.service」に書いてある意味って何?
    書いてあるなら読んで!って思ったけど、Cのコード修正方法わからないからpull req出せない・・・orz
  • CentOS7で「/tmp」の扱い変わったの??
何回かやっているうちに、「PidFile」指定なくても止まるようになったりする・・・よくわかんない!w

共有

Clip to Evernote
0follow