2020年5月29日金曜日

stackdriver-agent のエラー can not take infinite value に対処する

TL;DR

stackdriver-agentcollectd

write_gcm: can not take infinite value
write_gcm: wg_typed_value_create_from_value_t_inline failed for swap/percent/value! Continuing.

とか言ってたら、以下のように編集して、

vim /etc/stackdriver/collectd.conf
-LoadPlugin swap
-<Plugin "swap">
-  ValuesPercentage true
-</Plugin>
+#LoadPlugin swap
+#<Plugin "swap">
+#  ValuesPercentage true
+#</Plugin>

stackdriver-agent を再起動しましょう。

service stackdriver-agent restart

何か起きたか

GCE 仮想マシンに Stackdriver Agent をインストールして動かし始めたら、以下なエラーが出ていた。

$ journalctl -u stackdriver-agent.service
  ...略...
May 29 05:34:55 myhost collectd[10338]: write_gcm: can not take infinite value
May 29 05:34:55 myhost collectd[10338]: write_gcm: wg_typed_value_create_from_value_t_inline failed for swap/percent/value! Continuing.
May 29 05:34:55 myhost collectd[10338]: write_gcm: can not take infinite value
May 29 05:34:55 myhost collectd[10338]: write_gcm: wg_typed_value_create_from_value_t_inline failed for swap/percent/value! Continuing.
May 29 05:34:55 myhost collectd[10338]: write_gcm: can not take infinite value
May 29 05:34:55 myhost collectd[10338]: write_gcm: wg_typed_value_create_from_value_t_inline failed for swap/percent/value! Continuing.

何が問題だったか

ログを見る限り、 OS に Swap 領域が存在しないにもかかわらず、

$ free
              total        used        free      shared  buff/cache   available
Mem:        7493724     3432032     1684776      360984     2376916     3396824
Swap:             0           0           0

Swap 領域の使用率のメトリクスを計算しようとして、ゼロ除算してるっぽい。

解決策 or 回避策

Swap 領域のモニタリングをしないようにした。

stackdriver-agent が利用する collectd の設定ファイルは以下にある。

vim /etc/stackdriver/collectd.conf

これを、以下のように編集し、

-LoadPlugin swap
-<Plugin "swap">
-  ValuesPercentage true
-</Plugin>
+#LoadPlugin swap
+#<Plugin "swap">
+#  ValuesPercentage true
+#</Plugin>

stackdriver-agent を再起動した。

service stackdriver-agent restart

出なくなった。

完。