CentOS7で、snmpdを設定して起動しようとしたら起動しなかった。 ちなみに環境は:
# cat /etc/redhat-release
---ここから---
CentOS Linux release 7.2.1511 (Core)
---ここまで---
# rpm -qa | grep net-snmp
---ここから---
net-snmp-utils-5.7.2-24.el7_2.1.x86_64
net-snmp-5.7.2-24.el7_2.1.x86_64
net-snmp-libs-5.7.2-24.el7_2.1.x86_64
net-snmp-agent-libs-5.7.2-24.el7_2.1.x86_64
---ここまで---
snmpdをsystemctlで起動使用した時のメッセージ:
# systemctl start snmpd
---ここから---
Job for snmpd.service failed because the control process exited with error code. See "systemctl status snmpd.service" and "journalctl -xe" for details.
---ここまで---
# systemctl status snmpd
---ここから---
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 金 2017-04-07 13:43:28 JST; 1min 46s ago
Process: 11985 ExecStart=/usr/sbin/snmpd $OPTIONS -f (code=exited, status=1/FAILURE)
Main PID: 11985 (code=exited, status=1/FAILURE)
4月 07 13:43:28 centos98 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
4月 07 13:43:28 centos98 snmpd[11985]: getaddrinfo: Lf Name or service not known
4月 07 13:43:28 centos98 snmpd[11985]: getaddrinfo("Lf", NULL, ...): Name or service not known
4月 07 13:43:28 centos98 snmpd[11985]: Error opening specified endpoint "Lf"
4月 07 13:43:28 centos98 snmpd[11985]: Server Exiting with code 1
4月 07 13:43:28 centos98 systemd[1]: snmpd.service: main process exited, code=exited, status=1/FAILURE
4月 07 13:43:28 centos98 systemd[1]: Failed to start Simple Network Management Protocol (SNMP) Daemon..
4月 07 13:43:28 centos98 systemd[1]: Unit snmpd.service entered failed state.
4月 07 13:43:28 centos98 systemd[1]: snmpd.service failed.
---ここまで---
「Lf」がどうのとか...よく分からない。 同じCentOS7で手元のVMの環境(CentOS 7.3.1611)では起動している。 同じように手動で起動するか? と思って、「ps aux | grep [s]nmpd」としてみると、次のようなオプションで起動しているらしい。
# ps aux | grep [s]nmpd
---ここから---
root 11840 0.0 0.2 223028 10732 ? Ss 13:32 0:00 /usr/sbin/snmpd -LS 5 d -Lf /dev/null -p /var/run/snmpd.pid -f
---ここまで---
では、と、起動しなかった方で全く同じように実行してみたら、ちゃんと起動した。
# /usr/sbin/snmpd -LS 5 d -Lf /dev/null -p /var/run/snmpd.pid -f &
---ここから---
[1] 12217
---ここまで---
※強制的にkillしておく
# pidof snmpd | xargs kill -s 9
# rm /var/run/snmpd.pid
よく見ると、snmpdにオプションで「-Lf」というのを渡している。 怪しい。 systemctl用の「snmpd.service」を見てみる。
# cat /usr/lib/systemd/system/snmpd.service
---ここから---
[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target
[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
---ここまで---
「/etc/sysconfig/snmpd」を環境ファイルとして読んでるポイので、そちらを見てみる。
# cat /etc/sysconfig/snmpd
---ここから---
# snmpd command line options
# '-f' is implicitly added by snmpd systemd unit file
OPTIONS="-LS 5 d Lf /dev/null -p /var/run/snmpd.pid"
---ここまで---
おうふ...オプションが「Lf」になってる。 ちなみにちゃんと起動した方の同ファイルは
# cat /etc/sysconfig/snmpd
---ここから---
# snmpd command line options
# '-f' is implicitly added by snmpd systemd unit file
# OPTIONS="-LS0-6d"
OPTIONS="-LS 5 d -Lf /dev/null -p /var/run/snmpd.pid"
---ここまで---
こっちはちゃんと「-Lf」になっている。 初期設定時にこのファイル書き換えた時に間違えたのかもしれない... というわけで「/etc/sysconfig/snmpd」を修正して起動。 めでたし。
# systemctl start snmpd
# systemctl status snmpd
---ここから---
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2017-04-07 14:03:07 JST; 6s ago
Main PID: 12567 (snmpd)
CGroup: /system.slice/snmpd.service
└─12567 /usr/sbin/snmpd -LS 5 d -Lf /dev/null -p /var/run/snmpd.pid -f
4月 07 14:03:07 centos98 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
4月 07 14:03:07 centos98 systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
---ここまで---
※ちなみに「-Lf」のオプションは、「log to the specified file」らしい。 /dev/null に捨てずにファイルに残すようにしたほうがいいかな。