Я не могу собрать некоторые написанные мной пользовательские графики. Я знаю, что агрегирование работает, потому что я могу агрегировать плагины по умолчанию, но я не уверен, что не так с моим.
munin.conf:
[myapp;web-servers;0-1]
address 1.2.3.4
use_node_name yes
[myapp;web-servers;0-2]
address 5.6.7.8
use_node_name yes
[myapp;web-servers;Aggregated]
update no
#does not work:
node_aggregate.graph_args --base 1000 -l 0
node_aggregate.graph_title Aggregated connects
node_aggregate.conns.label conns
node_aggregate.conns.sum myapp;web-servers;0-1:nodejs_numberOfConnects.conns myapp;web-servers;0-2:nodejs_numberOfConnects.conns
#works:
node_aggregate.graph_title Aggregated cpu
node_aggregate.cpu.label cpu.user
node_aggregate.cpu.sum myapp;web-servers;0-1:cpu.user myapp;web-servers;0-2:cpu.user
Мои плагины выглядят так:
if [[ "$PARAM" == "numberOfConnects" ]]; then
echo "graph_title Active Connects";
echo "graph_info Active Connects";
echo "graph_vlabel Connections";
echo "$PARAM.label conns";
echo "$PARAM.type GAUGE";
echo "$PARAM.colour 0927EB"
exit 0;
elif ...
fi
echo $PARAM.value 15
В целях тестирования я могу жестко запрограммировать " $ PARAM.value 15 ". Затем я могу выполнить
munin-run --servicedir / etc / munin / plugins nodejs_numberOfConnects
, который вернет numberOfConnects.value 15
И я получаю следующую ошибку:
==> /var/log/munin/munin-graph.log <==
2016/03/15 13:57:01 [ERROR] filename is empty for $VAR1 = {
'#%#name' => 'z1_0',
'cdef' => 'z1_0,UN,0,z1_0,IF',
'graph' => 'no',
'label' => 'z1_0'
};
, myapp;web-servers;0-1:nodejs_numberOfConnects.conns
2016/03/15 13:57:01 [ERROR] filename is empty for $VAR1 = {
'#%#name' => 'z1_1',
'cdef' => 'z1_1,UN,0,z1_1,IF,z1_0,ADDNAN',
'colour' => undef,
'draw' => undef,
'graph' => 'yes',
'label' => 'conns'
};
, myapp;web-servers;0-2:nodejs_numberOfConnects.conns
Вы пытаетесь передать conns в качестве экспортированного значения, но на самом деле это numberOfConnects
node_aggregate.nodejs_numberOfConnects.label conns(or whatever)
node_aggregate.nodejs_numberOfConnects.sum \
myapp;web-servers;0-1:nodejs_numberOfConnects.numberOfConnects \
myapp;web-servers;0-2:nodejs_numberOfConnects.numberOfConnects
После долгой отладки я понял, что неправильно использовал имя метки вместо имени значения .
node_aggregate.conns.sum myapp;web-servers;0-1:nodejs_numberOfConnects.conns myapp;web-servers;0-2:nodejs_numberOfConnects.conns
должен быть
node_aggregate.conns.sum myapp;web-servers;0-1:nodejs_numberOfConnects.numberOfConnects myapp;web-servers;0-2:nodejs_numberOfConnects.numberOfConnects
из-за
if [[ "$PARAM" == "numberOfConnects" ]]; then
[...]
echo $PARAM.value 15
Другими словами, в моем случае строка сервера равна:
$ randomname1.arbitraryname2.sum $ clientname; $ hostgroup; $ hostname: $ pluginname. $ Valuename
Меня также сильно выбросил пример cpu
, в котором используется следующий синтаксис:
myapp; веб-серверы; 0-1: cpu.user
, но это потому, что его значение имя фактически совпадает с названием метки !!