フラミナル

考え方や調べたことを書き殴ります。IT技術系記事多め

zabbixの外部チェックで「$」がうまく使えない件について

f:id:lirlia:20180817105650p:plain

zabbixの外部チェック(externalcheck)機能を使って、自作のスクリプトで監視を行うことがあると思います。

この時スクリプトにたいして「$マーク」の含まれる引数を渡すとうまく動作しません。

原因

原因はzabbix自体のバグです。こちらのチケットで記載されていますが、zabbixで使用しているCのコードに誤りがあるとのこと。

解消法

解決方法は大きく分けて二つ。

  • Cのコードを修正すること(ただしzabbixの再コンパイルが必要)
  • $を使わないようにすること(スクリプト側で工夫をする)

一応Cコードの修正方法を転記しておきます。

Bug can be fixed by editing line 88 at src/zabbix_server/poller/checks_external.c

変更前

zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " \"%s\"", param_esc);

変更後

checks_external.c
zbx_snprintf_alloc(&cmd, &cmd_alloc, &cmd_offset, " '%s'", param_esc);