我设置了一个 Munin 主节点,用于监控不同类型的 Unix 机器。我严格按照说明操作,发现虽然监控所有 Linux 节点都运行正常,但我无法从 FreeBSD 机器获得任何有意义的输出。
所有节点都设置了一个运行的 munin-node 守护程序,并munin-async
在 Linux 节点和munin
FreeBSD 节点上设置了一个用户。用户设置如下,以允许 SSH 连接:
# /var/munin/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,no-user-rc,from="1.2.3.4",command="/usr/local/share/munin/munin-async --spoolfetch" ssh-ed25519 AAAAC3Nza[...]
通过 SSH 手动连接按预期工作,直接进入munin-async
助手。
PTY allocation request failed on channel 0
# munin node at example.home.lan
list
cpu df fail2ban if_bge0 if_bge1 if_bridge0 if_errcoll_bge0 if_errcoll_bge1 if_errcoll_bridge0 if_packets_bge0 if_packets_bge1 if_packets_bridge0 intr_cpu iostat ip_drops ip_forwarding ip_host ipinput load lpstat memory netirq_bge0 netisr_arp netisr_ether netisr_igmp netisr_ip netisr_ip6 netisr_rtsock netmem_clusters netmem_mbufs netmem_sendfile netstat ntp_kernel_err ntp_kernel_pll_freq ntp_kernel_pll_off ntp_offset ntp_states open_files pf_counters pf_source pf_source_act pf_state pf_state_act sendmail_mailqueue sendmail_mailstats sendmail_mailtraffic swap systat tcpstates udp_errors udp_traffic uptime users
通过运行spoolfetch 0
,我可以通过这种方式获取数据。
但是,当通过运行时munin-cron --debug
,出现以下异常:
2017/07/23 15:14:05 [INFO] example.home.lan/ssh://[email protected]:4949 didn't send any data for spoolfetch. Ignoring it.
2017/07/23 15:14:05 [INFO] No spoofetch data for example.home.lan/ssh://example.home.lan:4949
2017/07/23 15:14:05 [DEBUG] Writing state for home.lan-example.home.lan in /var/munin/state-home.lan-example.home.lan.storable
2017/07/23 15:14:05 [DEBUG] about to write '/var/munin/state-home.lan-example.home.lan.storable'
2017/07/23 15:14:05 [ERROR] Munin::Master::UpdateWorker<home.lan;example.home.lan> failed to connect to node
2017/07/23 15:14:05 [DEBUG] Exit status 20 for worker Munin::Master::UpdateWorker<home.lan;example.home.lan>
2017/07/23 15:14:06 [DEBUG] In exception handler for failed worker home.lan;example.home.lan
然而,图表是创建的,而所有值都是用 输出的nan
。
有人可以指出我这里出了什么问题吗?
答案1
我自己找到了解决方案。由于munin-asyncd
守护进程定义了 的假脱机目录/var/spool/munin/async
,因此需要在 中的命令中指定它authorized_keys
:
/usr/local/share/munin/munin-async --spooldir /var/spool/munin/async --spoolfetch
任何地方都没有以令人满意的方式记录这一点,必须从默认位置推断出来。希望这能帮助一些可怜的人寻找这个问题。