Estou tendo problemas para obter um plugin definido que é um arquivo em lote para ser executado com o Munin-node-win32 (1.6.1).
De acordo com o readme , ele é capaz de integrar plugins externos definidos no [ExternalPlugin]
seção:
* External Plugin:
* A plugin that supports external plugins in the style of munin-node.
* Configuration in [ExternalPlugin] section. Just add an entry with the
path to the program to run, It doesn't matter what the name of the
name=value pair is.
* The output of the external program should be similar to the following,
* Note: add quotes (") around the value if it has spaces! ::
>disk_free.py name
drive_free
>disk_free.py
drive_free_c.value 40.3635149113
.
>disk_free.py config
graph_title Filesystem free (in %)
graph_category disk
graph_info This graph shows the amount of free space on each disk.
graph_args --upper-limit 100 -l 0
graph_vlabel %
drive_free_c.label C:
.
Eu defini o plugin da seguinte forma:
[ExternalPlugin]
; For External Plugins just add an entry with the path to the program to run
; It doesn't matter what the name of the name=value pair is
rdsessions="C:\Program Files\Monitoring-Scripts\munin-rdsessions.bat"
E o arquivo em lote aparentemente está retornando a saída conforme exigido pelos documentos:
C:\Program Files\Monitoring-Scripts>.\munin-rdsessions.bat name
rdsessions
C:\Program Files\Monitoring-Scripts>.\munin-rdsessions.bat
total.value "6.000000"
active.value "1.000000"
.
C:\Program Files\Monitoring-Scripts>.\munin-rdsessions.bat config
graph_title Remote Desktop Sessions
graph_category system
graph_args --upper-limit 15 -l 0 -r
graph_vlabel Sessions
graph_order total active
total.label Total sessions
active.label Active sessions
.
C:\Program Files\Monitoring-Scripts>
Mas o nó Munin não está listando "rdsessions" como um plugin disponível na consulta:
$ telnet rdsh-02.example.com 4949
Trying 192.168.21.85...
Connected to rdsh-02.example.com.
Escape character is '^]'.
# munin node at rdsh-02
list
df memory processes network cpu hdd
Até agora, encontrei um relatório de erros para o Munin-node-win32 sobre .cmd
s como plug-ins externos com respostas sugerindo que os pontos de finalização eram cruciais para a funcionalidade do plug-in e revelando que várias pessoas tiveram problemas com a integração de plug-ins externos.
Com base nisso, configurei o arquivo em lote para gravar a saída em um arquivo temporário antes de gravá-lo no stdout, para poder verificar caracteres não imprimíveis, espaços em branco e novas linhas. Mas tudo parecia como provavelmente deveria. Eu também tentei remover novas linhas para a última linha na saída usando o set / p hack , sem sucesso - o plugin nunca apareceu na lista. Eu reiniciei o serviço Munin toda vez que fiz alterações no arquivo em lote.
Então, o que há de errado com o Munin-node-win32 de que ele não gosta do meu lote?
Lista de lotes:
@echo off
set OUTFILE=%TEMP%\munin-rdsessions.output
if "%1" == "config" goto config
if "%1" == "name" (echo rdsessions && goto end)
for /F "usebackq delims=, tokens=2,3,4" %%a IN ('typeperf -sc 1 "Terminaldienste\Sitzungen insgesamt" "Terminaldienste\Aktive Sitzungen" ^| find /V "(PDH-CSV"') do (
echo total.value %%a>%OUTFILE%
echo active.value %%b>>%OUTFILE%
echo .>>%OUTFILE%
)
type %OUTFILE%
goto end
:config
type "%~dpn0.conf"
goto end
:end