For CPU stat MRTG uses perl script /usr/lib/mrtg2/helpers/cpuinfo.pl, which calls command "sar": `sar -u 1 10 | grep Average`. But sar's output is defined by LOCALE -- f.e. russian, and filter "|grep Average" shows NOTHING, because sar says "Среднее"... Temporary solution: in mrtg.conf I wrote in mrtg.cfg `LANG=C /usr/lib/mrtg2/helpers/cpuinfo.pl localhost linux` (but maybe another commands will have the same behaviour). Steps to Reproduce: 1. sudo /usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/mrtg.cfg 2. 3. Actual Results: WARNING: Problem with External get '/usr/lib/mrtg2/helpers/cpuinfo.pl localhost linux': Expected a Number for 'in' but got '' WARNING: Problem with Externale get '/usr/lib/mrtg2/helpers/cpuinfo.pl localhost linux': Expected a Number for 'out' but got '' ERROR: Target[machine][_IN_] ' $target->[0]{$mode} ' did not eval into defined data ERROR: Target[machine][_OUT_] ' $target->[0]{$mode} ' did not eval into defined data Expected Results: silent end
Есть какие-нибудь возражения против того, чтобы считать приведённый "Temporary solution" (с заменой LANG=C на LANG=POSIX) способом перманентного исправления этой ошибки? А то у меня прямо сходу есть не один, по-настоящему временный, способ: 1) $ LANG=C sudo /usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/mrtg.cfg 2) $ sudo su - -c '/usr/bin/mrtg --user mrtg --group mrtg /etc/mrtg/mrtg.cfg' Это известное свойство sudo - сохранять переменные окружения пользователя, запускающего sudo. Например, запуск 'sudo /etc/init.d/httpd restart' и последующий анализ переменных окружения apache вас очень сильно и неприятно удивит. Так что предлагаемое исправление скорее отодвинет (малоприятное) знакомство пользователя с sudo. Я сам уже ходил по граблям 'sudo bash', 'sudo mc', пока не открыл для себя 'su -' и перманентный способ запуска программ через sudo в окружении root, а не пользователя, запустившего sudo: $ cat ~/bin/sudo- #!/bin/sh sudo su - -c "$*"
Сделаю исправление вместе со следующим релизом mrtg.
Fixed in 2.13.2-alt1.