- [MUNIN+Ubuntu14.04+nginx] サーバやMySQLの状態を監視する方法
- [Munin] MuninでOpen VZゲストOSのメモリ状態を監視する
- [MUNIN] Pythonプラグインで文字コードエラーが発生する際の解決方法
- [Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法
MUNINプラグインでClickが出すエラー、RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult https://click.palletsprojects.com/en/7.x/python3/ for mitigation steps.
への対応方法です。
結論
/etc/munin/plugin-conf.d/munin-node
に、環境変数の設定を追加する。
[plugin_name.py]
env.LANG C.UTF-8
env.LC_ALL C.UTF-8
現象
MUNINプラグインをPython3.6で開発し、python3.6
コマンドによる動作確認も完了しました。
そこで/etc/munin/plugin
に移し、sudo munin-run
で動かしたところ、下記のようなExceptionが表示されました。
(venv) ➜ project git:(master) ✗ sudo munin-run plugin_name.py config
Traceback (most recent call last):
File "/etc/munin/plugins/plugin_name.py", line 80, in <module>
cmd()
File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/click/core.py", line 696, in main
_verify_python3_env()
File "/usr/local/lib/python3.6/dist-packages/click/_unicodefun.py", line 124, in _verify_python3_env
' mitigation steps.' + extra
RuntimeError: Click will abort further execution because Python 3 was configured to use ASCII as encoding for the environment. Consult https://click.palletsprojects.com/en/7.x/python3/ for mitigation steps.
This system supports the C.UTF-8 locale which is recommended.
You might be able to resolve your issue by exporting the
following environment variables:
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
原因
エラーの表示内容のとおり、環境変数LC_ALL
, LANG
を設定すれば解決すると考えました。
一般ユーザでもrootユーザでも発生しておらず、それらのLANG
はja-JP.UTF-8
に設定しているためです。
sudo munin-run
では実行ユーザがmunin
であるため、LANG
が適切に設定されていないようです。
対応
munin
ユーザの環境変数を設定します。
とはいえ、munin
ユーザにログインしたり、.bashrc
等を触ったりする必要はありません。
Munin Document – Configuringには、以下のように解説されています。
env.<var> <contents>
対象のプラグインが動作する際、環境変数<var>
を<contents>
に設定します。
複数行の記述が可能です。値を””で囲む必要はありません。
なので、下記のように記述すればOKです。
sudo vim /etc/munin/plugin-conf.d/munin-node
[plugin_name.py]
env.LANG C.UTF-8
env.LC_ALL C.UTF-8
この設定をした後、無事エラーが発生しなくなりました。
- [MUNIN+Ubuntu14.04+nginx] サーバやMySQLの状態を監視する方法
- [Munin] MuninでOpen VZゲストOSのメモリ状態を監視する
- [MUNIN] Pythonプラグインで文字コードエラーが発生する際の解決方法
- [Munin] Ubuntu+Nginx+Munin 拡大グラフが表示されないときの対処方法