rsyslog が udp を受信しなくなった

うっかりうどんワールド1)したら、他のサーバーやルーターから送られてくる udp の syslog を一切受信しなくなった模様…

# emerge -pv rsyslog

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] app-admin/rsyslog-8.24.0-r2::gentoo  USE="gcrypt mysql snmp ssl uuid -dbi -debug -doc -elasticsearch -grok -jemalloc -kafka -kerberos (-libressl) -mongodb -normalize -omhttpfs -omudpspoof -postgres -rabbitmq -redis -relp -rfc3195 -rfc5424hmac -systemd {-test} -usertools -zeromq" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

うちの環境では、全てのサーバーの syslog を1箇所に集約して、mysql に突っ込んでます。で、この集約ホスト自身のログだけはちゃんと mysql に書き込まれているので、ommysql.o の挙動には問題がない模様。

あと、送信元として rsyslog を使っていないルーターのログも出力が停止しているので、送信側の rsyslog も関係がない模様。

とりあえず色々見てみる

# ss -ua | grep -e 'syslog' -e 'Recv'
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port   
UNCONN     213440 0      172.22.16.8:syslog                   *:*               

…… Recv-Q2) おかしいですよねこれ。

gentoo の package 情報は…… 2017.04.04 現在は更新されていませんね。orz

前のバージョンの ebuild と、とりあえず USE フラグを比較してみます。

# grep '^IUSE' rsyslog-8.19.0.ebuild
IUSE="dbi debug doc elasticsearch +gcrypt grok jemalloc kafka kerberos libressl mongodb mysql normalize omhttpfs"
IUSE+=" omudpspoof postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools +uuid zeromq"
# grep '^IUSE' rsyslog-8.24.0-r2.ebuild
IUSE="dbi debug doc elasticsearch +gcrypt grok jemalloc kafka kerberos libressl mongodb mysql normalize omhttpfs"
IUSE+=" omudpspoof postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools +uuid zeromq"

ん~~~~変わってないです……w

ちょっと戻してみよう

よくわからないので、とりあえず更新前のバージョンに戻してみます。基本にして最強の切り分けですね。

# emerge -av =app-admin/rsyslog-8.19.0

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     UD ] app-admin/rsyslog-8.19.0::gentoo [8.24.0-r2::gentoo] USE="gcrypt mysql snmp ssl uuid -dbi -debug -doc -elasticsearch -grok -jemalloc -kafka -kerberos (-libressl) -mongodb -normalize -omhttpfs -omudpspoof -postgres -rabbitmq -redis -relp -rfc3195 -rfc5424hmac -systemd {-test} -usertools -zeromq" 0 KiB

Total: 1 package (1 downgrade), Size of downloads: 0 KiB

Would you like to merge these packages? [Yes/No] y

で。

# /etc/init.d/rsyslog restart
 # /etc/init.d/rsyslog restart
 * Caching service dependencies ...                                       [ ok ]
 * Executing: /lib64/rc/sh/openrc-run.sh /lib64/rc/sh/openrc-run.sh /etc/init.d/rsyslog stop
 * Checking rsyslogd's configuration ...                                  [ ok ]
 * Stopping rsyslog ...
 * Will stop /usr/sbin/rsyslogd
 * Will stop PID in pidfile `/run/rsyslogd.pid'
 * Will stop processes of `/usr/sbin/rsyslogd'
 * Sending signal 15 to PID 2986 ...                                      [ ok ]
 * Sending signal 0 to PID 2986 ...                                       [ ok ]
 * Executing: /lib64/rc/sh/openrc-run.sh /lib64/rc/sh/openrc-run.sh /etc/init.d/lvm start
 * Setting up the Logical Volume Manager ...
  WARNING: Device for PV 0yjmj1-fAsX-5wYP-1nn1-3ck0-nHVJ-pHFGwm not found or rejected by a filter.
  WARNING: Device for PV lGYvY6-pjJf-GRyz-a6IU-2T3h-HIb4-hsfQyt not found or rejected by a filter.

 ~ WARNING だばぁぁ ~

 * Failed to setup the LVM                                                [ !! ]
 * ERROR: lvm failed to start
 * Executing: /lib64/rc/sh/openrc-run.sh /lib64/rc/sh/openrc-run.sh /etc/init.d/rsyslog start
 * Starting rsyslog ...
 * start-stop-daemon: fopen `/run/rsyslogd.pid': No such file or directory
 * Detaching to start `/usr/sbin/rsyslogd' ...
 *   Sending signal 0 to PID 904 ...

……はい? LVM?

え~と……とりあえず何事もなかったかのように rsyslog は正常稼働を開始しました。ちゃんと全ホストからの syslog が出力されてます。

# ss -ua | grep -e 'Recv' -e 'syslog'
State      Recv-Q Send-Q Local Address:Port                 Peer Address:Port   
UNCONN     0      0      ip.addr.of.host:syslog             *:*

きれいに捌けてますね…… syslog は。

lvm がなんかおかしいのは、確かに syslog と同時にうどんワールド3)に入ってきていたので、別件でしょう。ちょっと portage の summary.log を見た感じでは、とりあえず kernel の config を見直すところから始める必要がありそうです。

……ん~と、この記事のオチとしては、とりあえず rsyslog の 8.24 系はうちの環境ではうまく動かないようなのでマスクします。

vi /etc/portage/package.mask/rsyslog

>=app-admin/rsyslog-8.24

で、マスクされてることを確認します。

 # emerge -pv rsyslog

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] app-admin/rsyslog-8.19.0::gentoo  USE="gcrypt mysql snmp ssl uuid -dbi -debug -doc -elasticsearch -grok -jemalloc -kafka -kerberos (-libressl) -mongodb -normalize -omhttpfs -omudpspoof -postgres -rabbitmq -redis -relp -rfc3195 -rfc5424hmac -systemd {-test} -usertools -zeromq" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

(;`・ω・´)b オケ!

……もにょるオチですねぇ。

つづき: rsyslog が udp を受信しなくなった その2

lvm のオチと解決: lvm が warning やら fatal やらどばーっと

1)
emerge -uDN world
2)
man netstat: “Established: The count of bytes not copied by the user program connected to this socket. Listening: Since Kernel 2.6.18 this column contains the current syn backlog.” …… rsyslog が受け付けなかったバイト数 ……と読めばいいのかな。
3)
emerge -uDN world
https://manimani.cc/lib/plugins/linkback/exe/trackback.php/blog:2017:20170405193917_rsyslog_receive_udp_issue